學習目標 : 認識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觸控開關時,直流馬達風扇開始吹風
接線:
(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本篇留言版
沒有留言:
張貼留言