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
至於代碼呢,很簡單簡單看下吧,設置引腳的編碼方式,這就是我上邊為什么那么費勁的講編碼方式的原因了,雖然你可能還是看讀懂。接下來就是設置引腳的輸出,說白了就是你用樹莓派的那幾個腳來控制步進電機,這個引腳可以根據自己的喜好進行設置。下來就是設置點擊怎么轉,方向自己設定。
基本上呢就這么多,我也是第一次,什么都不懂,一切都來自網絡。
參考鏈接
