2017年4月17日 星期一

模組介紹 : faya直流馬達模組


學習目標 : 認識faya直流馬達模組的功能及使用方式
學習時間 : 40min
示範模組 : (1) fayaduino UNO
                 (2) faya 電源底板
                 (3) faya 觸控開關模組
                 (4) faya 直流馬達模組
工具 : (1) 樂高積木底板 (相容)

====================功能介紹====================
控制faya直流馬達模組的方式是非常容易的,在他的面板上可以看到兩個輸入埠,SIG和DIR:

    • 當SIG埠收到HIGH訊號時,馬達旋轉,旋轉方向由DIR埠決定
    • 當DIR埠收到HIGH訊號時,馬達逆時針轉
    • 當DIR收到LOW訊號時,馬達順時針轉

      因此控制此模組的順序是(1)透過DIR埠告知馬達旋轉方向 (2)透過SIG埠告知馬達可以啟動了



      ====================原理知識====================
      以下解釋提供給有需要知道背後原理的人:
      直流馬達的控制是很單純的,只有兩條控制線,一接正一接負,在足夠的電流下,就能運轉,反接的話就會逆轉。為了讓使用者能夠透過軟體控制正逆轉,而不需要手動改變接線,faya直流馬達模組加入了一點小電路來完成此功能,其中兩顆IC功能如下:

      L293D : 驅動IC,用來提供足夠的電流驅動此馬達
      74HC00 : NAND邏輯閘,透過邏輯閘運算,讓SIG和DIR的邏輯狀態能夠個產生需要的訊號
      (SIG決定馬達是否運轉 ; DIG控制運轉方向)

      模組的電路圖如下,有興趣的人可以把 00, 01, 10, 11帶入SIG和DIR看輸出結果!


      ===================範例實作(1)===================
      了解模組功能(原理)後,我們用以下範例來展示模組的功能:

      目標:

      (1)當手指頭按著faya觸控開關時,直流馬達風扇開始吹風
      (2)當手指頭離開faya觸控開關時,直流馬達風扇停止吹風

      接線:
      (1) 電源線連接
           如下圖所示,連接的說明請看這篇文章 簡易版


      (2) 訊號線連接
            Arduino_A0  ===>  觸控開關_OUT
            Arduino_12  ===>   直流馬達_DIR
            Arduino_13  ===>   直流馬達_SIG


      範例程式:

      備註:- 觸控開關使用範例請參考模組介紹:faya觸控開關模組
      - 第16行的 [digitalWrite(12, HIGH); // 設定馬達旋轉方向為逆時針方向]
        
        為了讓葉片向前吹出風來,馬達旋轉的方向(正/逆轉)須配合葉片的結構:

      黃色葉片 : 左低右高 - 時針轉動時,葉片才會壓出向前吹出的風
      紅色葉片 : 左高右低 - 時針轉動時,葉片才會壓出向前吹出的風


      範例結果:



      ===================範例實作(2)===================
      這邊特別加一個小練習,讓剛進入程式控制領域的使用者,學習一點程式技巧
      由於這個範例所使用的開關非自鎖式的,因此當手一離開按鈕,風扇就關閉了,我們可以透過一些程式技巧解決這個問題!

      目標:
      (1)當手指第一次按faya觸控開關時,風扇啟動,手指離開時,維持啟動狀態
      (2)當手指再一次按faya觸控開關匙,風扇停止

      接線:
      同範例實作(1)

      範例程式:

      備註:- 我們在L12行新增了一個布林(boolean)資料型態的旗標: touch_flag,用來記錄最後一次按鈕狀態,touch_flag初始值為false,表示還沒有被按過。
      - L23~L31中判斷當按到觸控開關時,touch_flag改變上一次的狀態,因此第1次按觸控該關,touch_flag 有由false->true,第2次按開關,touch_flag由true->false,依次類推,手離開觸控該關時,touch_flag不會有變化。
      - L25的300毫秒延遲,讓手指頭在這段時間移開觸控開關,如果沒有這行程式碼的話,風扇會在手指按觸控開關時,瞬間又開又關,大家可以把這行刪掉看看結果
      - L33~L40程式和範例實作(1)相同,但判斷的依據改成touch_flag

      範例結果:


      討論:這個程式還有些小地方需要修改,當手指頭一直放在觸控按鈕上時,會有什麼結果? 大家不妨動動腦,我們往後的文章在繼續討論如何精進這個小範例!

      也歡迎大家在底下留言或到我們的粉絲團留言喔!
      ====================================
      fayalab 粉絲團
      FB本篇留言版


      沒有留言:

      張貼留言