目前是因為專題的關係使用跟實驗室借的步進馬達
但用到現在都還搞不清楚步進馬達的型號
目前猜測是某一款3D列印用的二相四線款的
也用了下面的Code嘗試讓他跑起來 都沒辦法
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
control_pins = [7,11,13,15]
for pin in control_pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, 0)
halfstep_seq = [
[1,0,0,0],
[1,1,0,0],
[0,1,0,0],
[0,1,1,0],
[0,0,1,0],
[0,0,1,1],
[0,0,0,1],
[1,0,0,1]
]
for i in range(512):
for halfstep in range(8):
for pin in range(4):
GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
time.sleep(0.001)
GPIO.cleanup()
接線大概像是這樣
也有嘗試把中間的高低電壓改成1000 0100 0010 0001
但都只有這樣的結果
中間有莫名改了timesleep的參數突然可以轉起來但後來又不行了
我有想過會不會是馬達驅動版的問題
所以從L298N改成L298但也還是一樣只會震動(都是跟實驗室借的自己沒錢買)
想問版上的各位大大有沒有什麼建議還是我哪裡搞錯了
CPU的速度相對於外部IO,馬達,那是數量級的差距.建議你在迴圈中,
把相關參數一併列印出來,延長 sleep.例如:
for i in range(512):
print('i = {}'.format(i))
for halfstep in range(8):
for pin in range(4):
print('halfstep = {} pin = {}'.format(halfstep, pin))
print('control_pins = {} halfstep_seq = {}'.format(control_pins[pin], halfstep_seq[halfstep][pin]))
print('-' * 30)
GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
time.sleep(0.1)
細部你再自己調整,這樣把相關數值列印出來,追蹤時比較方便.另外你 sleep() 在迴圈的位置,也要注意.