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

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

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

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

引腳

  首先,咱們先看下樹莓派的40個Pin都是什麼功能吧!能夠經過過樹莓派的命令行窗口來查詢,輸入命令:網絡

 gpio readall

  輸出的結果是什麼呢?見下圖:測試

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

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

BOARD編碼

  上圖也寫了,就是物理引腳嘛,怎麼編碼的呢,就是在一列的引腳一、2,旁邊的是三、4……直接上圖吧,估計也說不清楚。因爲個人主板已經安裝到盒子裏邊了,固定也挺麻煩的,我就從網上蕩一張來講事兒吧!.net

  

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

BCM編碼

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

WiringPin編碼

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

  至於爲何要講這寫呢,首先是鏈接點擊要用,另外就是編寫代碼要用。

步進電機及驅動板

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

步進電機

   我這個型號是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編程實現

相關文章
相關標籤/搜索