红外循迹模块

本文详细介绍了一种用于智能小车和机器人等自动化设备的红外线避障传感器模块。该模块具备一对红外线发射与接收管,能在2至60cm范围内探测障碍物,通过电位器调节检测距离,适用于多种应用场景,如机器人避障、流水线计数及循迹等。文章还提供了传感器的参数说明、测试方法和电路图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模块描述
    此模块是为智能小车、机器人等自动化机械装置提供一种多用途的红外线探
测系统的解决方案。该传感器模块对环境光线适应能力强,其具有一对红外线发
射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面 )
时,红外线反射回来被接收管接收,经过比较器电路处理之后,同时信号输出接
口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距
离范围 2~60cm,工作电压为 3.3V-5V。该传感器的探测距离可以通过电位器调
节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避
障小车、流水线计数及黑白线循迹等众多场合。
模块参数说明
  1. 当模块检测到前方障碍物信号时,电路板上红色指示灯点亮,同时 OUT端口持续输出低电平信号,该模块检测距离 2~60cm,检测角度 35 ° ,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。
  2. 传感器属于红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。
  3. 传感器模块输出端口 OUT 可直接与单片机 IO 口连接即可,也可以直接驱动一个 5V 继电器模块或者蜂鸣器模块;连接方式:VCC-VCC;GND-GND;OUT-IO
  4. 比较器采用 LM339,工作稳定 。
  5. 可采用 3.3V-5V 直流电源对模块进行供电。当电源接通时,绿色电源指示灯点亮 。
模块接口说明( 6 16 线制)
  • 红外探头 VCC GND OUT 对应接入中控板 VCC GND INx
  • 中控板供电:模块 6p 排针接口处 VCC 外接 3.3V-5V 电压(可以直接与 5v 单片机和 3.3v 单片机相连);GND 外接 GND ;OUT1-OUT4 接单片机 IO 口
模块测试说明
  • 测试探头 :移开探头前面所有物体,且探头不要指向有阳光的地方(光线对探头有较大干扰),将探头板接上电源后用万用表测量 OUT 和 GND之间的电压,正常范围应该在 0.6v-2.5v 之间,用白纸挡在探头前,用万用表测量 OUT 和 GND之间的电压,正常范围应该接近0V.简单的说,就是用白纸挡住探头后,OUT 和GND 之间的电压会有一个明显的降低,这样就算正常。
  • 单独测试中控板:这个需要先了解一下 LM339 的工作原理,我们以第一路来简单
  • 说明一下:IN1-为定位器调节的电压输入端,IN+为探头输出的电压(就是探头OUT 与 GND 的电压),当 IN1- 电压 >IN1+电压时,对应的 1 OU1 输出的电平电压接近0v ,此时,对应的 D LED 灯会亮;当 IN1- 压 电压 < < < < IN1+电压时,对应的 1 OU1 输出的电平电压接近 5v, 此时 ,对应的 D LED 灯会点亮。这个就是整个电路工作的核心。我们根据这个原理,就可以简单的进行一个测试了,调节第一路的电位器 ,使 IN-的电压为 2.5v左右,然后根据上面的原理,分别对 IN1 接 0V 和 5V 电压 ,然后根据上面的原理,就会发现,接 OV 时,LED 灯亮;接 5v时,LED 灯灭。
  • 联机测试:按照要求将探头与中控板连接好,移开探头前面所有物体,且探头不要指向有阳光的地方(光线对探头有较大干扰),调节每一路的电位器,直到灯刚灭掉,然后用白纸遮挡探头,会发现led 会点亮,这样就算测试成功了,然后我们就可以将中控板的输出信号传入单片机进行高低电平检测了。
电路图

在这里插入图片描述
在这里插入图片描述

void xunji(void)
{
 //四路都检测到
 if(Ray1==1&&Ray2==1&&Ray3==1&&Ray4==1)
 {
  run();
  delay_ms(100);
 }
 
 //中间两路检测到
 if(Ray1 == 0 && Ray2 == 1 && Ray3 == 1 && Ray4 == 0 |   
  Ray1 == 0 && Ray2 == 0 && Ray3== 1 && Ray4 == 0 |
  Ray1 == 0 && Ray2 == 1 && Ray3 == 0 && Ray4 == 0 )
 {
  run();
  delay_ms(100);
 }
 
 //左边检测到
 if(Ray1 == 1 && Ray2 == 0 && Ray3 == 0  && Ray4 == 0 |
  Ray1 == 1 && Ray2 == 1 && Ray3 == 0  && Ray4 == 0)
 {
  left();
  delay_ms(100);
 }
 
 //右边检测到
 if(Ray1 == 0 && Ray2 == 0 && Ray3 == 0  && Ray4 == 1 |
  Ray1 == 0 && Ray2 == 0 && Ray3 == 1 && Ray4 == 1)
 {
  run();
  delay_ms(100);
 }
 
 //四路都没检测到
 if(Ray1==0&&Ray2==0&&Ray3==0&&Ray4==0)
 {
  stop();
  delay_ms(100);
 }
 
}
#include "redray.h"
#include "delay.h"

void RedRayInit(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
 
 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOG , ENABLE);
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8;//配置使能GPIO管脚
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//配置GPIO模式,输入上拉
 GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//配置GPIO端口速度
 GPIO_Init(GPIOC , &GPIO_InitStructure); 
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8;//配置使能GPIO管脚
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//配置GPIO模式,输入上拉
 GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//配置GPIO端口速度
 GPIO_Init(GPIOG , &GPIO_InitStructure); 
 }
#ifndef __REDRAY_H
#define __REDRAY_H

#define Ray1           GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_7)  
#define Ray2           GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_8)
#define Ray3           GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6)
#define Ray4           GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7)

void RedRayInit(void);
void xunji(void);

#endif
<think>好的,我现在需要帮助用户解决关于STM32四路红外循迹模块原理图设计的问题。首先,我得回忆一下用户提供的引用内容。引用1提到了四路红外寻迹小车的代码和PCB原理图,其中TC变量组合了四个传感器的信号。引用2则是五路红外循迹的代码,涉及PWM控制电机。用户现在想了解四路模块的原理图设计。 我应该先分解问题,理清原理图的关键部分。红外循迹模块通常包括红外发射管、收管、比较器电路,以及STM32的口。需要确保每个部分正确连。 首先,红外发射和收电路。发射管需要限流电阻,收管一般用光电三极管或红外收管。当遇到黑线时,反射光弱,收管导通情况变化,输出电压变化。这部分需要设计合适的电阻值,确保发射管电流在安全范围内,同时收信号能被正确检测。 下来是比较器电路。收到的模拟信号可能需要通过比较器转换成数字信号,这样STM32的GPIO可以直读取。比较器的参考电压需要调整,以适应不同的环境光条件。用户提到的代码中使用的是GPIO读取,说明可能已经将信号转换为数字高低电平,所以原理图中需要有比较器或者使用STM32的ADC模块。不过引用里的代码是直读取GPIO,可能使用的是数字输出模块,所以可能模块内部已经有比较器了。 然后是与STM32的连部分。四路传感器需要连到四个GPIO口,如引用1中的PA1、PA2、PA3、PA4,或者PB4-PB7。需要确认GPIO模式设置为输入,并且上拉或下拉电阻是否正确,以保证稳定的输入信号。例如,用户代码里使用的是GPIO_Mode_IN_FLOATING,也就是浮空输入,可能需要外部上拉电阻,否则可能会有噪声问题。但有些模块内部可能有上拉或下拉,所以原理图需要根据模块设计来定。 电源部分也需要考虑,确保红外模块的供电稳定,通常3.3V或5V,取决于模块要求。需要添加滤波电容,减少电源噪声。 此外,可能需要考虑抗干扰设计,比如添加去耦电容,合理布局走线,避免信号干扰。光电隔离可能也是一个选项,但会增加复杂度。 用户提供的引用中有代码示例,其中xunkun_init函数初始化了GPIOB的4-7引脚为浮空输入,这说明在原理图中这四个引脚连到了红外模块的输出。所以原理图需要将这四个传感器的输出连到STM32的相应GPIO,并配置为输入模式。 可能还需要考虑传感器的排列方式,比如并排安装,间距适当,以准确检测黑线。但在原理图设计中,这更多是PCB布局的问题,不过原理图需要正确反映连。 总结一下,原理图设计的关键点包括红外发射收电路、信号调理电路(比较器)、与STM32的GPIO连、电源设计以及抗干扰措施。需要确保每个部分电路正确,参数合适,并且与STM32的口正确配置。 下来需要将这些内容组织成清晰的步骤,并给出示例图,比如传感器模块的连和比较器电路。同时,根据用户提供的引用,强调GPIO的配置和信号读取方式,如TC变量的组合方法,这可能会影响原理图中信号线的布局。 可能还需要提到测试和调试,比如通过调整比较器的参考电压来适应不同环境,或者软件中处理输入信号的方式。但用户主要问的是原理图设计,所以重点在硬件连。 最后,生成相关问题,帮助用户深入理解,比如传感器选型、抗干扰方法、代码配置等。</think>### STM32四路红外循迹模块原理图设计分步说明 #### 1. **红外发射与收电路设计** - **发射部分**:每个红外发射管串联限流电阻(通常$220\Omega$-$1k\Omega$),工作电压为$3.3V$或$5V$。 $$R = \frac{V_{cc} - V_{LED}}{I_{LED}}$$ 例如:若$V_{LED}=1.2V$,$I_{LED}=10mA$,则$R= (5V-1.2V)/0.01A = 380\Omega$(选择$470\Omega$标准值)。 - **收部分**:红外收管(如光电晶体管)与上拉电阻($4.7k\Omega$-$10k\Omega$)连,输出模拟信号。当检测到黑线时,反射光减弱,收管导通程度降低,输出电压升高[^1]。 #### 2. **信号调理电路(关键)** - **比较器电路**:使用LM393等芯片将模拟信号转换为数字电平。 - 同相输入端收管输出信号,反相输入端可调参考电压(通过电位器分压)。 - 输出端通过上拉电阻($1k\Omega$)连至$3.3V$,直输出高低电平给STM32 GPIO。 - **示例电路**: ```plaintext VCC ──┬─红外发射管─┬─ R ── GND │ │ └─红外收管─┴─ R ── LM393+ LM393- ── 电位器分压 LM393 OUT ── STM32 GPIO ``` #### 3. **STM32口设计** - **GPIO配置**:将四路数字输出信号连至STM32的四个GPIO引脚(如PB4-PB7),并设置为**浮空输入模式**(需外部上拉电阻)或**上拉输入模式**(代码中启用内部上拉)[^1]。 ```c // 示例代码中的GPIO初始化(引用1) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 浮空输入需外部上拉 ``` - **信号组合**:通过加权计算将四路信号合并为十进制数(如`TC = 1000*LL1 + 100*LL2 + 10*RR2 + RR1`)[^1]。 #### 4. **电源与抗干扰设计** - **电源滤波**:每个红外模块的$V_{CC}$引脚并联$0.1\mu F$陶瓷电容,减少高频噪声。 - **光电隔离**(可选):在信号线上添加光耦隔离(如TLP521),防止电机干扰影响传感器信号。 #### 5. **原理图示例** ```plaintext +-----------------+ +-----------------+ | 红外发射管 | | 红外收管 | | 阳极─┬─R─┬─VCC | | 集电极─┬─R─┬─VCC | | │ │ | | │ │ | | 阴极─┴───┴─GND | | 发射极─┴───┴─GND | +-----------------+ +-----------------+ | +─── LM393+ | +─── LM393- ─── 可调电压 | +─── LM393 OUT ── STM32 GPIOx ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值