步進電機是一種將電脈沖信號轉換成相應角位移或線位移的電動機,每輸入一個脈沖信號,轉子就轉動一個角度或前進一步,其輸出的角位移或線位移與輸入的脈沖數成正比,轉速與脈沖頻率成正比,因此,步進電動機又稱脈沖電動機。
步進電機通常需要搭配一個步進電機驅動模塊(也叫步進電機驅動器)來工作。步進電機驅動器是一種將電脈沖轉化為角位移的執行機構。當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(稱為“步距角”),它的旋轉是以固定的角度一步一步運行的。可以通過控制脈沖個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速和定位的目的。
四相步進電機按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工作方式。單四拍與雙四拍的步距角相等,但單四拍的轉動力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉動力矩又可以提高控制精度,驅動器相當于開關的組合單元。通過上位機的脈沖信號有順序給電機相序通電使電機轉動。
本文使用到的是 28BJY-48 型步進電機。
硬件連接
首先需要將步進電機和電機驅動板連起來,直接將電機的白色插頭插入驅動板上的白色插槽(注意卡扣方向)即可。
再將驅動板和樹莓派 Pico 連接起來,接線如下:
電機驅動板的 + 引腳接 Pico 的 VSYS。
電機驅動板的 – 引腳接 Pico 的 GND。
電機驅動板的 IN1 引腳接 Pico 的 GP18。
電機驅動板的 IN2 引腳接 Pico 的 GP19。
電機驅動板的 IN3 引腳接 Pico 的 GP20。
電機驅動板的 IN4 引腳接 Pico 的 GP21。
將下面的代碼保存在 Pico 的根目錄,命名為 main.py。
from machine import Pin import utime # 步進驅動模塊的引腳初始化 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 # 四相八拍步進電機的順序值 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) # 單步順時針轉動,count 為步數值,可為負數(逆時針) 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) # 以指定角度順時針轉動,a 為角度值,可為負數(逆時針) def step_angle(a): step_run(int(ROUND_VALUE * a / 360)) # 重置驅動板 reset() # 逆時針轉 90 度 step_angle(-90) # 以單步方式持續順時針轉動 while True: step_run(1)
程序中定義了這款步進電機的驅動方式和參數。有兩種方法驅動它:step_angle(角度) 或 step_run(步數)。
運行之后,可以看到步進電機先逆時針轉動 90 度,再順時鐘持續運行下去。
審核編輯:劉清
-
驅動器
+關注
關注
52文章
8228瀏覽量
146266 -
電動機
+關注
關注
74文章
4109瀏覽量
96211 -
步進電機
+關注
關注
150文章
3109瀏覽量
147445 -
脈沖信號
+關注
關注
6文章
398瀏覽量
36957 -
樹莓派
+關注
關注
116文章
1707瀏覽量
105610
原文標題:在樹莓派 Pico 上編程使用步進電機
文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論