实操之STM32 F103C8T6 控制红外循迹避障模块(TCRT5000)

实操之STM32 F103C8T6 控制红外循迹避障模块(TCRT5000)

  • 一、TCRT5000工作原理
  • 二、电路图
  • 三、引脚接线
  • 四、代码
  • 1.main.c
  • 2.track.h
  • 3.track.c

  • 一、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;
    }
    
    

    作者:学习小心

    物联沃分享整理
    物联沃-IOTWORD物联网 » 实操之STM32 F103C8T6 控制红外循迹避障模块(TCRT5000)

    发表回复