今天小編給大家分享一下Python怎么實現(xiàn)DIY自動窗簾模擬系統(tǒng)的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了桃江免費建站歡迎大家使用!
一、準(zhǔn)備工作
üTurnipBit 開發(fā)板 一塊
ü下載數(shù)據(jù)線 一條
ü微型步進(jìn)電機(28BYJ-48) 一個
ü步進(jìn)電機驅(qū)動板(ULN2003APG) 一塊
ü光敏傳感器 一個
üTurnipBit 擴展板 一塊
ü接入網(wǎng)絡(luò)的電腦 一臺
ü在線可視化編程器
二、步進(jìn)電機的介紹
本次實驗采用的是28BYJ-48 四相八拍電機,電壓DC5V~12V。
24BYJ48名稱的含義:
24:電機外徑24mm
B:步進(jìn)電機中步字的拼音首字母
Y:永磁中永字的拼音首字母
J:減速的減字拼音首字母
48:四相8步
實物圖
工作原理
步進(jìn)電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制電機,是現(xiàn)代數(shù)字程序控制系統(tǒng)中的主要執(zhí)行元件,應(yīng)用極為廣泛。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。
28BYJ-48 步進(jìn)電機參數(shù)表
上表中啟動頻率≥550 P.P.S(每秒脈沖數(shù)),意思是要想正常啟動,需要單片機每秒至少給出550個步進(jìn)脈沖。那么每一節(jié)拍需要持續(xù)的時間就是1S/550≈1.8ms,所以控制節(jié)拍刷新的速率應(yīng)大約1.8ms。
驅(qū)動原理
當(dāng)連續(xù)不斷的給電機發(fā)送控制脈沖時,電機就會不斷的轉(zhuǎn)動。每一個脈沖信號對應(yīng)步進(jìn)電機的某一相或兩相繞組的通電狀態(tài)改變一次,對應(yīng)轉(zhuǎn)子就會轉(zhuǎn)過一定的角度(步距角)。當(dāng)通電狀態(tài)的改變完成一個循環(huán)時,轉(zhuǎn)子轉(zhuǎn)過一個齒距。
四相步進(jìn)電機可以在不同的通電方式下運行,常見的通電方式:
四拍(單相繞組通電):A-B-C-D-A…
雙四拍(雙相繞組通電):AB-BC-CD-DA-AB-...
八拍: A-AB-B-BC-C-CD-D-DA-A…
三、器件的連接
1、將步進(jìn)電機白色接頭插到驅(qū)動板對應(yīng)的座子上。
2、TurnipBit對應(yīng)插入擴展板,記住帶有LED燈和按鍵的一面朝向擴展板帶有針腳的一側(cè)。
3、將驅(qū)動板與TurnipBit擴展板連接起來。接線圖如下:
4、將光敏傳感器與TurnipBit擴展板連接起來。接線圖如下:
四、開始編程
1、之前的教程一直都是使用拖拽可視化編程,這種方式可以快速讓零基礎(chǔ)小伙伴入門,但是在實際項目或工作中,還是要直接敲代碼的。今天就給大家介紹一下TurnipBit的可視化編程器的另一項功能--代碼編程。
之前看過編程的小伙伴,不難發(fā)現(xiàn),一打開編輯器首先進(jìn)入的就是代碼編程器界面。如下圖:
2、接下來用代碼實現(xiàn)對步進(jìn)電機的控制和光照數(shù)據(jù)的采集。
ü當(dāng)光照變?nèi)鯐r,步進(jìn)電機順時針旋轉(zhuǎn)一周,模擬關(guān)閉窗簾的操作;
ü當(dāng)光照變強時,步進(jìn)電機逆時針旋轉(zhuǎn)一周,模擬打開窗簾的操作;
完成源代碼:
# 在這里添加Python代碼 from microbit import * Pin_All=[pin5,pin8,pin11,pin12] #轉(zhuǎn)速(ms) 數(shù)值越大轉(zhuǎn)速越慢 最小值1.8ms speed=5 STEPER_ROUND=512 #轉(zhuǎn)動一圈(360度)的周期 ANGLE_PER_ROUND=STEPER_ROUND/360 #轉(zhuǎn)動1度的周期 isOpen=False#表示窗簾的狀態(tài) True:打開 False:關(guān)閉 def SteperWriteData(data): count=0 for i in data: Pin_All[count].write_digital(i) count+=1 def SteperFrontTurn(): global speed SteperWriteData([1,1,0,0]) sleep(speed) SteperWriteData([0,1,1,0]) sleep(speed) SteperWriteData([0,0,1,1]) sleep(speed) SteperWriteData([1,0,0,1]) sleep(speed) def SteperBackTurn(): global speed SteperWriteData([1,1,0,0]) sleep(speed) SteperWriteData([1,0,0,1]) sleep(speed) SteperWriteData([0,0,1,1]) sleep(speed) SteperWriteData([0,1,1,0]) sleep(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() SteperStop() while True: light=pin0.read_analog()#讀取光敏傳感器傳遞過來的模擬量數(shù)據(jù) #數(shù)值越大說明光照度越小 if light>400: if isOpen: isOpen=False SteperRun(-360)#光照小于設(shè)定的值,關(guān)閉窗簾 else: if isOpen==False: isOpen=True SteperRun(360)#光照大于設(shè)定的值,打開窗簾
以上就是“Python怎么實現(xiàn)DIY自動窗簾模擬系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。