Exemplo n.º 1
0
def doPath(X_offset=0, Y_offset=0):
	global toolPos_X, toolPos_Y, toolPos_Z, toolPos_F, X_dest, Y_dest, Z_dest, F_dest
	for path in etch_moves :
		toolRefresh = 0
		toolPos_draw(toolPos_X, toolPos_Y, etching=0)
		cy.moveZ(Z_origin_offset+getZoffset(X_dest, Y_dest)+Z_manual_offset+Zlift,F_fastMove) # Raise and move to next point
		X_dest = path[0][0]+X_offset
		Y_dest = path[0][1]+Y_offset
		F_dest = F_fastMove
		print "  Traveling to:", str([X_dest, Y_dest]), "at Z:", Z_manual_offset+Zlift
		cy.moveXY(X_dest, Y_dest, F_dest)
		toolPos_draw(X_dest, Y_dest, etching=0)
		Z_dest = path[0][2]
		if Z_dest > 0:
			F_dest = F_slowMove
		else:
			F_dest = path[0][3] # We set the original speed if it is etching/drill
		cy.moveZ(Z_dest+Z_origin_offset+getZoffset(X_dest, Y_dest)+Z_manual_offset,F_dest)
	#	print "Speed:",F_dest
		print "  Etching at Z:",Z_dest+Z_manual_offset
		toolPos_X = X_dest
		toolPos_Y = Y_dest
		toolPos_Z = Z_dest # Not sure..
		toolPos_F = F_dest
	
	#	print path
	
		for coord in path[1:] :
			X_dest = coord[0]+X_offset
			Y_dest = coord[1]+Y_offset
			Z_dest = coord[2]
			F_dest = coord[3]
		
			distance = (X_dest-toolPos_X)**2+(Y_dest-toolPos_Y)**2
			if distance >= maxDistance :
				splitLongEtchMove(distance)
			if distance < minDistance and (Z_dest-toolPos_Z)**2 < 0.001**2 : # Make sure it is not a Z movement
				print "Ignoring", distance**0.5, "mm segment!"
				continue
			Z_real = Z_dest+Z_origin_offset+getZoffset(X_dest, Y_dest)+Z_manual_offset
			cy.moveXYZ(X_dest, Y_dest, Z_real, F_dest)
	#		print "Coords: Speed:",F_dest
			toolPos_refresh(X_dest, Y_dest, etching=1)
		
			toolPos_X = X_dest
			toolPos_Y = Y_dest
			toolPos_Z = Z_dest
			toolPos_F = F_dest
Exemplo n.º 2
0
def splitLongEtchMove(distance):
	global toolPos_X, toolPos_Y, toolPos_Z, toolPos_F, X_dest, Y_dest, Z_dest, F_dest
	
	X_dest_tmp = toolPos_X
	Y_dest_tmp = toolPos_Y
	Z_dest_tmp = toolPos_Z
	F_dest_tmp = toolPos_Z
	
	#distance = distance**0.5 # [mm]
	N_steps = int((distance/maxDistance)**0.5) # **must be** >= 1
	
	print "Splitting", distance**0.5, "mm segment into", N_steps, "steps"
	
#	print "Orig:", toolPos_X, toolPos_Y, toolPos_Z, "Dest:", X_dest, Y_dest, Z_dest
	
	X_step = (X_dest-toolPos_X)/float(N_steps)
	Y_step = (Y_dest-toolPos_Y)/float(N_steps)
	Z_step = (Z_dest-toolPos_Z)/float(N_steps)
	F_step = (F_dest-toolPos_F)/float(N_steps)
	
	for i in range(N_steps) :
		X_dest_tmp = toolPos_X + X_step
		Y_dest_tmp = toolPos_Y + Y_step
		Z_dest_tmp = toolPos_Z + Z_step
		F_dest_tmp = toolPos_F + F_step
		
		Z_real = Z_dest_tmp+Z_origin_offset+getZoffset(X_dest_tmp, Y_dest_tmp)+Z_manual_offset
		cy.moveXYZ(X_dest_tmp, Y_dest_tmp, Z_real, F_dest_tmp)
		toolPos_refresh(X_dest_tmp, Y_dest_tmp, etching=1)
		
#		print "Move:",X_dest_tmp, Y_dest_tmp, Z_dest_tmp
		
		toolPos_X = X_dest_tmp
		toolPos_Y = Y_dest_tmp
		toolPos_Z = Z_dest_tmp
		toolPos_F = F_dest_tmp
Exemplo n.º 3
0
DEVICE = "/dev/ttyUSB0"
Emulate = 0
# End configuration

# Begin modules
import sys

import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt

sys.path.append("../CycloneHost")
import CycloneHost as cy
# End modules

cy.connect(BAUDRATE, DEVICE, Emulate)

cy.sendCommand("G90\n") # Set absolute positioning

cy.homeZXY() # Home all the axis

# (x,y)
#grid_origin = (0,0)	# Initial point of the grid [mm]
#grid_len = (135,84)	# Distance to probe [mm]
#grid_N = (12,6)	# Number of points
grid_origin = (0,0)	# Initial point of the grid [mm]
grid_len = (80,60)	# Distance to probe [mm]
grid_N = (5,5)	# Number of points (AT LEAST 4 IN EACH DIRECTION, OTHERWISE INTERPOLATION WILL FAIL)

Zlift = 0.5 # mm
Exemplo n.º 4
0
def drawTool(x, y):
	global toolPos_point
	pltSetFig(gcodeviewer)
	toolPos_point, = plt.plot(0, 0, markersize=12, c='g', marker='x')
	pltShowNonBlocking()

F_slowMove = 200 # Move speed [mm/min]
F_fastMove = 700

F_drillMove = 50
F_edgeMove = 25
F_etchMove = 100


cy.connect(BAUDRATE, DEVICE, Emulate)

cy.sendCommand("G90\n") # Set absolute positioning

cy.homeZXY() # Home all the axis

drawTool(10, 20) # Show a marker on the gcode plot


# Move to the origin of the grid
cy.moveXY(x_points[0], y_points[0], F_fastMove)


# Warning: Do not lower too much or you will potentially cause damage!
initial_Z_lowering_distance = -10
cy.moveZrelSafe(initial_Z_lowering_distance,F_slowMove/2) # Move Z towards the PCB (saves some probing time for the first coord)