溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MicroPython怎么實現(xiàn)驅(qū)動28BYJ-48步進電機

發(fā)布時間:2022-01-13 11:25:07 來源:億速云 閱讀:459 作者:iii 欄目:互聯(lián)網(wǎng)科技

今天小編給大家分享一下MicroPython怎么實現(xiàn)驅(qū)動28BYJ-48步進電機的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

TPYBoard v102 驅(qū)動28BYJ-48步進電機

實驗目的

    了解步進電機的工作原理

    學習步進電機的驅(qū)動方法

實驗器材

    TPYBoard v102 1塊

    微型步進電機(28BYJ-48) 1個

    步進電機驅(qū)動板(ULN2003APG) 1塊

    micro USB數(shù)據(jù)線 1條

    杜邦線 若干

步進電機的介紹

本次實驗采用的是28BYJ-48 四相八拍電機,電壓DC5V~12V。

24BYJ48名稱的含義:

24:電機外徑24mm

B:步進電機中步字的拼音首字母

Y:永磁中永字的拼音首字母

J:減速的減字拼音首字母

48:四相8步

實物圖

MicroPython怎么實現(xiàn)驅(qū)動28BYJ-48步進電機

工作原理

       步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制電機,是現(xiàn)代數(shù)字程序控制系統(tǒng)中的主要執(zhí)行元件,應用極為廣泛。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。

28BYJ-48 步進電機參數(shù)表

MicroPython怎么實現(xiàn)驅(qū)動28BYJ-48步進電機

上表中啟動頻率≥550 P.P.S(每秒脈沖數(shù)),意思是要想正常啟動,需要單片機每秒至少給出550個步進脈沖。那么每一節(jié)拍需要持續(xù)的時間就是1S/550≈1.8ms,所以控制節(jié)拍刷新的速率應大約1.8ms。

驅(qū)動原理

當連續(xù)不斷的給電機發(fā)送控制脈沖時,電機就會不斷的轉(zhuǎn)動。每一個脈沖信號對應步進電機的某一相或兩相繞組的通電狀態(tài)改變一次,對應轉(zhuǎn)子就會轉(zhuǎn)過一定的角度(步距角)。當通電狀態(tài)的改變完成一個循環(huán)時,轉(zhuǎn)子轉(zhuǎn)過一個齒距。

四相步進電機可以在不同的通電方式下運行,常見的通電方式:

       四拍(單相繞組通電):A-B-C-D-A…

       雙四拍(雙相繞組通電):AB-BC-CD-DA-AB-...

       八拍: A-AB-B-BC-C-CD-D-DA-A…

模擬效果圖

MicroPython怎么實現(xiàn)驅(qū)動28BYJ-48步進電機

硬件連接

將步進電機白色接頭插到驅(qū)動板對應的座子上即可。

TPYBoard v102驅(qū)動板與驅(qū)動板的接線圖,如下:

TPYBoard v102

ULN2003APG驅(qū)動板

X1

IN1

X2

IN2

X3

IN3

X4

IN4

VIN

5V正極

GND

負極

MicroPython怎么實現(xiàn)驅(qū)動28BYJ-48步進電機

程序源碼如下:

# 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']]

#轉(zhuǎn)速(ms) 數(shù)值越大轉(zhuǎn)速越慢 最小值1.8ms
speed=2

STEPER_ROUND=512 #轉(zhuǎn)動一圈(360度)的周期
ANGLE_PER_ROUND=STEPER_ROUND/360 #轉(zhuǎn)動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怎么實現(xiàn)驅(qū)動28BYJ-48步進電機”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI