[問題] 步進馬達如何歸零

作者: 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