黑白線循跡小車利用STM32F407與三個紅外對管實現


小車循跡模塊編程思路

所用模塊: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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM