close

電動滑板,利用程式控制,讓動力輸出更平穩。

雖然先前的文章已經有內含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 這兩個東西

  1. 你可以把 Run 看作是一個容器,裡面裝著一大堆數字。
  2. start() 這個你可以看成是另外一隻程式(函式/副程式)

那麼為什麼在loop內要包著另外一隻程式呢(函式/副程式)?理由簡單,因為程式是一連串的的動作腳本,當你想要讓Arduino做的事情越多時,這個腳本就越複雜。

這樣我想怎麼更改這個程式(函式/副程式)時都可以很清楚的辨識,比較不會跟loop內的其他動作黏成一團。

所以我刻意把想要做的動作獨立出來寫在loop外面,把這一連串的動作打包起來並取一個名稱,讓Arduino知道他的存在,並且可以在任何時候呼叫它。

因此你可以寫很多種不同的程式(函式/副程式),想用時就呼叫他們,不想用的時候就不要去呼叫,方便測試各種不同的做法!

 

我在 start() 內寫了好幾組不同的馬達開啟與關閉時間,每一組輸出的動力都不同。我要怎麼把它串在一起?

在 start() 內部利用判斷式判斷 Run 目前的數值是多少,執行過程中會不斷的把Run內部的數字+1,因此Run到達某個數值後,判斷式就會自動切換不同開啟與關閉時間。

當開關未踩下時

當開關踩下時

 

在測試過程中,我測試了以下的語句來控制我的馬達,其中if()...else判斷式速度最快,因此馬達調速控制的最理想(不會斷斷續續一下輸出很強,一下又停止不動)

if()...else

for()

while()

switch ()

 

後續計畫是:

  • 另外在增加一個感應器,感應輪子轉速然後讓Arduino自己判斷轉速需要多快(類似汽車自動控制油門大小的原理)
  • 單馬達改雙馬達或無刷之類...

 

 

材料

  • 一點點的創意 ∞元
  • 一點點的耐心∞元

 

arrow
arrow
    創作者介紹
    創作者 MakerKo 的頭像
    MakerKo

    MakerKo 為了創造而活

    MakerKo 發表在 痞客邦 留言(12) 人氣()