線路跟隨機器人因其簡單性而成為學生和初學者中流行的機器人項目之一。它遵循一條線,黑色或白色,具體取決于您如何對微控制器進行編程。在這里,我們使用德州儀器的MSP430 啟動板制作一個線路跟隨機器人,它遵循黑線。
所需材料
德州儀器 (TI) 的 MSP430G2 啟動板
L298D 電機驅動模塊
連接線
底盤,輪子,過山車
Energia IDE
電源 (3.3v) 和 5v-12v
線路跟隨器的概念
線跟隨器的概念與光有關。我們在黑白表面上使用了光的行為。當光線落在白色表面上時,它幾乎會完全反射,如果是黑色表面,光線會被黑色表面吸收。這種解釋的光行為用于該線跟隨機器人。
?
在這個基于 MSP430 的線路跟隨機器人中,我們使用了紅外發射器和紅外接收器,也稱為光電二極管。它們用于發送和接收光。紅外透射紅外光。當紅外線落在白色表面上時,它會被反射回來并被光電二極管捕獲,從而產生一些電壓變化。當紅外光落在黑色表面上時,光被黑色表面吸收,沒有光線被反射回來,因此光電二極管不會接收任何光或光線。要了解有關紅外傳感器的更多信息,請點擊鏈接。
在這個基于 MSP430 的線路跟隨機器人中,當傳感器檢測到白色表面時,MSP 得到 1 作為輸入,當感應黑線 MSP 得到 0 作為輸入時。
電路說明
我們可以將全線跟隨機器人分為不同的部分,如傳感器部分、控制部分和驅動器部分。
傳感器部分:本節包含紅外二極管、電位計、比較器(運算放大器)和 LED。電位計用于在比較器的一個端子上設置基準電壓,紅外傳感器檢測線路并在比較器的第二個端子上提供電壓變化。然后比較器比較兩個電壓并在輸出端產生數字信號。在本電路中,我們為兩個傳感器使用了兩個比較器。LM358用作比較器。LM358 內置兩個低噪聲運算放大器。
控制部分:MSP430啟動板用于控制隨行機器人的整個過程。比較器的輸出連接到數字引腳P1_3和 MPS430 啟動板的P1_4。MSP430 快速啟動板讀取這些信號,并將命令發送到驅動電路以驅動線路跟隨器。
驅動程序部分:驅動器部分由電機驅動器和兩個直流電機組成。電機驅動器用于驅動電機,因為 MSP430 啟動板不能為電機提供足夠的電壓和電流。因此,我們增加了一個電機驅動電路,為電機提供足夠的電壓和電流。在這里,我們使用L298d驅動器來驅動直流電機。MSP430 快速啟動板向此電機驅動程序發送命令,然后驅動電機。
我們開發了使用不同 Micrcontroller 的線路跟隨機器人:
使用8051微控制器的線路跟隨機器人
使用Arduino的線路跟隨機器人
使用樹莓派的線跟隨機器人
使用PIC微控制器的線路跟隨機器人
使用MSP430的隨線機器人的工作
線路跟隨器的工作非常有趣。線路跟隨機器人使用傳感器感應黑線,然后將信號發送到 MSP430 啟動板。然后 MSP430 啟動板根據傳感器的輸出驅動電機。
在這個項目中,我們使用兩個紅外傳感器模塊,即左傳感器和右傳感器。當左右傳感器都感應到白色時,機器人向前移動。
如果左側傳感器出現在黑線上,則機器人轉向左側。
如果右傳感器感應到黑線,則機器人向右轉動,直到兩個傳感器都位于白色表面。當白色表面出現時,機器人再次開始向前移動。
如果兩個傳感器都位于黑線上,則機器人停止。
電路圖
這款MSP430 線路跟隨機器人的電路非常簡單。比較器的輸出直接連接到 MSP430 快速啟動板的數字引腳編號p1_3和P1_4。電機驅動器的輸入引腳 IN1、IN2、IN3 和 IN4 分別連接到 MSP430 Launchpad 的數字引腳 P1_5、P2_0、P2_1 P2_2。一個電機連接在電機驅動器OUT1和OUT2的輸出引腳上,另一個電機連接在OUT3和OUT4上。這里我們使用3.3v電源為除電機驅動器模塊以外的整個電路供電。我們為電機驅動器模塊提供了 8v。用戶可以使用5v-12v。
?
您還可以構建自己的 IR 模塊,就像我在 Perf Board 上構建的那樣。以下是紅外模塊的電路:
編程說明
完整的程序和視頻可以在本文末尾找到。
在程序中,首先,我們定義傳感器和電機的輸入和輸出引腳。然后為線路跟隨器的方向定義一些宏,然后編寫指令來選擇傳感器輸出
注意:傳感器可能是低電平有效或高電平有效,因此首先檢查傳感器的輸出是什么,然后通過注釋或取消注釋 activeLowMode 來選擇指令。對于活動高電平,請注釋活動低模式宏。
#define l_sensor P1_3
#define r_sensor P1_4
int pins[4]={P1_5,P2_0,P2_1,P2_2};
#define forward 0x05
#define left 0x06
#define right 0x09
#define stop 0x00
//#define activeLowMode
#ifdef activeLowMode
int res[4]={forward,left,right,stop};
#else
int res[4]={stop,right,left,forward};
#endif
之后,在設置功能中,我們為傳感器和電機引腳提供方向。然后在循環功能中,我們檢查輸入并將輸出發送到電機驅動器模塊以運行電機。
void setup()
{
for(int i=0;i<4;i++)
pinMode(pins[i], OUTPUT);
pinMode(l_sensor, INPUT);
pinMode(r_sensor, INPUT);
}
void loop() { ?int sense=(digitalRead(l_sensor)<<1) | digitalRead(r_sensor); ?for(int i=0;i<4;i++) ? ?digitalWrite(pins[i], (res[sense]>>i) & 0x01); }
我們使用 MSP430 啟動板讀取此行追隨者中的四個條件。我們使用了兩個傳感器,即左傳感器和右傳感器。
條件:高電平有效輸出
?
輸入 | 輸出 |
運動 機器人的 |
||||
左傳感器 | 正確的傳感器 | 左電機 | 右電機 | |||
LS | RS | 微型企業 | 彩信 | 馬幣1 | 馬幣2 | ? |
0 | 0 | 0 | 0 | 0 | 0 | 停 |
0 | 1 | 1 | 0 | 0 | 0 | 右轉 |
1 | 0 | 0 | 0 | 1 | 0 | 左轉 |
1 | 1 | 1 | 0 | 1 | 0 | 向前 |
?
#define l_sensor P1_3
#define r_sensor P1_4
int pins[4]={P1_5,P2_0,P2_1,P2_2};
#define forward 0x05
#define left 0x06
#define right 0x09
#define stop 0x00
//#define activeLowMode
#ifdef activeLowMode
int res[4]={forward,left,right,stop};
#else
int res[4]={stop,right,left,forward};
#endif
void setup()?
{
for(int i=0;i<4;i++)
pinMode(pins[i], OUTPUT);
pinMode(l_sensor, INPUT);
pinMode(r_sensor, INPUT);
}
void loop()?
{
int sense=(digitalRead(l_sensor)<<1) | digitalRead(r_sensor);
for(int i=0;i<4;i++)
digitalWrite(pins[i], (res[sense]>>i) & 0x01);
}
?
?
評論
查看更多