找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2005|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MicroPython開發(fā)實例之TurniBit開發(fā)板DIY自動窗簾模擬系統(tǒng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:130183 發(fā)表于 2018-6-25 15:26 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
        一、準備工作
    üTurnipBit 開發(fā)板 一塊
    ü下載數(shù)據(jù)線 一條
    ü微型步進電機(28BYJ-48) 一個
    ü步進電機驅(qū)動板(ULN2003APG) 一塊
    ü光敏傳感器 一個
    üTurnipBit 擴展板 一塊
    ü接入網(wǎng)絡(luò)的電腦 一臺
    ü在線可視化編程器
    <http://turnipbit.com/PythonEditor/editor.html>

    二、步進電機的介紹
    本次實驗采用的是28BYJ-48 四相八拍電機,電壓DC5V~12V。
    24BYJ48名稱的含義:
    24:電機外徑24mm
    B:步進電機中步字的拼音首字母
    Y:永磁中永字的拼音首字母
    J:減速的減字拼音首字母
    48:四相8步

    實物圖



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

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



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

    驅(qū)動原理
    當連續(xù)不斷的給電機發(fā)送控制脈沖時,電機就會不斷的轉(zhuǎn)動。每一個脈沖信號對應(yīng)步進電機的某一相或兩相繞組的通電狀態(tài)改變一次,對應(yīng)轉(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…



    三、器件的連接
    1、將步進電機白色接頭插到驅(qū)動板對應(yīng)的座子上。
    2、TurnipBit對應(yīng)插入擴展板,記住帶有LED燈和按鍵的一面朝向擴展板帶有針腳的一側(cè)。
    3、將驅(qū)動板與TurnipBit擴展板連接起來。接線圖如下:
    4、將光敏傳感器與TurnipBit擴展板連接起來。接線圖如下:



    四、開始編程

    1、之前的教程一直都是使用拖拽可視化編程,這種方式可以快速讓零基礎(chǔ)小伙伴入門,但是在實際項目或工作中,還是要直接敲代碼的。今天就給大家介紹一下TurnipBit的可視化編程器的另一項功能--代碼編程。
    之前看過編程的小伙伴,不難發(fā)現(xiàn),一打開編輯器首先進入的就是代碼編程器界面。如下圖:


    2、接下來用代碼實現(xiàn)對步進電機的控制和光照數(shù)據(jù)的采集。
    ü當光照變?nèi)鯐r,步進電機順時針旋轉(zhuǎn)一周,模擬關(guān)閉窗簾的操作;
    ü當光照變強時,步進電機逆時針旋轉(zhuǎn)一周,模擬打開窗簾的操作;
    完成源代碼:
  1. # 在這里添加Python代碼
  2. from microbit import *

  3. Pin_All=[pin5,pin8,pin11,pin12]

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

  6. STEPER_ROUND=512 #轉(zhuǎn)動一圈(360度)的周期
  7. ANGLE_PER_ROUND=STEPER_ROUND/360 #轉(zhuǎn)動1度的周期

  8. isOpen=False#表示窗簾的狀態(tài) True:打開 False:關(guān)閉

  9. def SteperWriteData(data):
  10.     count=0
  11.     for i in data:
  12.         Pin_All[count].write_digital(i)
  13.         count+=1
  14. def SteperFrontTurn():
  15.     global speed
  16.    
  17.     SteperWriteData([1,1,0,0])
  18.     sleep(speed)

  19.     SteperWriteData([0,1,1,0])
  20.     sleep(speed)

  21.     SteperWriteData([0,0,1,1])
  22.     sleep(speed)
  23.    
  24.     SteperWriteData([1,0,0,1])   
  25.     sleep(speed)
  26.    
  27. def SteperBackTurn():
  28.     global speed
  29.    
  30.     SteperWriteData([1,1,0,0])
  31.     sleep(speed)
  32.    
  33.     SteperWriteData([1,0,0,1])   
  34.     sleep(speed)
  35.    
  36.     SteperWriteData([0,0,1,1])
  37.     sleep(speed)

  38.     SteperWriteData([0,1,1,0])
  39.     sleep(speed)

  40. def SteperStop():
  41.     SteperWriteData([0,0,0,0])
  42.    
  43. def SteperRun(angle):
  44.     global ANGLE_PER_ROUND

  45.     val=ANGLE_PER_ROUND*abs(angle)
  46.     if(angle>0):
  47.         for i in range(0,val):
  48.             SteperFrontTurn()
  49.     else:
  50.         for i in range(0,val):
  51.             SteperBackTurn()
  52.     SteperStop()
  53.    
  54. while True:
  55.     light=pin0.read_analog()#讀取光敏傳感器傳遞過來的模擬量數(shù)據(jù)
  56.     #數(shù)值越大說明光照度越小
  57.     if light>400:
  58.         if isOpen:
  59.             isOpen=False
  60.             SteperRun(-360)#光照小于設(shè)定的值,關(guān)閉窗簾
  61.     else:
  62.         if isOpen==False:
  63.             isOpen=True
  64.             SteperRun(360)#光照大于設(shè)定的值,打開窗簾
復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表