python代碼實現樹莓派3b+驅動步進電機


python代碼實現樹莓派3b+驅動步進電機

   之前買了個樹莓派,剛買回來那會兒熱情高漲,折騰了一段時間,然后就放那吃灰了。前幾天忽然想起來這個東西了,決定再玩玩兒,於是就從某寶上購買了一套步進電機、驅動板。東西收到后就開始折騰研究,下邊來總結下折騰的結果吧。

  先來說下都需要什么吧,樹莓派的這一套都少不了,樹莓派3b+主板、TF卡、樹莓派電源、步進電機以及對應的驅動板、杜邦線6根(母對母),差不多就這么多吧。

引腳

  首先,我們先看下樹莓派的40個Pin都是什么功能吧!可以通過過樹莓派的命令行窗口來查詢,輸入命令:

 gpio readall

  輸出的結果是什么呢?見下圖:

  上邊圖中已經全部顯示了40個GPIO的定義。下邊是我從網上盪了一張圖帶顏色的圖,看的會更清楚一些:

  上圖可以看到,這些Pin的編碼方式有三種,分別是BOARD編碼、BCM編碼和WiringPi編碼。這些都是什么含義呢?下邊我們來一一說下:

BOARD編碼

  上圖也寫了,就是物理引腳嘛,怎么編碼的呢,就是在一列的引腳1、2,旁邊的是3、4……直接上圖吧,估計也說不清楚。由於我的主板已經安裝到盒子里邊了,固定也挺麻煩的,我就從網上盪一張來說事兒吧!

  

  上圖從左到右、從下到上以及進行編碼,物理編碼的起始值為1,從1到40。

BCM編碼

   BCM編碼起始為是從0開始編碼的,並且不像BOARD編碼方式那樣有序,他是根據功能進行編碼的。具體的編碼可以結合BOARD編碼查看上邊那張帶顏色的表,從而確定每個引腳的功能。

WiringPin編碼

   這是另外一種編碼方式,具體也沒研究的太透,這里就簡單略過吧,免得誤人子弟了。

  至於為什么要講這寫呢,首先是連接點擊要用,另外就是編寫代碼要用。

步進電機及驅動板

  看完編碼當時,加下來我們再說下步進電機和驅動板電路吧。

步進電機

   我這個型號是28BYJ-48 5V DC,也沒少好解釋的,某寶上一搜一大把,而且還很便宜。

 

 

驅動板

  驅動板必須要跟點擊匹配,否則必有一壞,就是看什么壞了。這個買的時候跟老板說,都懂,順便一起買了,白菜價。

  下來就說怎么用吧,步進電機根據自己的接口進行連接,由於我的就是那個匹配白色排針接口的,所以就不解釋了,就算是傻子也接不錯。

  重點是怎么跟樹莓派連接?IN1~IN4是控制信號輸入接口;G接樹莓派的GND引腳,不要問我為什么,就是這么接的,查看原理圖得出來的結論。V呢接樹莓派5V的引腳,不要問我為什么,記住就是這么接的就行了。

  怎么顯示他們的工作狀態呢,看到上邊的D1~D4了沒,那就是等,給誰信號誰亮。

  我就不上我具體的接線圖了,因為盒子拆裝太麻煩,並且我的杜邦線都是臨時湊出來的,不好看。

代碼

   下邊我們說代碼,由於我只會python,所以我就用python來編寫,不要讓我用C了什么的給你寫個,不寫,不會!

  首先就是安裝模塊唄,裝啥呢?裝RPi.GPIO。我用的是python3,所以就在python3下安裝的。如果你的出錯了別找我,我也不會,因為我的沒有出錯。解決辦法就是百度,網上一找一大堆。

  怎么安裝呢?

pip3 install RPi.GPIO

  接着等提示安裝成功就行了。

  接下里就是寫py代碼了,由於我就是做了個簡單的測試,所以代碼也很簡答,能讓步進電機轉起來。代碼呢也是找的,因為他的比我的好看,並且也規范:

import RPi.GPIO as GPIO
import time
 
delay=2 #delay 2ms
 
pin_4 = 4
pin_17 = 17
pin_23 = 23
pin_24 = 24
 
GPIO.setmode(GPIO.BCM) #設置引腳的編碼方式
    
def init():
    GPIO.setwarnings(False)
    GPIO.setup(pin_4, GPIO.OUT)
    GPIO.setup(pin_17, GPIO.OUT)
    GPIO.setup(pin_23, GPIO.OUT)
    GPIO.setup(pin_24, GPIO.OUT)
 
 
def forward(delay):  
    setStep(1, 0, 0, 0)
    time.sleep(delay)
    setStep(0, 1, 0, 0)
    time.sleep(delay)
    setStep(0, 0, 1, 0)
    time.sleep(delay)
    setStep(0, 0, 0, 1)
    time.sleep(delay)
 
def setStep(w1, w2, w3, w4):
  GPIO.output(pin_4, w1)
  GPIO.output(pin_17, w2)
  GPIO.output(pin_23, w3)
  GPIO.output(pin_24, w4)
  
def main():
    init() 
    while True:
        forward(int(delay) / 1000.0)
         
main() # 調用main

 

   至於代碼呢,很簡單簡單看下吧,設置引腳的編碼方式,這就是我上邊為什么那么費勁的講編碼方式的原因了,雖然你可能還是看讀懂。接下來就是設置引腳的輸出,說白了就是你用樹莓派的那幾個腳來控制步進電機,這個引腳可以根據自己的喜好進行設置。下來就是設置點擊怎么轉,方向自己設定。

  基本上呢就這么多,我也是第一次,什么都不懂,一切都來自網絡。

 

參考鏈接

樹莓派 40Pin 引腳對照表

樹莓派驅動步進式電機python編程實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM