STM32f4日記8之四輪三路尋跡小車實驗(小車實驗二:紅外模塊檢測尋跡(左拐,右拐,前進,停止))

板子:stm32f407zgt6正點原子迷你版
作者:shawn
可咨詢QQ:965798711(完整代碼附在資源里點這里)
2021.2.14(大年初三)
19:04
All rights reserved
//
如果你覺得對你有幫助,請點贊同,這對我很重要,謝謝,
//
一、硬體介紹
基本結構:上下兩層小車底盤,四個輪子,四個馬達

L298N模塊X2

12V鋰電池

紅外檢測模塊X3

二、核心模塊講解
1.紅外檢測模塊是此尋跡小車的眼睛
三個紅外檢測模塊的控制是小車成敗的關鍵
作業電壓:3.3V~5V
原理:
插電之后若發出去的紅外線沒有被接收到那么兩個led燈一個亮一個不亮,OUT口回傳一個高電平
若收到反射回來的紅外,兩個燈都亮,OUT口就回傳一個低電平
那么對于黑色賽道,發射出去的紅外就被黑線吸收了,此時OUT口就回傳一個高電平
2.L298N模塊的講解可以看我之前一篇文章點這里
三、代碼原理

俯視圖(doge)
前面三個紅外檢測模塊
車身兩個方塊是L298N
對于一個操場形狀的賽道

我們來模擬幾種情況(下面的圖片不是四輪小車的圖但是不影響我們對三路紅外的分析)
1、正常前進

三個模塊的電平為0,1,0,此時正常行駛
2、左側檢測到黑線

電平為1,0,0
此時軌道偏離,
調整:向左拐直到中間檢測到黑線
3、右側檢測到黑線
電平為0,0,1
此時軌道偏離,
調整:向右拐直到中間檢測到黑線
4、右中側檢測到黑線
電平為0,1,1
此時軌道偏離,
調整:后部分向右拐直到中間檢測到黑線
5、左中側檢測到黑線
電平為1,1,0
此時軌道偏離,
調整:后部分向左拐直到中間檢測到黑線
6、全部檢測到黑線
電平為1,1,1
此時到達終點,
調整:停止

6、電平其他情況
電平:1,0,1
左右兩側黑線
這種情況不存在
電平0,0,0
狀態為跑偏
調整:過5s如果再無檢測就停止
四、引腳分配與連接
一個L298N一共6個腳,兩個使能腳,四個電平輸入腳,使能腳給定時器
四個電平輸入腳給PF1,2,4,6
另一個L298N,四個電平輸入腳給PC0,1,2,8,9
開四個定時器TIM3,4,11,13,PWM頻率給10KHZ,占空比80%
三個紅外檢測模塊OUT口分配給PE0,1,2
這樣可以通過位操作來控制這幾個IO口
五、代碼撰寫
給出最重要的代碼塊尋跡控制
void Track_control(void)
{
if(Track_Input==Not_Black)
{
if(Stop_Flag==1)
{
Stop();
}
else
Turnfoward();
}
else
{
switch(Track_Input)
{
Stop_Flag=0x0;
Not_Find_Black_flag=0;
case Middle_Black:
Turnfoward();
break;
case Right_Black:
case Right_Middle_Black:
Turnright();
break;
case Left_Black:
case Left_Middle_Black:
Turnleft();
break;
default:
Turnfoward();
}
}
}
六、其他
其實也可以采用電磁尋跡來做,電磁模塊反應速度跟快更準更加靈敏
作者:shawn
可咨詢QQ:965798711(完整代碼附在資源里點這里)
2021.2.14(大年初三)
19:04
All rights reserved
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259816.html
標籤:其他
上一篇:Qt開發Activex筆記(二):Qt呼叫Qt開發的Activex控制元件
下一篇:試題 演算法提高 盾神與積木游戲
