实操之STM32 F103C8T6 控制红外循迹避障模块(TCRT5000)
实操之STM32 F103C8T6 控制红外循迹避障模块(TCRT5000)
一、TCRT5000工作原理
TCRT500主要涉及红外线的发射和接收,并根据接收到的反射信号强度来判断地面的颜色。红外循迹传感器模块通常由发射模块和接收模块组成。发射模块负责发射红外线,而接收模块则用于接收这些红外线的反射信号。当红外线照射到地面上时,地面会对红外线进行反射。不同颜色和物质的地面会对红外线的反射能力产生差异,这种差异为循迹车辆提供了判断行进方向的依据。
模块上有一个输出指示灯和电源指示灯,主要关注输出指示灯(开关提示)。
红外发射器一直发射红外线,红外线经发射后被接收,此时输出低电平D0=0,输出指示灯点亮LED=0。
黑色是不反射红外线,当循迹模块遇到黑线,模块输出高电平D0=1,输出指示灯熄灭LED=1。
除了遇到黑线熄灭,当距离太远红外线反射后检测不到,此时指示灯也会熄灭。
循迹时,模块离地面要近,在没有遇到黑线时确保指示灯长亮,一旦指示灯熄灭就说明遇到黑线了。
该传感器的探测距离可以通过电位器调节
调节电位器旋钮,从而控制检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。
二、电路图
三、引脚接线
c8t6 | TCR5000 |
---|---|
PA5 | D0 |
3.3V/5.5V | VCC |
GND | GND |
四、代码
1.main.c
#include "stm32f10x_gpio.h"
#include "led.h"
#include "track.h"
int main(void)
{
LED_Init(); //调用初始化LED函数,引用"led.h"后可使用
track_GPIO_Config();
while(1)
{
LED=1;//灭
if(track_Scan(track_GPIO_PORT,track_GPIO_PIN) == track_Low)LED=0;//亮
}
}
2.track.h
代码如下(示例):
#ifndef __TRAK_H
#define __TRAK_H
#include "stm32f10x.h"
#define track_GPIO_CLK RCC_APB2Periph_GPIOA
#define track_GPIO_PIN GPIO_Pin_5
#define track_GPIO_PORT GPIOA //PA5
#define track_High 1
#define track_Low 0
void track_GPIO_Config(void);
uint8_t track_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
#endif /* __TRAK_H */
3.track.c
#include "track.h"
void track_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(track_GPIO_CLK,ENABLE);
GPIO_InitStructure.GPIO_Pin=track_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(track_GPIO_PORT, &GPIO_InitStructure);
}
uint8_t track_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==track_Low)
return track_Low;
else
return track_High;
}
作者:学习小心