電動滑板,利用程式控制,讓動力輸出更平穩。
雖然先前的文章已經有內含Sketch可以下載,但此篇還是要來介紹一下控制方式。
第一篇:只要3500以內的預算,就可以打造一台電動滑板!(Part.1 先準備好材料並且做硬體)
第二篇:只要3500以內的預算,就可以打造一台電動滑板!(Part.2 製作控制電路)
難易度
★★☆☆☆
怎麼做
邏輯控制很簡單。基本滿足以下兩點
- 緩緩加速
- 隨時可以切斷電源
若您在網路上搜尋 Arduino控制馬達的關鍵字時,都可以找到很多的文章,一般都是使用PWM控制方式,然後將訊號輸出給馬達驅動模組。
但在此專案內其實無法使用以往的模式。最主要的原因在於Arduino的PWM運作速度略慢,因此對於大功率的馬達控制時幾乎完全感覺不出來有調速的效果!
所以我使用更原始的控制來模擬PWM的效果,以便達到調速功能。作法即是在Sketch內指定輸出多少時間,關閉多少時間。
優點:開關速度可以大為提昇,缺點:一旦這樣做Arduino將會很忙,無法回應你其他的動作。
Sketch初期,我們要先告訴Arduino我所要使用的腳位是那幾隻腳,並且給它起一個名子,方便我們在寫程式時所使用。
(因為Arduino有很多支腳,你若不先告訴它我將會用到哪隻腳來做什麼用途,它就不知道要去指派誰來做什麼事情)
接下來是void loop的區域,Arduino開機後會不斷的在這個區域內由上而下逐一條執行,直到你關機為止。
所以你想要做什麼動作,都可以寫在這裡!
在void loop內有主要的判斷式,主要是判斷當你的腳踩下開關時Arduino要做什麼,若你不踩或放開時它又該怎麼動作。
在loop內有一個 start() 跟 Run 這兩個東西
- 你可以把 Run 看作是一個容器,裡面裝著一大堆數字。
- start() 這個你可以看成是另外一隻程式(函式/副程式)
那麼為什麼在loop內要包著另外一隻程式呢(函式/副程式)?理由簡單,因為程式是一連串的的動作腳本,當你想要讓Arduino做的事情越多時,這個腳本就越複雜。
這樣我想怎麼更改這個程式(函式/副程式)時都可以很清楚的辨識,比較不會跟loop內的其他動作黏成一團。
所以我刻意把想要做的動作獨立出來寫在loop外面,把這一連串的動作打包起來並取一個名稱,讓Arduino知道他的存在,並且可以在任何時候呼叫它。
因此你可以寫很多種不同的程式(函式/副程式),想用時就呼叫他們,不想用的時候就不要去呼叫,方便測試各種不同的做法!
我在 start() 內寫了好幾組不同的馬達開啟與關閉時間,每一組輸出的動力都不同。我要怎麼把它串在一起?
在 start() 內部利用判斷式判斷 Run 目前的數值是多少,執行過程中會不斷的把Run內部的數字+1,因此Run到達某個數值後,判斷式就會自動切換不同開啟與關閉時間。
當開關未踩下時
當開關踩下時
在測試過程中,我測試了以下的語句來控制我的馬達,其中if()...else判斷式速度最快,因此馬達調速控制的最理想(不會斷斷續續一下輸出很強,一下又停止不動)
if()...else
for()
while()
switch ()
後續計畫是:
- 另外在增加一個感應器,感應輪子轉速然後讓Arduino自己判斷轉速需要多快(類似汽車自動控制油門大小的原理)
- 單馬達改雙馬達或無刷之類...
材料
- 一點點的創意 約∞元
- 一點點的耐心 約∞元
留言列表