STM32实现红外感应传感器功能

原理

人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10um 左右的红外线。人体发射的 10um 左右的红外线通过菲涅尔滤光片增强后聚集到红外感应源上,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路检测处理后就能产生报警信号。

实物图(正反面)

型号:HC-SR50
在这里插入图片描述

传感器特性

工作电压范围 直流电压 4.5-20V
电平输出 高 3.3 V /低 0V
触发方式 L 不可重复触发/H 重复触发
延时时间 0.5-200S(可调)
封锁时间 2.5S(默认)可制作范围零点几秒-几十秒
感应范围 3米到7米

实验

全自动感应 :人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出 0-3 次,一分钟后进入待机状态。

如果检测到红外,则LED灯亮,否则灭。
模块数据输出接到PA4

  • 中断功能
  • 配置中断向量控制器NVIC
  • 配置外部中断口
  • 实现中断函数

中断控制器

#define SR501_INT_GPIO_PORT         GPIOA
#define SR501_INT_GPIO_CLK          (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO)
#define SR501_INT_GPIO_PIN          GPIO_Pin_4

#define SR501_INT_EXTI_PORTSOURCE   GPIO_PortSourceGPIOA
#define SR501_INT_EXTI_PINSOURCE    GPIO_PinSource4
#define SR501_INT_EXTI_LINE         EXTI_Line4
#define SR501_INT_EXTI_IRQ          EXTI4_IRQn

#define SR501_IRQHandler            EXTI4_IRQHandler


//嵌套中断向量控制器
static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  /* 中断控制器组*/
  NVIC_InitStructure.NVIC_IRQChannel = SR501_INT_EXTI_IRQ;//外部中断线
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  /*优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  /* 子优先级*/
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  /* 使能 */
  NVIC_Init(&NVIC_InitStructure);
}

外部中断口

//IO 为EXIT外部中断口
void EXTI_SR501_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure;
	
	RCC_APB2PeriphClockCmd(SR501_INT_GPIO_CLK,ENABLE);/*时钟*/											
	NVIC_Configuration();/* 配置NVIC中断*/
	
    GPIO_InitStructure.GPIO_Pin = SR501_INT_GPIO_PIN;//gpioy引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  /*输入方式 浮空 */	
    GPIO_Init(SR501_INT_GPIO_PORT, &GPIO_InitStructure);

	/* 信号源 */
    GPIO_EXTILineConfig(SR501_INT_EXTI_PORTSOURCE, SR501_INT_EXTI_PINSOURCE); 
    EXTI_InitStructure.EXTI_Line = SR501_INT_EXTI_LINE;//中断线
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	/* 中断模式 */
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;/* 上升沿 */
    EXTI_InitStructure.EXTI_LineCmd = ENABLE; /* 使能 */	
    EXTI_Init(&EXTI_InitStructure);
}

中断函数

void SR501_IRQHandler(void)
{
	if(EXTI_GetITStatus(SR501_INT_EXTI_LINE) != RESET) 
	{
		LED1_TOGGLE;
		EXTI_ClearITPendingBit(SR501_INT_EXTI_LINE);     
	}  
}

LED灯配置

#define LED1_GPIO_PORT    	GPIOB			         
#define LED1_GPIO_CLK 	    RCC_APB2Periph_GPIOB	
#define LED1_GPIO_PIN		GPIO_Pin_5			

void LED_GPIO_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd( LED1_GPIO_CLK , ENABLE);
		GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;	
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
		GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);	
		GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
}

主函数

int main(void)
{
	LED_GPIO_Config();
	EXTI_SR501_Config(); 	
	while(1)                            
	{
	}
}

参考
野火-HC-SR501人体红外感应模块热释电红外传感器.pdf

### 第二十届全国大学生智能汽车竞赛中的电子元器件和技术规格 在全国大学生智能汽车竞赛中,所使用的电子元器件和技术规格通常会随着每届赛事的变化而有所调整。以下是基于当前已知的信息以及往届比赛的技术报告整理的内容。 #### 核心控制器 根据以往的比赛经验,核心控制器的选择范围广泛,但主流方案多采用高性能微控制器单元(MCU)。例如,在第十八届比赛中提到的核心控制器为宏晶公司生产的 STC32G12K128 单片机[^2]。然而,具体到第二十届比赛,官方并未明确指定唯一型号,而是允许参赛队伍依据规则自行选择适合的 MCU 型号。常见的可选品牌包括但不限于恩智浦(NXP)、意法半导体(STM32系列),以及其他支持高效实时处理能力的产品。 #### 传感器组件 对于传感器部分,传统上会涉及多种类型的检测设备来实现环境感知功能。以电感电容对为例,在某些特定场景下被用来构建LC振荡电路从而完成信号采集任务;如引用资料里提及到了一组参数值分别为10.5 mH 和6.2 nF 的元件组合用于形成关键传感模块的一部分。不过需要注意的是,这仅作为一个实例展示,并不代表本届大赛固定配置需求。 另外还有其他种类丰富的感应装置可供选用,比如红外反射式光电开关、超声波测距仪等等,它们各自适用于不同路况条件下的数据获取工作。最终决定取决于实际应用场景的要求以及团队设计策略考量因素综合评估结果。 #### 动力驱动系统 动力方面主要依赖直流电机配合相应驱动芯片组成完整的执行机构。针对小型化便携型车辆而言,一般倾向于使用效率高且体积小巧轻便的动力源解决方案。至于具体的马达类型及其配套控制IC,则需参照最新版次赛项指南文件内的相关规定条款予以确认。 ```python # 示例代码片段:简单的PWM调速逻辑演示 import machine pwm = machine.PWM(machine.Pin(4)) pwm.freq(500) # 设置频率为500Hz duty_cycle = int(input("Enter duty cycle (0-1023): ")) if 0 <= duty_cycle <= 1023: pwm.duty(duty_cycle) else: print("Invalid input, please enter a value between 0 and 1023.") ``` 上述脚本展示了如何利用MicroPython框架通过脉宽调制(PWM)技术调节连接至GPIO端口上的外部负载的工作状态变化过程。此方法常应用于各类机器人项目当中,其中包括我们的主题——智能小车平台之上。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

为了维护世界和平_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值