基于 ARM 的沉积粉尘厚度传感器的设计
2022-10-20张启平
张启平,张 强
中煤科工集团重庆研究院有限公司 重庆 400039
粉 尘是煤矿作业场所的主要灾害之一,沉积的粉尘因风吹、振动等原因飘扬,从而导致粉尘瞬时浓度剧增,如果此时出现火源 (如静电、摩擦火花等),会引起粉尘爆炸,造成非常严重的危害,因此对粉尘沉积厚度的检测就有非常重要的意义[1-3]。笔者针对上述问题研究了基于激光三角法测量沉积粉尘厚度的检测技术,实现了对沉积粉尘厚度的快速精确检测,为粉尘爆炸预警提供了有力的数据支撑。
1 工作原理
采用激光三角法测量沉积粉尘的厚度,其检测原理如图 1 所示。激光器发出的激光经过汇聚透镜组后照射在被测物体表面,其反射光可被感光芯片会聚成光斑。当被测物体表面发生移动 (有粉尘沉积) 时,反射角度发生变化,汇聚到感光芯片上的光斑也会随之移动,被测物体移动的距离[4-6]
式中:a为被测物体移动后的入射点到成像透镜组的距离,m;x为感光元件上光斑移动距离,m;b为被测物体移动后成像透镜组到感光芯片上光斑的距离,m;θ1为入射光与被测物体法线的夹角,(°);θ2为被测物体移动后反射关于被测物体法线的夹角,(°);θ3为被测物体移动后反射光与感光芯片的夹角,(°)。
当光学系统确定后,a、b、θ1、θ2、θ3均为定值,因此只要测量出感光元件上光斑的移动距离,就可以计算出被测物体移动的距离,也就是沉积粉尘厚度。
2 传感器的硬件设计
传感器的硬件如图 2 所示,感光芯片采用 CCD图像传感器。由于粉尘沉积量较小,导致 CCD 图像传感器的输出信号也非常微弱。为了准确检测到该信号,首先将该信号送入信号放大电路和滤波电路,将其变为 0~5 V 的模拟量信号,然后再经过 A/D 转换器将矩形波信号转换为 ARM 处理器能够识别的数字信号,最后送入 ARM 处理器进行分析运算,最终得出沉积粉尘厚度值。
2.1 ARM 选择
ARM 是传感器的核心,需要控制 A/D 转换芯片采集 CCD 图像传感器信号,还需要对采集到的数据进行算法处理,并将计算结果进行显示和传输。笔者选用 STM32F103 作为 ARM 芯片。该芯片是高性能、低成本的嵌入式处理芯片,集成了 512 kb Flash 存储器和 64 kb SRAM 存储器,具有 51个快速 I/O 端口,用于驱动 A/D 转换电路、显示电路。
2.2 A/D 转换电路
选用 ADS1256 作为 A/D 转换电路板的主要芯片。它是一种单通道 24 位高精度 A/D 转换器,采用SPI 接口方式与 ARM 芯片连接,具有精度高、操作简单等优点。A/D 转换电路原理如图 3 所示。为了减小外界噪声对 CCD 图像传感器的信号产生干扰,在A/D 转换电路设计时,用标准的 3.3 V 电源为该芯片供电,减小参考电压不稳定产生的检测误差,并在电源和 GND 之间连接 0.1 µF 的去耦电容。
2.3 显示电路
OLED 可自发光,无需背光源,对比度高、厚度薄、视角广、反应速度快,可用干扰曲线面板,使用温度范围广,构造简单,是目前平面显示器的新兴技术。OLED 屏的控制芯片选用 SSD1307,采用 IIC 接口方式驱动,只需 MCU 的 2个 I/O 进行控制,就可显示需要的汉字或数字,能够节省大量的 I/O 接口,功耗更低。
2.4 按键输入电路
由于传感器需要设置一些系统参数,因此笔者设计了按键输入电路。按键输入电路是采用红外原理,遥控器的红外信号经 HS38B 红外接收管接收识别后,再经过放大滤波等处理,送入 STM32 的定时器输入端口。遥控器上的所有按键都对应不同的编码,通过 STM32 的定时器捕获到信号波形后,即可识别出各个按键。
2.5 硬件抗干扰
由于激光位移传感器的信号是非常微弱的电信号,为了避免其受到其他干扰而影响信号检测,需要在电路上进行抗干扰设计。笔者采用以下几种方法进行抗干扰设计:①在 A/D 转换芯片 ADS1256 的信号采集中采用 RC 滤波器进行滤波处理;② 在所有的集成芯片的电源和地之间接入 0.1 µF 电容;③MCU中未使用的 I/O 接口不悬空,将其接地;④ 在绘制PCB 板时,电源线和地线选择 10 mm 宽;⑤ 将电路中的模拟信号转换成数字信号后,采用光耦将数字信号隔离后再送入 ARM 芯片中[7-8]。
3 传感器的软件设计
软件设计使用 uC/OS-III 实时操作系统。该系统是基于优先级的实时内核,不受任务个数的限制,可直接地发送信号或者消息到任务,操作简单,执行高效。软件采用 C 语言编写,直接调用所需要的STM32 库函数实现对应的功能,语法限制低、代码效率高[9]。
3.1 检测流程
传感器流程如图 4 所示。系统开始运行时,首先读取系统参数,再控制 A/D 转换芯片,进行激光位移传感器的信号采样。在采样过程中,通过 uC/OS-Ⅲ实时操作系统的任务调度功能,检测是否有按键接收任务或其他中断任务,若有,则先执行相应任务。采样完成后,对采样的数据进行数字滤波,过滤其中明显的错误值,并采用相应算法对数据进行处理,最后计算出沉积粉尘的厚度值并进行显示。
3.2 A/D 转换程序
A/D 转换是读取 CCD 图像传感器信号的关键部分。ADS1256 初始化后,首先对 mux 寄存器写 SYNC命令,延时一小段时间后再继续写读取命令,此时就可等待数据转换。待转换完成后,就可以直接读取 24 bit 的数字量,经过计算,就可以得到当前的激光位移值。
3.3 中断服务程序
中断服务程序主要通过 RS-485 方式接收其他设备发送的通信。STM32 的 RXD 引脚在收到 RS-485芯片的信号后,会进入串口中断,并在中断接收程序内接收该信号,经过解析处理后,将传感器的数据和参数信息打包发送出去。
3.4 按键服务程序
传感器的运行参数可以通过遥控器进行设置。首先,按照一定规则将遥控器的按键命令进行编码,再由红外接收管按解码规则进行解码分析后,送到MCU 芯片中进行处理,MCU 识别到按键后,将对应的参数进行修改设置,最后将设置好的参数存储起来用于后续软件程序。
3.5 软件抗干扰
采用软件抗干扰技术,提高软件程序的准确性和稳定性。①采用卡尔曼滤波法对 A/D 转换结果进行处理,提高数据采集的准确性;② 在系统未使用的ROM 区和中断向量区,设置软件陷阱;③编写任务监测程序,当任务无法正常调度时,及时发现并进行复位。
4 精度验证
沉积粉尘厚度的真实值采用深度游标卡尺进行测量,然后将其与设计的传感器测量值进行对比。部分试验数据如表 1 所列。
表1 传感器检测精度Tab.1 Detection precision of sensor mm
由表 1 可以看出,笔者设计的沉积粉尘厚度传感器可以检测 0~4 mm 厚度的沉积粉尘,分辨率达到0.01 mm,与深度游标卡尺检测数据相比,其最大检测误差为 0.13 mm。
5 结语
采用激光三角法设计了沉积粉尘厚度传感器,重点阐述了其工作原理,并设计了硬件电路,包括MCU、A/D 转换等,并介绍了在硬件设计上的抗干扰措施以及总体软件程序、A/D 转换程序、中断服务程序、按键服务程序和软件抗干扰方法。通过对比试验,验证了沉积粉尘厚度传感器可以检测 0~4 mm 厚度的沉积粉尘,分辨率达到 0.01 mm,最大检测误差为 0.13 mm。