步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)角位移或線位移的電動(dòng)機(jī),每輸入一個(gè)脈沖信號(hào),轉(zhuǎn)子就轉(zhuǎn)動(dòng)一個(gè)角度或前進(jìn)一步,其輸出的角位移或線位移與輸入的脈沖數(shù)成正比,轉(zhuǎn)速與脈沖頻率成正比,因此,步進(jìn)電動(dòng)機(jī)又稱脈沖電動(dòng)機(jī)。
步進(jìn)電機(jī)通常需要搭配一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)模塊(也叫步進(jìn)電機(jī)驅(qū)動(dòng)器)來工作。步進(jìn)電機(jī)驅(qū)動(dòng)器是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的。可以通過控制脈沖個(gè)數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速和定位的目的。
四相步進(jìn)電機(jī)按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工作方式。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動(dòng)力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉(zhuǎn)動(dòng)力矩又可以提高控制精度,驅(qū)動(dòng)器相當(dāng)于開關(guān)的組合單元。通過上位機(jī)的脈沖信號(hào)有順序給電機(jī)相序通電使電機(jī)轉(zhuǎn)動(dòng)。
本文使用到的是 28BJY-48 型步進(jìn)電機(jī)。
硬件連接
首先需要將步進(jìn)電機(jī)和電機(jī)驅(qū)動(dòng)板連起來,直接將電機(jī)的白色插頭插入驅(qū)動(dòng)板上的白色插槽(注意卡扣方向)即可。
再將驅(qū)動(dòng)板和樹莓派 Pico 連接起來,接線如下:
電機(jī)驅(qū)動(dòng)板的 + 引腳接 Pico 的 VSYS。
電機(jī)驅(qū)動(dòng)板的 – 引腳接 Pico 的 GND。
電機(jī)驅(qū)動(dòng)板的 IN1 引腳接 Pico 的 GP18。
電機(jī)驅(qū)動(dòng)板的 IN2 引腳接 Pico 的 GP19。
電機(jī)驅(qū)動(dòng)板的 IN3 引腳接 Pico 的 GP20。
電機(jī)驅(qū)動(dòng)板的 IN4 引腳接 Pico 的 GP21。
將下面的代碼保存在 Pico 的根目錄,命名為 main.py。
from machine import Pin import utime # 步進(jìn)驅(qū)動(dòng)模塊的引腳初始化 in1 = Pin(18,Pin.OUT) in2 = Pin(19,Pin.OUT) in3 = Pin(20,Pin.OUT) in4 = Pin(21,Pin.OUT) ROUND_VALUE = 509 delay = 1 # 四相八拍步進(jìn)電機(jī)的順序值 STEP_VALUE = [ [0,0,0,1], [0,0,1,1], [0,0,1,0], [0,1,1,0], [0,1,0,0], [1,1,0,0], [1,0,0,0], [1,0,0,1], ] # 重置引腳輸出低電平 def reset(): in1(0) in2(0) in3(0) in4(0) # 單步順時(shí)針轉(zhuǎn)動(dòng),count 為步數(shù)值,可為負(fù)數(shù)(逆時(shí)針) def step_run(count): direction = 1 if count < 0: direction = -1 count = -count for x in range(count): for bit in STEP_VALUE[::direction]: in1(bit[0]) in2(bit[1]) in3(bit[2]) in4(bit[3]) utime.sleep_ms(delay) # 以指定角度順時(shí)針轉(zhuǎn)動(dòng),a 為角度值,可為負(fù)數(shù)(逆時(shí)針) def step_angle(a): step_run(int(ROUND_VALUE * a / 360)) # 重置驅(qū)動(dòng)板 reset() # 逆時(shí)針轉(zhuǎn) 90 度 step_angle(-90) # 以單步方式持續(xù)順時(shí)針轉(zhuǎn)動(dòng) while True: step_run(1)
程序中定義了這款步進(jìn)電機(jī)的驅(qū)動(dòng)方式和參數(shù)。有兩種方法驅(qū)動(dòng)它:step_angle(角度) 或 step_run(步數(shù))。
運(yùn)行之后,可以看到步進(jìn)電機(jī)先逆時(shí)針轉(zhuǎn)動(dòng) 90 度,再順時(shí)鐘持續(xù)運(yùn)行下去。
審核編輯:劉清
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
51文章
8018瀏覽量
145129 -
電動(dòng)機(jī)
+關(guān)注
關(guān)注
73文章
4045瀏覽量
95366 -
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
150文章
3053瀏覽量
146912 -
脈沖信號(hào)
+關(guān)注
關(guān)注
6文章
380瀏覽量
36795 -
樹莓派
+關(guān)注
關(guān)注
116文章
1679瀏覽量
105282
原文標(biāo)題:在樹莓派 Pico 上編程使用步進(jìn)電機(jī)
文章出處:【微信號(hào):趣無盡,微信公眾號(hào):趣無盡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論