问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32开发详解:红外循迹、避障与光电门模块

创作时间:
作者:
@小白创作中心

STM32开发详解:红外循迹、避障与光电门模块

引用
CSDN
1.
https://m.blog.csdn.net/sikimayi/article/details/144526721

本文详细介绍了STM32开发板中常用的三种红外感应模块:红外循迹模块、红外避障模块和光电门模块。文章从原理到代码实现,为读者提供了全面的指导。

红外感应模块在各类机器人竞赛和自动化项目中应用广泛,本文将详细介绍三种常见的红外感应模块:红外循迹模块、红外避障模块和光电门模块。我们将从原理、接线方式到代码实现,为读者提供全面的指导。

红外循迹模块

红外循迹模块常用于让小车按照指定路线移动的场景。其工作原理是通过检测地面路线的颜色差异来控制小车的移动方向。


运行原理

TCRT5000传感器的红外发射二极管不断发射红外线。当发射出的红外线没有被反射回来或反射强度不够时,红外接收管处于关断状态,模块输出高电平;当检测到黑色或深色物体时,红外线被充分反射,红外接收管饱和,模块输出低电平。

简而言之:

  • 检测白色或浅色时,指示灯亮,输出信号为0;
  • 检测黑色或深色时,指示灯灭,输出信号为1。

注:模块上的蓝色小方块是电位器,可用于调整灵敏度。

接口说明

  • VCC:外接3.3V-5V电压
  • GND:外接GND
  • AO:输出模拟信号
  • DO:输出数字信号

实际接线方式:

  • VCC 接 VCC
  • GND 接 GND
  • AO 不接线
  • DO 接 PB12

代码实现

#include "stm32f10x.h"

void xunji_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    GPIO_SetBits(GPIOB, GPIO_Pin_12);
}
int xunji_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12);
}

红外避障模块

红外避障模块用于检测前方障碍物,常用于机器人避障系统。

运行原理

红外避障模块包含一个红外发射器和一个红外接收器。发射器发射红外线,遇到障碍物后被反射回接收器。接收器内部的比较器(如LM393)会根据接收到的信号强度输出高低电平。

注:模块上的蓝色小方块是电位器,可用于调整灵敏度。

接口说明

  • VCC:外接3.3V-5V电压
  • GND:外接GND
  • OUT:输出信号

实际接线方式:

  • VCC 接 VCC
  • GND 接 GND
  • OUT 接 PB13

代码实现

#include "stm32f10x.h"

void bizhang_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    GPIO_SetBits(GPIOB, GPIO_Pin_13);
}
int bizhang_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}

光电门模块

光电门模块用于检测物体是否通过光束,常用于计时和检测场景。

运行原理

光电门模块包含一个发射器和一个接收器。当发射器发出的光束被物体遮挡时,接收器无法接收到光信号,从而产生电信号。

接口说明

  • VCC:外接3.3V-5V电压
  • GND:外接GND
  • AO:输出模拟信号
  • DO:输出数字信号

实际接线方式:

  • VCC 接 VCC
  • GND 接 GND
  • AO 不接线
  • DO 接 PB14

代码实现

#include "stm32f10x.h"

void photogate_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    GPIO_SetBits(GPIOB, GPIO_Pin_14);
}
int photogate_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14);
}

总结

本文详细介绍了三种红外感应模块的工作原理、接线方式和代码实现。这些模块在机器人竞赛和自动化项目中应用广泛,掌握它们的使用方法对嵌入式系统开发者来说非常有帮助。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号