前日 (星期六) 把主要的電線連結起來測試馬達運轉。本來是很順利的,結果把上層壓克力板拆下來準備再接上額外的訊號控制連接線時,一個不注意竟然造成電池短路,很快的就冒岀一股燒焦味。我趕快把電池挖出來 (還好電池沒燒壞),但電池盒已燒毀,有幾根電線也燒黏在一起。

天啊!!現在我才知道 18650 鋰電池的可怕!這讓我學到一件事:不使用且沒有保護電路的情況下,隨時都要把電池拿出來。

這裡先說明一下,小車輪胎馬達是透過 L298N 控制模組來驅動的;L298N 可以控制兩顆馬達的驅動,而我這小車套件是 2WD 驅動,所以剛剛好。L298N 可以控制正、反轉,甚而控制轉速,而這些都需要再連接包括 IN(1~4)、EN(A,B)等連接埠,所以得要接上好幾條電線。這部分就留待到作輪胎運轉測試時,一併連 Arduino 控制程式再作說明。
測試舵機 MG995 驅動

對了,馬達這邊我還加裝了 0.1(104) uf 電容,比較能保護突兀而來的大電流而燒毀馬達。
測試舵機 MG995 驅動

因為當日我沒有備用的電池盒,所以乾脆轉而來測試舵機看看。 (舵機這用詞是大陸用語,英文稱為 servo、我們台灣地區則稱為伺服馬達。)


我從淘寶買的是稱為二自由度舵機雲台的套件,含兩顆 MG995 舵機與雲台支架。所謂的二自由度意思就是可以控制上下、左右的自由轉動,MG995 可轉180度。
2自由度 舵機雲台支架 + MG995 舵機 x2

這舵機雲台一般會當作機器人的關節;應用於小車則可以裝置在前方,然後再加載攝影機或探測 (如超聲波、紅外線) 模組。我是準備先裝上超聲波模組,像眼睛一般,可以上下左右隨著手勢反應移動;後續應該也會改裝成攝影機,然後可以透過手機觀測行進的畫面。
測試舵機 MG995 驅動

好容易才裝好舵機雲台 (還要調整好轉動角度可真不容易),然後撰寫簡單的 Arduino 測試程式 (參考如下,只要可以從0轉動到180度來回就成。),接上電源 (USB 供電给 Arduino),挖勒~是會轉動啦,但轉一轉就會顫抖。兩個舵機有問題,那麼就先測一個吧;但結果還是一樣,從換接腳到直接輸入脈衝 (0.5~2.5 ms) 控制角度,嘗試了許多方法,都無法正常擺動。

我想可能是 5V 輸入電壓不足的問題吧,然後隔天到電子材料行買了18650 電池盒回來,8V 的電壓給它測下去,結果還是一樣啦!! 實在搞不懂,我原還以為買到瑕疵品了呢。

#include <Servo.h>
Servo myservo;          //創建一個舵機控制對象
 
void setup()
{
  myservo.attach(9);    // 由arduino第九腳控制
}
 
void loop()
{
    myservo.write(180);        	// 指定舵機轉向的角度
    delay(15);                  // 等待15ms讓舵機到達指定位置
    myservo.write(0);
    delay(15);
}

後來網路爬了一堆文,發現到這顆 MG995 挺要求的:工作電壓不能太低,但也不能太高 (一般要求約 5~6.8 V);電流也是一樣,大概 1~2 A 左右。

所以原來供電给 Arduino 的電壓雖然是 5V 合格,但電流只有 500 mA 就不行;而 8V 的18650 鋰電電壓則太高,反而無法正常驅動舵機。

所以我作了一個小測試,我用 1.5V x 4 顆的3號電池供給電源,沒想到一次就成功,真的就是上述所提的限制。

但 8V 的大電壓可以讓車子的動力更加有力,而且小車只放上兩顆鋰電也比較精簡空間。該如何解決看似兩難的問題?

這次運氣就不錯了,我原來的淘寶電子材料採購單內,有買了一塊 LM2596穩壓電路模組 (帶顯示電壓表),原來是要用來作電子實驗的;看來這裡可以派上用處,先畫個電路草稿構思下作法:
18650 鋰電透過 5.4V 穩壓電路供電给MG995 舵機

簡單的說,18650x2=8V 的鋰電為小車所有電路的供電源。分接給 L298N 的電壓仍為 8V,用以驅動兩顆小車馬達;而原來分接到 Arduino UNO/擴展板 的電壓則先經過這塊穩壓電路模組,8V 的輸入電壓調整為 5.4V 的輸出電壓,如此的好處也在於讓 Arduino UNO 主板可接受標準的 5V 電壓而不致過載。此時 MG995 舵機的 GVS (棕紅橘) 三條接線接到擴展板的接收電壓也就可以控制在約 5V 的電壓水位且具有足夠的 1~2A 的驅動電流了。

有了草圖,先放在麵包板測測看。這個穩壓電路真不錯,還可以顯示輸出的電壓,一目了然。如所料,降壓後確實可以正常驅動 MG995 舵機,非常好!
測試舵機 MG995 驅動

喔,還有個待克服的問題是這塊穩壓電路板該擺哪裡啊? 它並非是 Arduino 標準的 Shield 擴展板,所以無法疊加上去;後來想到就與 L298 擺到同一下層的壓克力板吧,所以還要量好位置然後鑽孔鎖上銅柱 (一開沒量好鑽好孔後才發現到會與舵機重疊位置,所以又只好再重新鑽孔,還真麻煩~)。接著又重新把電池盒、所有電路板的主要接線連接好,再開啟電源,這次總算 OK 了。
測試舵機 MG995 驅動

我也放了一段可正常驅動 MG995 舵機 (目前先只測試單顆)的測試影片:

還有這次電池盒不鑽孔直接鎖上銅柱,因為有突起的螺絲很容易讓電池接觸不良;我改以在下方先鎖上一塊有先量好大小再切割的壓克力板,然後再黏上雙面膠,這樣再黏上電池盒即可。
測試舵機 MG995 驅動

所以目前的進度如下圖,電路板 (Arduino UNO/擴展板 V5、L298N、穩壓電路)、電池盒 (18650x2)已全固定好,下方電路的主要接線也已連接好,同時下方舵機 (負責左右擺動)也已固定好,後續就是再把第二個舵機接上。
測試舵機 MG995 驅動

測試舵機 MG995 驅動

下一步的工作就是要來撰寫控制程式了。首先就是撰寫可以同時驅動兩顆舵機、以及輪胎轉動的測試程式;一旦沒有問題,就可以再連接藍芽遙控與超聲波感測模組了。