[问题] 步进马达如何归零

楼主: kennykobe (凯尼狗鼻哥)   2017-10-13 10:19:31
目前现在用Raspberry pi控制步进马达来转,不过目前遇到的问题是
4个步进马达转好几百圈之后,每一个步进马达停的位置都不一样
不清楚是因为每一个步进马达买来之后,原始的位置就不同
还是因为程式方面没有做让步进马达归零的动作,目前使用的步进马达是5V步进马达(4相
5线 28BYJ-48-5V)
程式码如下:
def forward( steps ):
for i in range( steps ):
setStep(0, 1, 1, 0)
time.sleep(0.01)
setStep(1, 1, 0, 0)
time.sleep(0.01)
setStep(1, 0, 0, 1)
time.sleep(0.01)
setStep(0, 0, 1, 1)
time.sleep(0.01)
setStep(0, 1, 1, 0)
def backward( steps ):
for i in range( steps ):
setStep(0, 0, 1, 1)
time.sleep(0.01)
setStep(1, 0, 0, 1)
time.sleep(0.01)
setStep(1, 1, 0, 0)
time.sleep(0.01)
setStep(0, 1, 1, 0)
time.sleep(0.01)
setStep(0, 0, 1, 1)
def setStep(w1, w2, w3, w4):
GPIO.output(coil_A_1_pin, w1)
GPIO.output(coil_A_2_pin, w2)
GPIO.output(coil_B_1_pin, w3)
GPIO.output(coil_B_2_pin, w4)
setStep(0, 0, 0, 0)
forward(45)
backward(45)
请各位大大帮忙解惑了,感激不尽!!
作者: wisdom   2017-10-13 13:07:00
归零要有外部传感器,譬如光电开关。你可以先在马达轴心上做标记。转完以后看标记有没有在正确位置。没有的话就是失步。
作者: woodsy (镇神退驾百举待废)   2017-10-13 13:42:00
没办法 一定要靠外部归零 看你用SENSOR 还是机械撞击通常每出去一次 回家一定要归零一次 尤其跑久了附载增加那种走钟的事情会更明显我不太懂你的意思 通常一个位置感应器就好 或者拿个墙壁给他撞 重点是 先让孩子回家因为位置确认是机构问题 你不可能靠程式解
作者: wisdom   2017-10-13 19:27:00
另外你有透过放大电路来驱动马达吗?
作者: airawesu   2017-10-13 19:36:00
没回授值 脉波传送都有可能丢掉了 靠外部传感器才是正道
作者: largesperm (reindeer)   2017-10-13 21:55:00
你自己往前走 1 万步看看 一定不会是一万步需要计步器来帮你计算
作者: OSTW (OverseasTaiwanese)   2017-10-14 03:19:00
如果只有马达,加encoder. 如果是转linear motion,加switch.
作者: lisn0814 (lisn)   2017-10-14 09:06:00
需原点复归
作者: Haoer (火宅之猫)   2017-10-14 15:44:00
动越多,错误越多,所以机器会定时归零归零的时机会,有时很机器启动时,有时是运作一段时间后ex:转向头灯,车子启动时,会左右移到传感点,做归零ex:打印机启动时会左右移到边界,做归零,印多张后也会所以,如何归零?找到零点,将计数器=0
作者: firesula (Over My Dead Body)   2017-10-16 00:13:00
如何知道归零了 就是靠sensor feedback

Links booklink

Contact Us: admin [ a t ] ucptt.com