您好,登錄后才能下訂單哦!
今天小編給大家分享一下MicroPython怎么實現驅動28BYJ-48步進電機的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
TPYBoard v102 驅動28BYJ-48步進電機
實驗目的
了解步進電機的工作原理
學習步進電機的驅動方法
實驗器材
TPYBoard v102 1塊
微型步進電機(28BYJ-48) 1個
步進電機驅動板(ULN2003APG) 1塊
micro USB數據線 1條
杜邦線 若干
步進電機的介紹
本次實驗采用的是28BYJ-48 四相八拍電機,電壓DC5V~12V。
24BYJ48名稱的含義:
24:電機外徑24mm
B:步進電機中步字的拼音首字母
Y:永磁中永字的拼音首字母
J:減速的減字拼音首字母
48:四相8步
實物圖
工作原理
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制電機,是現代數字程序控制系統中的主要執行元件,應用極為廣泛。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”,它的旋轉是以固定的角度一步一步運行的。可以通過控制脈沖個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。
28BYJ-48 步進電機參數表
上表中啟動頻率≥550 P.P.S(每秒脈沖數),意思是要想正常啟動,需要單片機每秒至少給出550個步進脈沖。那么每一節拍需要持續的時間就是1S/550≈1.8ms,所以控制節拍刷新的速率應大約1.8ms。
驅動原理
當連續不斷的給電機發送控制脈沖時,電機就會不斷的轉動。每一個脈沖信號對應步進電機的某一相或兩相繞組的通電狀態改變一次,對應轉子就會轉過一定的角度(步距角)。當通電狀態的改變完成一個循環時,轉子轉過一個齒距。
四相步進電機可以在不同的通電方式下運行,常見的通電方式:
四拍(單相繞組通電):A-B-C-D-A…
雙四拍(雙相繞組通電):AB-BC-CD-DA-AB-...
八拍: A-AB-B-BC-C-CD-D-DA-A…
模擬效果圖
硬件連接
將步進電機白色接頭插到驅動板對應的座子上即可。
TPYBoard v102驅動板與驅動板的接線圖,如下:
TPYBoard v102 | ULN2003APG驅動板 |
X1 | IN1 |
X2 | IN2 |
X3 | IN3 |
X4 | IN4 |
VIN | 5V正極 |
GND | 負極 |
程序源碼如下:
# main.py -- put your code here! import pyb from pyb import Pin Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X1','X2','X3','X4']] #轉速(ms) 數值越大轉速越慢 最小值1.8ms speed=2 STEPER_ROUND=512 #轉動一圈(360度)的周期 ANGLE_PER_ROUND=STEPER_ROUND/360 #轉動1度的周期 print('ANGLE_PER_ROUND:',ANGLE_PER_ROUND) def SteperWriteData(data): count=0 for i in data: Pin_All[count].value(i) count+=1 def SteperFrontTurn(): global speed SteperWriteData([1,1,0,0]) pyb.delay(speed) SteperWriteData([0,1,1,0]) pyb.delay(speed) SteperWriteData([0,0,1,1]) pyb.delay(speed) SteperWriteData([1,0,0,1]) pyb.delay(speed) def SteperBackTurn(): global speed SteperWriteData([1,1,0,0]) pyb.delay(speed) SteperWriteData([1,0,0,1]) pyb.delay(speed) SteperWriteData([0,0,1,1]) pyb.delay(speed) SteperWriteData([0,1,1,0]) pyb.delay(speed) def SteperStop(): SteperWriteData([0,0,0,0]) def SteperRun(angle): global ANGLE_PER_ROUND val=ANGLE_PER_ROUND*abs(angle) if(angle>0): for i in range(0,val): SteperFrontTurn() else: for i in range(0,val): SteperBackTurn() angle = 0 SteperStop() if __name__=='__main__': SteperRun(180) SteperRun(-180)
以上就是“MicroPython怎么實現驅動28BYJ-48步進電機”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。