「 #Arduino開發日誌 01」使用 Arduino 控制 電變 / 無刷馬達 隨手筆記 教學

Standard

這篇要來介紹如何使用Arduino搭配電變來控制無刷馬達,
無刷馬達Brushless DC electric motor (BLDC motors, BL motors)
並不是一個把正負極插上去就會動的東西,
要透過程式去控制裡面的線圈在不同的時間產生不同的磁場
進而讓馬達轉動,
因此我們需要一個電子變速器(Electronic Speed Control,ESC)
來幫我們做到這件事情,



當然用arduino直接控制無刷馬達接出來的三條信號線
也是可以達到一樣的效果,但當然複雜很多
我當時也有查過相關的資料,有蠻多人分享這方面的code的,
但我還沒試過,如果之後有機會實作,再和大家分享,
今天這篇就先完成最低限度,讓無刷馬達可以成功轉起來吧!


一、本篇目的

先利用Arduino初始化電變,
再利用Arduino經由電變控制無刷馬達的轉速與開關
--------
因為每個電變在一開始的時候(也就是剛通電時,所以斷電就要重來)
需要給它一個最高與最低的信號來讓它知道上下限,
透過電變接出來的杜邦線的data那條(通常是橘色或白色),
連接到Arduino的pwm輸出腳位,
即可透過函式庫去控制轉速(像控servo那樣)


二、本篇使用設備

[gallery ids="303,302" type="rectangular"]

1.ESC: XXD HW30A 30A (新西達30A 無刷電變 好盈程序)
2.BLDC: XXD A2212 2450KV (新西達 A2212 2450KV 無刷馬達)
--------
目前我只使用過這家的電變跟無刷
但理論上應該是無論廠牌原理跟程式都有通
然後其他還有一些材料也算是必備的,
像是端子台,

20150707032128553.jpg

有了這個不用不用焊接焊到爆氣,
無刷跟電變的粗線不好焊,很容易掉,
害我一開始一直因為接觸不良而失敗,
所以奉勸各位就去買個吧~
電子材料的買法在另一篇有介紹,
「Arduino」電子元件購買 / 採購 整理

再來就是一個夠給力的電源,
至少要有12V,但是也不建議太高,
然後我是用三顆18650的3.7V鋰電池,可以充電然後電流又大,

editor_20151125114325_LG2200-2-01

18650也常隱身在日常生活中,像是行充,
行動電源如果是舊的厚厚的那種,
裡面就有可能是塞好幾個顆這個,
不過馬達轉起來還是蠻耗電的,
所以如果用乾電池的話,消耗就會很大,不太建議。


三、接線

無刷電變配線
「電變接出來的三條杜邦線中間的紅線可不用接」
不過這方面我沒有深入去了解為什麼
希望知道的人可以幫忙在底下回覆補充
另外杜邦線的顏色有兩種
「棕紅橘」對應到「黑紅白」就是「地/電壓/信號」。


四、測試步驟

step0.先關掉連接無刷、電變的電源
這麼做是為了防止信號腳位在輸出一些有的沒的訊號,
然後觸發了ESC的一些設定模式,
就開始逼逼逼亂叫@@

step1.先執行 SN_ESCInitialize.ino
程式裡確保腳位9,10是輸出pwm為0的訊號

step2.上傳完成後,打開序列埠監控視窗
打開看看現在程式在幹麻,
理論上會看到程式問你現在要幹麻XDDD

step3.打開連接無刷、電變的電源
這時會聽到登登登~依序升高的三聲,是無刷發出來的,
然後就是規律的逼~~逼~~逼~~,
這是無刷在沒有要動的正常狀況下會發出的聲音,
如果對這些聲音很有興趣的話,
可以去查ESC的data sheet,
裡面有寫每一種聲音代表什麼意思,
那我這裡就不撈叨太多,只跟大家說你可能會聽到的聲音,
基本上開始亂叫就是訊號給的不太對,
可能誤啟動了編輯模式(可以調進角、馬達啟動模式等等...
或是電壓不正常發出的警告音(短促的逼逼逼逼連叫),
不管怎樣,反正聲音不太正常就把無刷和電變的那個電源關閉
從step0重來就好

step4.回到序列埠監控視窗選擇接下來的指令
一般來說會先 y 進行初始化,
然後又要來教大家聽聲音了,
這時候你會聽到逼逼兩聲,代表現在輸出較高的pwm,
電變確定了上限值,
然後再聽到逼逼逼三聲,代表現在輸出比較低的pwm,
電變確定下限值,
最後逼~~~一聲長的,代表初始化完畢

成功後,再打 t 進行每個速度的測試
可以測試servo.write 21~165 的轉速,

s  可以定速(輸入 21 ~ 165 的值),
o 則可以停止馬達轉動  ,


五、程式碼/Source Code

希望經由上述的講解後
各位能對無刷與電變有初淺的了解
並從這個code裡面取出你要用的部分完成你的專案
https://github.com/shannon112/arduino_ESCandBLDC


六、應用作品

機械系大三下專題
BYNN - 風力推進循跡車附帶顏色辨識功能
https://github.com/shannon112/arduino_BYNN





14 則留言:

  1. 請問這可以控制馬達的正反轉嗎?

    回覆刪除
    回覆
    1. 電變那三條藍色的左邊跟右邊那條互換,就會反轉。但是從程式上,我那時候有查了下,透過電變的話印象中是不行,但或許有可能可以設計電路,在要反轉的時候把那兩條線反接,不知道可不可行。不然就是不透過電變,之前看到有人自己寫裡面的控制,讓無刷馬達動,既然有辦法正轉應該也有辦法反轉,以上是我知道的,希望有幫到你

      刪除
    2. 感謝您的回覆

      網路上購買的材料到了之後我就立馬測試了,發現電變的左右互換是可以反轉,但是要用程式控制的話我還是打算直接接上L298N來控制。

      另外我發現我在控制馬達轉速的時候PWM至少要設定到50他才會轉動,好奇的想問一下這種無刷馬達是不是無法像控制雲台那樣的緩慢轉動?

      雲台用的馬達我有查到LGM2208這顆,他的控制方式跟這個又有何不同?
      不曉得您瞭不了解

      刪除
    3. 抱歉有點晚才回覆,
      我之前有查到過有一篇報告在做控制平台的文章,
      相機的水平控制的那種,
      他們是用三顆無刷馬達控制,沒經過電變,
      用馬達控制晶片,有電橋的那種,透過arduino來控制
      code寫得蠻複雜的,我沒有詳細看,不過他們有做出成品,所以應該是可行
      只是可能要深入研究一下無刷的控制

      LGM2208這顆馬達我目前還沒有聽過,可能沒辦法幫上忙,抱歉

      刪除
  2. 回覆
    1. ????????
      你是不是認識我XDDD

      刪除
  3. 請問打完 t 之後 輸入速度後, 馬達轉一下就停是為什麼???

    回覆刪除
    回覆
    1. 作者已經移除這則留言。

      刪除
    2. 根據我們那時候在實作氣動車的經驗
      有以下可能的原因:
      1. 電池沒電,充電就可以解決
      2. 馬達的扭力不夠,我們之前有試過在上面放金屬風扇跟3D列印風扇(也就是負載),有差,金屬風扇不知道為什麼也是轉一下就停了,但是把風扇取下,馬達是可以正常從21~165轉的
      3. 根據上面那點要馬就是換負載但這通常不容易,所以也可以反過來改善馬達扭力,這篇教學文用的馬達是2450KV,屬於很高轉速的,高轉速扭力就低,可以換稱低轉速高扭力的試試看,像是1000KV的,通常問題就可以解決
      4. 如果照著上述三點後問題仍沒解決,那應該是電變的問題,這篇教學文使用的電變是超級便宜的那種,可能要再另外查詢其他比較可靠的電變,因為這顆電變根據我們那時候實測,會有長期使用過熱後,停轉的問題,然後如果停轉後再次啟動就會跟你說的一樣馬達轉一下就停,這時候就只能等他冷,冷了就會回復正常

      刪除
    3. 附帶一提,也可以試試調整test模式下的上下限,預設是21~165,根據不同的負載與馬達的KV數,會有不同的上下限,下限沒超過馬達不會動,上線超過會停轉or轉一下就停or變很慢

      刪除
  4. 請問一下ESC的電壓線既然不能接那它是用來做什麼的

    回覆刪除
    回覆
    1. 其實我也不太清楚,更正一下那句話應該是這樣說
      這樣做會在電路有問題的時候燒壞你的電腦或是你的Arduino(我燒壞過一片,

      會這樣說是我記得我那時候看到一篇英文教學文說不要接
      但是!也有其他篇說要接

      更正確地來說我先信了後面那篇
      然後我自己電路有接錯,但按照這種接法
      整個電路都是通的,所以就打壞了我的arduino
      所以其實只要你的電路沒問題其實有接納根應該也是沒差

      但沒接也可以運作(詳細為什麼可能要再去查查
      所以我覺得沒接比較安全
      如果你有查到為什麼歡迎來feedback一下><

      刪除
  5. 您好,我想請教一下,如果將飛控用的電變更換成有正反轉功能的車用電變,編程上是否會有差異呢?我目前是已經成功用兩組arduino nano+nRF24L01無線模組發送可變電阻的訊號來控制接收端的飛控ESC及無刷馬達,但是當我更換成好盈1060車用電變之後,相同的程式碼似乎不能順利運作。
    附帶一提的是,我先前以具BEC功能的好盈天行者20A電變供電給arduino,板子和電變都沒燒壞;這次我將具BEC功能的好盈1060車用電變同樣供電給arduino,結果卻把電變燒壞了。前後這兩次操作的差異是,前次燒錄code過程中,我有把電變連接arduino的線拔除,而這次忘記拔掉,結果燒完電變似乎就掛了,是因為逆電流嗎?

    回覆刪除
  6. 您好,想請問您為甚麼在跟您使用相同規格電變與無刷的情況下,電池也用18650三顆串聯,電池盒卻不斷燒掉,電池盒有規格限制嗎?

    回覆刪除

留言