文章目录
-
- 一、原理讲解 1.实物图
2.工作原理:
3.接线:
二、软件驱动代码 1.接口定义
2.驱动函数
总结 最终效果
- 一、原理讲解 1.实物图
- ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的普通大学生。
- ⏩进入正题,最近在做小车,目前已经加入红外避障、超声波测距、红外遥控、红外循迹四个传感器,分别实现遥控切换模式、超声波控制距离、避障、循迹功能。
- ⏩本次文章说说 循迹功能 的实现。
- ⏩ 非常感谢大家的阅读,如果有不对的地方欢迎指正
一、原理讲解
1.实物图
这种是单路循迹模块,有四个接口,VCC、GND就不用说了,DO就是它的输出信号,然后AO口(模拟信号输出)。
我们可以看到上面有两个LED,一个是接上VCC、GND通电之后就亮了,另外一个没有遇到黑线就亮,DO口输出一个低电平,遇到黑线就熄灭,同时DO口输出一个高电平。
上面还有一个可以调节的东西,它可以调节红外检测距离。
当然还有一种就是五路循迹模块,这个可以少接几个VCC、GND,然后有五个输出口,也就相当于单个的DO口,然后他没有可调节的东西。我用的是三个单路循迹,别问为什么,问就是五路循迹被我烧了。。。
2.工作原理:
工作电压 3.3V-5V
检测范围:1mm-25mm
输出形式 :数字开关量输出(0 和 1)
TCRT5000 传感器的红外发射二极管不断发射红外线,当发射出的红外
线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于
关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;
被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红
外接收管饱和,此时模块的输出端为低电平,指示二极管被点亮。
3.接线:
1、VCC:接电源正极(3-5V)
2、GND:接电源负极
3、DO:TTL 开关信号输出 (GPIO口)
4、AO:模拟信号输出
二、软件驱动代码
1.接口定义
我选的是PA5,PA4,PA3分别作为左边、中间、右边黑线的检测
#define TRACK_PORT GPIOA//选择A端口
#define TRACK_PORT_CLK RCC_APB2Periph_GPIOA//端口A时钟
#define TRACK_INFRARED_L2_PIN GPIO_Pin_5//左传感器对应的引脚
#define TRACK_INFRARED_M_PIN GPIO_Pin_4//中间传感器对应的引脚
#define TRACK_INFRARED_R2_PIN GPIO_Pin_3//右传感器对应的引脚
#define TRACK_L PAin(5)
#define TRACK_M PAin(4)
#define TRACK_R PAin(3)
2.驱动函数
GPIO初始化:
void Track_Init(void)//循迹端口初始化
{
GPIO_InitTypeDef GPIO_InitStructure;//GPIO结构体定义
RCC_APB2PeriphClockCmd(TRACK_PORT_CLK ,ENABLE);//打开端口时钟
GPIO_InitStructure.GPIO_Pin = TRACK_INFRARED_M_PIN | TRACK_INFRARED_L2_PIN
| TRACK_INFRARED_R2_PIN;//配置传感器读取引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//配置为输入上拉模式
GPIO_Init(TRACK_PORT,&GPIO_InitStructure);//初始化端口
}
注意:GPIO模式是上拉输入。
循迹代码编写,这就是根据传感器的不同情况去驱动电机,就可以完成循迹了,是不是很简单(
评论(0)
您还未登录,请登录后发表或查看评论