小車循跡模塊編程思路
所用模塊:LM399紅外對管循跡模塊
特征:可同時搭載4個紅外對管,進行黑白線檢測
檢測:當它探尋到黑線時候,DX口輸出TTL電平接近於VCC電壓
當它探尋到白線時候,DX口輸出TTL電平近似為0.1V
實現功能:
讓小車始終沿着黑線跑動,可以沿着黑線轉彎(彎度測試),在黑線上可以設置斷點,長度自己設定,路過間斷線時,依然可以自主循跡到有黑線位置,並繼續跑動。
初步想法:
無論是兩個輪子的解構還是四輪結構,利用后面兩個輪子作為主動輪,前面兩個輪子作為從動輪。所以就得實現對后面兩個電機的控制,需要用到一個L298 模塊以及兩個直流電機,他就得有四個模式:
1.直線行駛:兩個電機轉速相同
2.左轉彎:左邊電機轉速<右邊電機轉速
3.右轉彎:左邊電機轉速>右邊電機轉速
4.停止:左右兩個電機都得同時停止
5.后退:左右兩個電機轉速相同,
選用三個紅外對管進行循跡。設定左邊右邊中間的紅外對管輸出電平分別為L,R,M.
1.L=R=0,M=1,直行
2.M=L=1,R=0,左轉
3.M=R=1,L=0,右轉
4.M=L=0,R=1,右轉
5.M=R=0,L=1,左轉
6.M=R=L=0, 后退/停止
開始編程:
1.配備三個IO口,進行三路循跡光電對管的TTL電平讀取。
PA2:L左邊光電對管數據讀取
PA3:M中間光電對管數據讀取
PA4:R右邊光電對管數據讀取
2.得到的數據,反饋到光電處理函數:void guangdianchuli(void)
void guangdianchuli(void)
{
L=R=0,M=1,直行
M=L=1,R=0,左轉
M=R=1,L=0,右轉
M=L=0,R=1,右轉
M=R=0,L=1,左轉
M=R=L=0, 后退/停止
}
3.編寫電機控制程序
首先需要分別控制兩個電機,需要兩路PWM
需要的定時器:TIM3
需要的IO口:PA6(TIM3_CH1),PA7(TIM3_CH2)
兩路PWM分別控制L298N的使能端,控制它的占空比來控制電機的轉速,以及直流電機轉向。
A.直行函數:void motor_straight(void)
B.左轉彎函數:void motor_left(void)
C.右轉彎函數:void motor_right(void)
D.后退函數:void motor_retreat(void)
E.停止函數: void motor_stop(void)