首页 > 代码库 > 黑白线循迹小车利用STM32F407与三个红外对管实现

黑白线循迹小车利用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)

黑白线循迹小车利用STM32F407与三个红外对管实现