一种无线酒精浓度探测仪的研制 酒精含量检测仪( 二 )


2.4 无线收发电路
系统采用NORDIC公司生产的工作于2.4~2.483 5 GHz的ISM频段的单片无线收发器芯片nRF24L01完成无线数据的收发工作,nRF24L01的最高传输速率为2 Mb/s,电路如图6所示 。稳压芯片LM1117-3.3 V将5 V输入电压转换成3.3 V给nRF24L01供电 。nRF24L01与单片机接口为四线SPI方式,CSN、SCK、MOSI、MISO管脚分别是SPI的片选使能线、时钟线、数据输入线、数据输出线 。IRQ为中断信号线(低电平有效),接至单片机的外部中断管脚,单片机主要是通过该接口线与nRF24L01进行通信并判断数据接收和数据发送是否完成 。CE为芯片的RX/TX模式选择线 。IREF为参考电流输入端,通过22 kΩ电阻接地 。管脚ANT1和ANT2给天线提供平衡的RF输出,通过后接的简单射频网络匹配电路获得单端50 Ω的阻抗输出 。网络匹配电路在发送模式时阻止谐波,在接收模式时克制本地振荡漏出 。VDD_PA管脚输出1.8 V电压,给片内功率放大器提供电源 。
2.5 数据接口通信电路
接收端的计算机与单片机间的通信由串行USB接口集成电路CH340T完成,如图7所示 。CH340T支持USB1.1或者USB2.0/USB3.0通信,具有仿真接口,并且可以升级外围串口设备,支持常用的MODEM联络信号,支持IRDA规范的SIR红外通信,提供RS23RS48RS422接口等功能 。CH340T内置有独立的收发缓冲区,支持通信波特率50 b/s~2 Mb/s的单工、半双工、全双工等异步串行通信 。图7中,在CH340T芯片的发送脚TXD上反接一个二极管1N4001,防止该引脚将电流倒灌到单片机;在接收引脚RXD上加一个300 Ω的限流电阻来防止单片机对CH340T倒灌电流;从而避免电流倒灌导致不需要供电工作的另一方芯片继续工作 。
3 系统软件设计
3.1 下位机软件设计
下位机的程序开发和调试是在Keil μVision4集成开发环境下进行的,包括发送端和接收端的软件设计 。
3.1.1 发送端软件设计
发送端软件流程如图8所示 。单片机上电后进行系统初始化,完成单片机内部系统变量的初始化以及TLC154DM-16ISD2560和nRF24L01等外部设备的初始设置;然后延时大约5 min,预热传感器TGS2620,保证传感器工作正常;程序初始化结束后,系统进入监控状态 。若报警阈值设置键按下,进入报警限设置模式;若录音键按下,进入录音模式;然后启动A/D转换获取采样数据,作滤波处理、标度变换和系统误差校正后得到被测酒精浓度值 。该值与报警阈值比较,若结果是“大于”或“等于”,启动蜂鸣器发声程序,作声音报警,提示酒精浓度超标;接着该值在DM-162液晶模块上实时显示;最后判断放音键是否按下 。若按下则根据酒精浓度值查找ISD2560中对应语音信息的存储地址开始放音;放音结束后,该值由nRF24L01发送程序发送到接收端;待发送完成后,采集、显示和发送新一轮的酒精浓度数据 。
发送端软件应用了防脉冲干扰平均滤波法[9]对A/D采样数据作预处理 。其原理是:连续采样K次,然后对这K个采样数据进行比较,去除其中的最大值和最小值,计算剩下的K-2个数据的算术平均值作为采样有效值 。该方法融合了中位值滤波法和算术平均滤波法的优点,既可去掉脉动性质的干扰,又可消除偶然出现的脉冲性干扰引起的采样值偏差 。为加快计算速度,设计数字滤波器时K=10 。
为了提高系统的实时性,软件中采用分段线性插值法[10-11]作标度变换 。过程如下:(1)按传感器TGS2620的标定曲线,将该曲线进行非等距分段(曲率变化大(小)时,样点距离取小(大)),选取各分段点坐标(VRLi,Ci)(i=0,1,…,M),其中:VRLi和Ci分别为不同样点时传感器输出电压值和对应浓度值;(2)计算相邻样点间的拟合直线斜率ki=(Ci+1-Ci)/(VRLi+1-VRLi)(i=0,1,…,M-1);(3)将M组坐标数据(VRLi,Ci)和对应斜率ki存储于单片机片内EEPROM的第二扇区(地址为2200H~23FFH)中;(4)每采集到一个电压值VRL即查询EEPROM表,找出VRL所在区间(VRLi,Ci)~(VRLi+1,Ci+1),取出该区间(VRLi,Ci)和ki数据,用线性插值公式C=Ci+ki(VRL-VRLi)计算出当前酒精浓度值C 。
将采集到的N个样本数据(xi,yi)代入式(5)中即得到系数a、b的值,并存入单片机的内存单元中 。系统测量时,将标度变换后的酒精浓度测量值x代入误差校正方程y=ax+b中,即可得到校正后的酒精浓度值y,从而达到消除系统误差的目的 。
3.1.2 接收端软件设计
接收端单片机的软件流程如图9所示 。接收端开机上电后,程序初始化设置nRF24L01和串口,然后进入监控场景 。当nRF24L01接收到一帧完整的酒精浓度数据后,立即通过串口发送到上位机 。接收端单片机与PC之间数据交互采用异步通信模式 。独立波特率,串口协议设置为:波特率9 600 b/s,8 bit数据位,1 bit停止位,无校验位 。