2016年9月16日 星期五

[MeArm.Rover] 循跡車

循跡車利用車子前方的紅外線感應器,偵測車體是否偏離黑線並修正前進路線,進而達到自動行進的功能。

MeArm.Rover 在車體底板前方設置有紅外線循跡模塊的鎖固孔,並且還增加了一根輔助桿,它可以讓玩家在上面鎖1~5片的紅外線循跡模塊。



一、準備材料

機構件

底板 * 1
層板 * 1
墊圈 * 2
扳手 * 1


建議您可以把壓克力表面的保護紙撕除。


機電零件

Arduino 開發板 * 1 (您可以使用 UNO 或 nano)
Arduino 擴展板 * 1
M3x12 螺絲 * 2
M3 螺帽 * 2


或是


L9110S 馬達驅動模塊 * 1
M3x10 螺絲 * 2
M3 螺帽 * 2


TT減速馬達輪胎組 * 2
馬達固定件 * 2
(本圖片只列出1套,需2套)


方向輪 * 1
M3x12+6 隔離柱 * 4
M3x8 螺絲 * 4
M3 螺帽 * 4


TCRT5000 紅外線循跡模塊 * 2
M3x30+6 隔離柱 * 2
M3x10 螺絲 * 2
M3 螺帽 * 2


杜邦線 母母頭 * 10


2節 3號 AA 電池盒 * 1 (註A)
DC5521插頭 * 1
杜邦線 母母頭 * 1 (註 B)

註A: 3號 AA 電池盒可適用於 14500 鋰電池。此處也可使用 2 節 18650 電池盒與 18650 鋰電池來代替。

註B:  把一條杜邦線切成兩半,分別接到正負極。DC5521插頭可供電給 Arduino Nano,杜邦線母母頭可供電給 L9110S 馬達驅動模塊。



二、開始組裝

Step1 把方向輪固定到底板上。
拿出下列材料與壓克力底板。

您可以使用十字起子配合扳手鎖固螺絲,固定後如下圖


Step2 把減速馬達及輪胎固定到底板上。
請拿出2套下列材料。

先將馬達的電源線焊妥,建議電源線交叉穿過透明固定帶再焊接,如此可以避免電源線被拉扯時損壞馬達的銅片。


將長螺絲穿過固定鐵件與馬達,用螺帽固定後排列在底板兩旁。此時需注意左右輪胎之胎紋方向需一致,亦即箭頭往前,如下圖



先將輪胎固定到馬達軸,然後用短螺絲將它們固定到底板上,如下圖


這是目前階段俯視圖

底視圖


Step3 固定馬達驅動板。
請拿出下列材料。

用螺絲固定到底板,如下圖



Step4 固定TCRT5000紅外線循跡模塊。
請拿出下列材料。

用螺絲固定到底板,如下圖


如果您不是使用2只紅外線循跡模塊,則是可以拿出輔助桿,



然後將多片模塊固定在上面,如下圖


Step5 組立層板。
請拿出下列材料及層板、墊片。

把螺絲穿過層板與墊片,需注意層板有 "a" 字樣需朝上,那是用來固定 Arduino UNO 的孔,如下圖


將 Arduino 鎖上,如下圖


接著鎖上隔離柱,如下圖


將整組層板插入底板,用螺絲鎖上。電池盒可放置於層板下方,如下圖


這是組立完成後的循跡車全貌,如下圖


額外說明

長墊片是用來增加摩擦力讓馬達不會輕易晃動,如果沒有必要可以不用安裝。



三、軌跡線

您可以用印表機在白紙上列印黑線,但大多數的玩家為求方便大都使用寬約 20 mm 的黑色電工帶來"繪製"循跡車用的黑線,其優點是電工帶便宜、方便且可塑性大。

軌跡線不一定要限用黑色,白色的線條也可以,只不過如果使用白色的軌跡線,那麼底色最好使用黑色。


四、電路接線

首先我們來定義車子方向,假設您坐在小車裡面,車頭朝前,則右手邊的馬達為右馬達,左手邊的馬達為左馬達。電路接線如下:

馬達                     L9110S模塊
右馬達白線         Motor_L 左槽
右馬達綠線         Motor_L 右槽
左馬達白線         Motor_R 左槽
左馬達綠線         Motor_R 右槽


Arduino                L9110S模塊
D5                        B-1A
D6                        B-1B
D9                        A-1A
D10                      A-1B

Arduino               右TCRT5000模塊
5V                        VCC
GND                    GND
D2                        D0

Arduino               左TCRT5000模塊
5V                        VCC
GND                    GND
D3                        D0



鋰電池                 L9110S模塊
正極杜邦線         VCC
負極杜邦線         GND

鋰電池                 Arduino
DC5521插頭        DC5521插座


五、程式碼

int intSpeed;

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  intSpeed = 120;
}

void loop() {
  boolean flgR = digitalRead(2);
  boolean flgL = digitalRead(3);
  Serial.print(flgL); Serial.print("  "); Serial.println(flgR);
  if(flgR == LOW) {
    analogWrite(6,intSpeed);
    analogWrite(5,0);
 
  } else {  
    analogWrite(6,0);
    analogWrite(5,0);
  }

  if(flgL == LOW) {
    analogWrite(10,intSpeed);
    analogWrite(9,0);  
  } else {
    analogWrite(10,0);
    analogWrite(9,0);
  }
  delay(10);
}


TCRT5000 在偵測到反射訊號時,D0腳位會傳回 LOW,反之傳回 HIGH。由於我們在此是以白底黑線為範例,所以當模塊偵測到黑線時會傳HIGH給Arduino,反之傳回 LOW。

由以上可知,當訊號是LOW時,車輪就應該要前進;當訊號是HIGH時,車輪就應該要停止。

除了要調整好TCRT5000紅外線循跡模塊彼此的間距,還有與地面的高度之外,也要適時地調整上面的藍色旋鈕,讓感應黑線的靈敏度達到最佳狀態。

您可以發現,雖然硬體已調整好到最佳狀態,然而小車還是走得不是很好,這是因為程式的關係,程式寫得好不好影響循跡是否順利至鉅。有一種稱為比例積分微分(proportional Integral Differential) 控制的方法,簡稱「PID」,它可以幫助小車循跡更為順利,請參詳下方「技術資料」章節。


六、另類思考

以上介紹循跡車是 2 輪在前方,如果反過來,把方向輪那端當作前方,把紅外線循跡模塊挪到那兒,如此是否會更好? 其實,MeArm.Rover 並沒有去定義哪一端是車頭哪一端是車尾。

以下介紹把方向輪那端當作前方的組裝方式:

Step1 先暫時移除層板。


Step2 用 2 只  M3x20+6 隔離柱和螺帽鎖住紅外線循跡模塊。


Step3 用 2 只 M3x8 螺絲穿過車體鎖住隔離柱。


Step4 用杜邦線母母頭 6P 穿過車體孔洞,從方向輪左右兩側出來,每 3P 與紅外線模塊相接。


Step5 將超音波模塊插入車體板。


Step6 蓋上層板,用  4 只 M3x8 鎖緊。



程式方面只要將前面程式稍微修改一下即可,這部分請您自個兒動動腦。


七、重心問題

我們在上一章節中介紹把方向輪那端當作前方,在實際循跡行走中的確有比較好的表現。然而,此時卻發生了一個問題:「輪胎打滑」,如果碰到地板是光滑的磁磚,雖然循跡車的兩個大輪胎材質雖然是橡膠,也打滑了。

經過檢視,目前重心在方向輪上,相對地後面兩個大輪胎那端就顯得太輕了。為改善這個狀況,我們可以把整組層板和電池移到輪胎那端,即可改善打滑的問題。

 這是已經將整組層板連同電池移動到輪胎那端


這是側邊隔離柱固定位置的特寫


這是後面隔離柱固定位置的特寫



用一條橡皮筋將整個層板圍住,就可以防止電池盒在車子行走時掉出。當然,如果能用魔鬼氈,防掉落效果應該會更好。


技術資料

維基百科 PID控制器 https://zh.wikipedia.org/wiki/PID%E6%8E%A7%E5%88%B6%E5%99%A8
PID 控制法 http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robots.html
Cooper Maa http://coopermaa2nd.blogspot.tw/2011/03/1.html
D2-1 循跡小車 http://pizgchen.blogspot.tw/2016/08/d2-1.html


採購資訊

1. MeArm.Rover 機械手臂自走車(機構件) http://goods.ruten.com.tw/item/show?21621791495670
2. Arduino nano 開發板 http://goods.ruten.com.tw/item/show?21637587090659
3. Arduino UNO nano 兩用擴展板 http://goods.ruten.com.tw/item/show?21628077602506
4. L9011S 馬達驅動模塊 http://goods.ruten.com.tw/item/show?21628077139062
5. TCRT5000 紅外線循跡模塊 http://goods.ruten.com.tw/item/show?21628077274837
6. 紅外線搖控器套件 http://goods.ruten.com.tw/item/show?21628077374704
7. 減速馬達輪胎組 http://goods.ruten.com.tw/item/show?21628077353565
8. 馬達固定鐵件 http://goods.ruten.com.tw/item/show?21629132997359
9. 1寸方向輪 http://goods.ruten.com.tw/item/show?21628075114513
10. 2節3號AA電池盒 http://goods.ruten.com.tw/item/show?21629164013049
11. 杜邦線 母母頭 http://goods.ruten.com.tw/item/show?21629160040023
12. 馬達電源線 http://goods.ruten.com.tw/item/show?21629148486157






沒有留言:

張貼留言