保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
保姆級的Arduino循跡小車研發日志及一些坑
- 循跡小車的研發日志
- 技術設計路線
- 硬件部分
- 簡單的TCRT5000
- 玄妙的L298N
- 安裝部分
- 軟件部分
- 結語
- 成品圖:
- 完整代碼
循跡小車的研發日志
開發要求如下:
引言:為什么會用到米思齊這個青少年編程軟件是有兩個原因:
技術設計路線
下面附上我的大致思路:(中途有所修改)
在開發過程中,看到師弟師妹的做法有用排列的方法來實現的,也有用分情況觸發來實現的,也不失為一種好辦法。(排列指的是列出24=16,16種可能性之后再一個個加判斷條件;分情況觸發指的是用一些特殊的位置進行判斷,然后分段分析地圖。)
但下面為我目前想到最簡單的代碼,調用盡量少的函數、盡量少的判斷條件。
硬件部分
簡單的TCRT5000
TCRT5000紅外循跡傳感器的發射二極管可以不斷的發射紅外線,通過檢測反射回來的紅外線的強大進行判斷是否處于黑線上。當指示燈一直處于熄滅狀態也就是沒有檢測到反射,即檢測到黑色,此時模塊輸出端為高電平1;反之,指示燈點亮時為檢測到反射,此時模塊輸出端為低電平0,即檢測到白色。
需要3.3-5V供電。
資料下載鏈接:
https://pan.baidu.com/s/1Dqri3AanZbPhnMMCU1HZRQ
提取碼:1234
在本設計路線中,用到四個TCRT5000,且排放方式在簡易裝配圖中有畫出。
玄妙的L298N
L298N作為直流步進電機驅動模塊的主驅動芯片,所以該模塊就簡稱為L298N了,該模塊內置78M0通過驅動電源部分取電工作,因此當大于12V驅動電壓是,應該使用外置的5V邏輯供電。
在產品介紹中也看到了,L298N不僅價格親民,接線也很簡單,邏輯也沒什么毛病,那為什么說L298N這個直流電機驅動模塊玄妙呢?大致分成以下幾個說法:
解決方法如下:
如果只是平時自己玩玩這個小車,千萬不要這么傻用單電源單驅動的方式,直接雙電源雙驅動,電壓穩定之余PWM調節轉換后也是一樣的轉速!!
資料下載鏈接:
https://pan.baidu.com/s/1teVnq1LJ3VTQ55Lj8gTnFg
提取碼:1234
安裝部分
掏個洞,走線更好看。
輪子是外八的,更穩定一些。原因如下:
千萬注意!!!!!L298N要用一個木板跟Arduino隔開!!!不然可能短路!!!
軟件部分
在通過分析比賽賽道后了解到全部彎道都是左轉,因此我們將代碼分成4種主要判斷條件。
其中直行最為關鍵,因此我們用3個主要的邏輯判斷是否在走直線,并且他能走完直線的巡線。
寫入新的函數,分別是直行,直行左轉,直行右轉。
void Forward() {analogWrite(5,120);analogWrite(6,140);digitalWrite(4,LOW);//我采用的是IN1 IN3作為PWM輸入,沒有用到ENA ENBdigitalWrite(7,LOW); } void Forwardturnleft() {analogWrite(5,40);analogWrite(6,120);digitalWrite(4,LOW);digitalWrite(7,LOW); } void Forwardturnright() {analogWrite(5,120);analogWrite(6,40);digitalWrite(4,LOW);digitalWrite(7,LOW); }當出現到十字路口時邏輯也應該判斷為直走,因此我們需要加入判斷全黑時直行。
LL==1 && L==1 && R==1 && RR==1;//識別到全黑,直走;縱觀全圖,可以發現:幾乎每一個十字路口即(全黑)都是一次重要的轉折點。因此我們可以將全黑的情況設置為計數;加入一個新的判斷函數即可
void Timer() {a=a+1;Serial.print(a);delay(300); }上訴的幾個函數并不能完美的通過直角彎,因此加入新判斷:
LL == 1//大左轉進入直角彎道后,會進入到虛線部分,虛線部分會因為我們前面程序檢測到全白直行,導致沖出賽道,因此我們需要在這時候進入新的循環,也就是可以通過前面函數Timer中跳轉進入循環。
且設置全白為微右調整,同時以防車子左微調會出去,可以在左微調時加入延時;
代碼如下:
在最后一個十字路口我加了一個加速(可加可不加)
if(a==6){if(L==0 && R==0)//均未檢測到黑線Speedup();if(L==1 && R==0 && LL==0)//左側檢測到黑線,右側沒有,所以要左轉Forwardturnleft();if(L==0 && R==1 && RR==0)//右側檢測到黑線,左側沒有,所以右轉Forwardturnright(); }結語
Emmm小車的結構、代碼可能都不是最優的。希望各位大佬可以指正修改,也歡迎大家關注我們的公眾號,一起分享關于開源機器人的項目和見解!!
成品圖:
完整代碼
提取碼:open
如果崩了請聯系我
總結
以上是生活随笔為你收集整理的保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: De Casteljau算法
- 下一篇: 工作387-vant控制日期范围