使用红外光在RT-Spark板上检测物体:RGB LED灯显示距离,从绿色(远)到白色(非常近)
引言:
本项目在RT-Thread RT-Spark开发板(STM32F407)上实现了红外距离传感器。红外LED发射红外光,光电二极管检测来自附近物体反射回来的光线强度。ADC读取电压值,固件将其映射为RGB LED颜色——远距离时为绿色,非常接近时为白色。
它是如何工作的
电路板通过PA0引脚的ADC读取光电二极管的电压。当物体靠近时,更多的红外光被反射回来,导致电压读数降低。固件会检测该电压,并根据距离的不同点亮RGB LED,显示不同的颜色。
距离校准
LED颜色与距离范围对应如下:绿色表示检测到的物体在20厘米以外;蓝色表示物体在16至20厘米之间;黄色表示12至16厘米之间;红色表示8至12厘米之间;洋红色表示4至8厘米之间;白色表示物体在4厘米以内,即最短距离范围。
实施
ADC 设置为12位分辨率,读取单个通道。定时器2生成1 kHz的PWM信号,驱动三个独立通道上的RGB LED。固件以连续循环运行,每次周期读取传感器数据并更新LED颜色。
结果
传感器运行正常。当物体靠近红外LED时,RGB LED的颜色从绿色逐渐变为白色。该传感器可可靠检测距离最远20厘米的物体,而在0至4厘米范围内会亮起白色光。通过平均多个ADC采样可以消除闪烁现象,使LED输出保持稳定。由于固件在每次测量前都会减去环境中的红外光水平,因此背景室内照明不会影响读数。
结论
该项目展示了如何仅使用LED、光敏电阻和ADC,通过红外传感器检测附近的物体。通过测量反射红外光的差异,STM32板能够确定物体的距离,并通过彩色编码的RGB LED显示出来。背景减法方法有效过滤了环境光,而对ADC采样进行平均处理有助于获得稳定的输出。总体而言,该项目很好地介绍了模拟传感、ADC配置以及基于PWM的嵌入式系统LED控制。
本文编译自hackster.io





