我想让多个步进电机同时转动,用L298N驱动器.
我的 idea 是在铣床上使用相对坐标,在进行相对定位计算之前,从输入坐标中分离出x,y,z值.
代码是
def coordinate(inputlist, d):
D = int(d)
l = ast.literal_eval(f"[{inputlist}]")#do not use "eval()" code
lx = [x for x,y,z in l]
ly = [y for x,y,z in l]
lz = [z for x,y,z in l]
x_value(lx, axisx, D)
y_value(ly, axisy, D)
z_value(lz, axisz, D)
def x_value(lx, axisx, D):
delay = D
stepper = axisx
x = lx
xv = []
for f in range(len(x)-1):
bx = x[f+1] - x[f]
xv.append(bx)
print(xv)
for steps in xv:
if (steps >=0):
forword(delay, steps, stepper)
elif (steps <=0):
backward(delay, steps, stepper)
def y_value(ly, axisy, D):
delay = D
stepper = axisy
y = ly
yv = []
for g in range(len(y)-1):
by = y[g+1] - y[g]
yv.append(by)
print(yv)
for steps in yv:
if (steps >=0):
forword(delay, steps, stepper)
elif (steps <=0):
backward(delay, steps, stepper)
def z_value(lz, axisz, D):
delay = D
stepper = axisz
z = lz
zv = []
for h in range(len(z)-1):
bz = z[h+1] - z[h]
zv.append(bz)
print(zv)
for steps in zv:
if (steps >=0):
forword(delay, steps, stepper)
elif (steps <=0):
backward(delay, steps, stepper)
def forword(delay, steps, stepper):
for i in range(steps):
for halfstep in range(8):
for pin in range(4):
GPIO.output(stepper[pin], seq[halfstep][pin])
time.sleep(int(delay) / 10000)
def backward(delay, steps, stepper):
seq.reverse()
for i in range(-int(steps)):
for halfstep in range(8):
for pin in range (4):
GPIO.output(stepper[pin], seq[halfstep][pin])
time.sleep(int(delay) / 10000)
seq.reverse()
try:
while True:
inputlist = input("Coordinate List (Unit is 10um, 1mm = 100 (10um)):")
d = input("speed of stepper(do not less then 7):")
coordinate(inputlist, d)
不管我怎么试,这三个步进电机都是分开转动的.
我想让步进电机同时转动,无论我用坐标形式输入什么值(x1,y1,z1),(x2,y2,z2)......,(xn,yn,zn)