iT邦幫忙

0

用raspberry pi 3B L298控制步進馬達 馬達動不起來

  • 分享至 

  • xImage

目前是因為專題的關係使用跟實驗室借的步進馬達
但用到現在都還搞不清楚步進馬達的型號
https://ithelp.ithome.com.tw/upload/images/20200331/20125998gkuYXzwMln.jpg
目前猜測是某一款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()

接線大概像是這樣
https://ithelp.ithome.com.tw/upload/images/20200331/20125998BF8FAVrXkY.jpg
也有嘗試把中間的高低電壓改成1000 0100 0010 0001
但都只有這樣的結果Yes
中間有莫名改了timesleep的參數突然可以轉起來但後來又不行了
我有想過會不會是馬達驅動版的問題
所以從L298N改成L298但也還是一樣只會震動(都是跟實驗室借的自己沒錢買)
想問版上的各位大大有沒有什麼建議還是我哪裡搞錯了

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
一級屠豬士
iT邦大師 1 級 ‧ 2020-03-31 12:25:47

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() 在迴圈的位置,也要注意.

抱歉該開始碰這個東西有點菜不太懂你剛開始文字的意思
也有按照你的code去改
跑出來的數值看起來是沒問題的
還是問題是出在我線路接錯了呢
不過我有用3用電表測過哪兩條是同一組線圈了應該不會錯才對

你注意下你的sleep是在哪層迴圈,不是最內層,這樣跑太快了,即使運作了,也跳過了,所以要注意sleep的位置,然後適當拉長.
查線路要很小心啦,有時候你覺得都沒錯,也只能繼續仔細排查.

我要發表回答

立即登入回答