STM32智能小车------TCRT5000循迹


  • ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的普通大学生。
  • ⏩进入正题,最近在做小车,目前已经加入红外避障、超声波测距、红外遥控、红外循迹四个传感器,分别实现遥控切换模式、超声波控制距离、避障、循迹功能。
  • ⏩本次文章说说 循迹功能 的实现。
  • ⏩ 非常感谢大家的阅读,如果有不对的地方欢迎指正
  • ⏩ 加入小光嵌入式交流群(qq群号:737327353)免费获取博主所有资料哦!


一、原理讲解

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模式是上拉输入。
循迹代码编写,这就是根据传感器的不同情况去驱动电机,就可以完成循迹了,是不是很简单(🤡)

/********
功  能:小车进入循迹模式,遥控CH键退出循迹模式
形  参:循迹速度
返回值:无
说  明:传感器检测到白线输出0,黑线输出1。。
******/
void Track_Adjust(u16 speed)
{
	const u16 Tsp = 1000;
	u8 key = 0;
	Set_Pwm(0,0);
	while(key!=98)
	{
		//中间有黑线/没有黑线
		if((TRACK_L == 0&& TRACK_M == 1&& TRACK_R == 0)||(TRACK_L == 0&& TRACK_M == 0&& TRACK_R == 0))
		{
			Set_Pwm(speed,speed);
		}
		//右边有黑线
		else if((TRACK_L == 0&& TRACK_M == 0&& TRACK_R == 1)||(TRACK_L == 0&& TRACK_M == 1 && TRACK_R == 1))
		{
			Set_Pwm(speed+Tsp,speed-Tsp);
		}
		//左边有黑线
		else if((TRACK_L == 1&& TRACK_M == 0&& TRACK_R == 0)||(TRACK_L ==1&& TRACK_M == 1 && TRACK_R == 0))
		{
			Set_Pwm(speed-Tsp,speed+Tsp);
		}
		//不可能出现的情况
		else if((TRACK_L == 1&& TRACK_M == 0&& TRACK_R == 1)||(TRACK_L == 1&& TRACK_M == 1&& TRACK_R == 1))
		{
			
		}
		key=Remote_Scan();
	}
}

我的循迹速度是2000,然后这个重点就是转弯的速度调整,这个可以根据实际的情况设置调整,然后最后完成循迹。
然后其中有红外遥控的代码,之后会补充这篇专门讲解红外遥控的博文。(今天就肝😃)

总结

最终效果

稍后奉上视频(狗头保命)

你见过会说话的小车吗

本文仅仅简单介绍了红外循迹模块的原理和驱动代码的编写,这样就完成了智能小车的循迹功能,后面还会有手势识别传感器、红外遥控等等,去实现更多的功能,感谢阅读,如果觉得我的文章对你有帮助的话,就点个赞吧!爱了爱了(🤡)

⏩ 加入小光嵌入式交流群(qq群号:737327353)免费获取博主所有资料哦!

  • 47
    点赞
  • 275
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
五路寻迹模块简介: BFD-1000 专门设计用作黑(白)线检测的传感器,特别适合复杂黑白线、交叉黑白线的检测,它有6 路高灵敏度的红外传感器(5 路巡线、1 路蔽障),能够对黑白线准确的识别,它有如下功能和特点: 1.BFD-1000 集成5 路循迹传感器,适合复杂黑线(白线)的跟踪,对于简单的黑线(白线)寻取更不在话下。 2.BFD-1000 有一路蔽障用的红外传感器,蔽障距离可以通过滑动变阻器调节,方便有蔽障需求的机器人设计。 3.BFD-1000 有一个专门设计的触碰传感器,使得有这方面的需求机器人设计更加简便。 4.BFD-1000 输出信号全部都为数字信号,方便与单片机相连。 5.BFD-1000 全部传感器都有LED 灯作为指示,方便调试 6.BFD-1000 支持电压为3.0-5.5v 满足大多数系统需求。 五路寻迹实物展示: 黑(白)线识别五路寻迹模块技术参数: 输出形式:数字输出(高低电平),探测到黑线时为输出低电平,探测到白线时输出为高电平。 检测距离(0.5-40mm) 输入电压:3.0-5.5V 尺寸:12.8*3.0 厘米 实物购买链接:https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4... 附件内容截图: 路口寻迹例程说明: 1. 简单循迹例程 思想: 简单的循迹只用两个循迹传感器就可以实现,可以用循迹模块上面的SS2,SS3,两个传感器,当SS2 碰到黑线时可以向左转,SS3碰到黑线的时候可以向右转,就可以实现简单的循迹。例程C 代码:见“相关文件”普通循迹程序 2.“T”字交叉口循迹 思想: 寻“T” 字形的交叉线主要的思想是最边上来那两个传感器(SS1 SS5)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果没有黑线,就说明寻到了"T" 字路口。例程C 代码:见“相关文件”“T”字路口循迹程序 3.“十”字交叉口循迹 思想: 寻“十” 字形的交叉线主要的思想是最边上来那两个传感器(SS1)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果有黑线,就说明寻到了"十" 字路口。例程C 代码:见“相关文件”“十”字路口循迹程序 4.“7”字交叉口循迹 思想: 寻“7” 字形的交叉线主要的思想是左边上来那个传感器(SS1)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果没有黑线,就说明寻到了"7" 字路口。例程C 代码:见“相关文件”“7”字路口循迹程序 注意:任何复杂的循迹都可以拆分成简单的循迹来实现,复杂的循迹最重要的是找到交叉点,然后转向,至于转多少,可以用前面的那个传感器做转过黑线数目的计数。
TCRT5000循迹模块是一种用于循迹的传感器模块。它通常有四个接口,包括VCC(电源正极)、GND(电源负极)、DO(数字输出)和AO(模拟输出)。模块上有两个LED灯,一个是在通电时亮起的,另一个是在检测到黑线时熄灭的。模块还有一个可调节的部分,用于调节红外检测距离。TCRT5000循迹模块的工作原理是,红外发射器一直发射红外线,当红外线被黑线吸收时,模块输出高电平,LED灯熄灭;当红外线被白色地面反射时,模块输出低电平,LED灯点亮。通过检测模块的输出信号,可以实现小车的循迹功能。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [STM32智能小车------TCRT5000循迹](https://blog.csdn.net/qq_52608074/article/details/122020354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [循迹传感器(TCRT5000)的介绍以及使用(STM32)](https://blog.csdn.net/qq_48764574/article/details/119205455)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小光学嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值