夏天温度很高时,通常将空调温度调较低、风速调较大以满足室内的“冰凉温度”。通常空调正吹风口处温度较较远区域低1~2℃,人员靠近空调吹风口2~3 米处感官上会有较为显著的骤冷。为了改善室内人员体感舒适度,可以在空调吹风口处附近部署人体感应模块。
使用G3507作为主控芯片,对人体感应模块进行实时状态监测。当室内人员到达监测点区域前将当前空调的风速、温度调整为最佳值。直至室内人员离开监测点区域后,空调风速、温度调整为默认设置。空调风速、温度调节由TI LP-G3507控制红外发射头发送相应红外指令完成。
通过开启M0G3507 主控外部中断功能来响应24G人体感应模块输出的状态电平,高电平表示人体感应模块监测范围内有人,低电平表示无人。外部产生高电平后主控芯片立即捕获到该类型中断,启用定时器产生PWM信号来驱动红外发射头将空调升温降速IR 指令发射出去,同时红色LED 持续闪烁。直到检测低电平时将红色LED 设为长亮,低电平时长持续3 秒后熄灭红色LED,此时对外发射原设空调运行参数IR 指令,绿色LED 为常亮。即有人状态下红色LED 长闪烁,无人状态下绿色LED 常亮,有了LED 灯的状态显示,就很直观了解到当前系统运作时的状态。此外,通过按键S1 能够直接进行模式切换,在设置模式下可以更改空调运行参数。
在设置模式下,空调遥控对准红外接收头发送默认运行参数(空调吹风口附近无人)
在运行模式下若有人员到达空调吹风口处,立即发送红外指令(26℃、一档风速)
24G人体感应模块的有效监测距离是0.75 m到8 米,监测覆盖角度为120°(与圆锥的锥角类似)其中监测距离可以修改,这里监测距离设为0.75m,实际应设为2~3m
监测灵敏度可设置范围为10~100,实验中发现灵敏度不低于40 时且监测距离小于2 m,该模块的人体监测效果很不错
G3507 MCU在本方案设计中有着诸多应用价值,尤其是定时器PWM 信号产生、外部中断响应处理,红外发射信号的调制有多种方式,本方案采用的红外信号调制为当红外数字编码含低电平信号就产生PWM 信号驱动IR 发射管,高电平就停止PWM 信号产生,这是由IR 接收管的开漏接收模式决定的低电平调制模式。
对于红外遥控信号解码和人体感应模块状态电平处理,这里分别开启了两个外部中断进行相应处理。
除此之外,整个程序运行主要由中断响应进行逻辑处理,在空闲状态下通过__WFI 指令进入休眠模式,当触发外部中断后则退出休眠模式,逐步降低了系统功耗。
功能一是判断人员存在状态,该状态由外部人体感应模块输出高低电平决定。对于3507 MCU,其PB2 引脚检测到外部信号出现上升沿即为有人状态,出现下降沿并延时3 秒PB2 电平仍为低电平则判断为无人状态。
功能一启用了G3507 内部GPIO 端口的外部中断工作模式,该模式对于外部信号的快速检测很重要,同时避免了CPU 频繁检测外部信号电平的负担,CPU 只需执行外部中断到来后的逻辑。另外,使用一个定时器G0,该定时器用于控制红色LED 闪烁的频率。
功能二使用到两个定时器,一个定时器工作模式设为产生PWM 信号,用于驱动红外发射管发射红外信号。另一个定时器则是用于普通计时,用于记录红外接收管的一系列接收脉宽持续时间。
状态显示使用到板载三色LED,所以使能对应3 个GPIO引脚,红色LED持续闪烁表示有人,绿色LED常亮表示无人。蓝色LED 闪烁一次表示完成一次红外信号解码并将解码数据保存在内存中。按键输入检测使用到1 个GPIO 引脚,将该引脚设置为外部中断模式,按键按下后进入设置模式(可以录入新的红外指令),再次按下进入运行模式,即空调风速自动调节系统正在运行。
G3507 对于的外部信号输入检测以及实现红外信号编码、解码起到了及其重要的作用,G3507 作为MCU 主控, 它片内资源与性能胜任了这项工作任务。
总体感受是G3507 的定时器功能用起来很不错,无论是PWM 工作模式还是定时器模式,定时效果不错,目前未曾发现有bug 的地方。外部中断响应迅速、准确,可以说一旦检测到有人,空调调速红外指令马上就会发送执行,通过逻辑分析仪能够获得具体验证,目前没有外部中断bug。
在开发过程中也出现了一些小插曲,比如我手机前置摄像头旁有红外发射装置,它能够干扰红外接收管、以及空调红外接收,属实没想到它的干扰影响有这么大。毕竟红外接收管对于940nm 的红外光信号是来者不拒的,统一接收。鉴于此我在程序中添加了红外解码增强干扰处理,进一步提升了红外解码的准确性、可靠性。
G3507 的另一特色功能是低功耗节能,该系统在人体监测模块未产生中断时即刻执行__WFI 指令进入低功耗运行模式,直接任意中断事件发生MCU 随即被唤醒。这本身就是M0 内核MCU 的设计初衷之一,主打低功耗。