- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于单片机设计的酒精气体浓度探测仪
0 引言
设计要求:1)能够检测酒精浓度;2)能够预先设定阀值;3)阀值能够再调整;4)超过阀值能够声光报警;5)显示酒精浓度值;6)能够判断是否吹气和吹气是否有效。
呼气酒精浓度测试常用的方法有燃料电池型(电化学型)和半导体型两种。燃料电池酒精传感器只有美国、英国、德国、中国等少数几个国家能够生产。半导体型酒精传感器采用具有气敏特性的氧化锡半导体作为传感器,当气体中酒精浓度增加时,传感器电阻值就降低,对酒精具有最高的敏感度。
基于STC12C5A16AD单片机设计的酒精气体浓度探测仪,可用来检测酒精气体浓度,当酒精气体浓度高于允许限定值时,发出报警。
1 系统结构
系统由数据采集模块(包括吹气判断电路、MQ-3酒精气体浓度传感器电路、信号调整电路组成);单片机控制模块(包括STC12C5A32AD型单片机、模/数转换部分、阀值比较电路、液晶显示器电路、晶振电路、复位电路组成);阀值电路模块(包括阀值预设定电路、阀值调整电路、阀值存储电路、过阀声/光报警等分电路组成)。系统结构框图如图1所示。
STC12C5A32AD这款单片机自身带有8路ADCP1.0-P1.7口模数转换功能;可以大量简化硬件电路设计。
2 电路设计思路
2.1 酒精浓度检测仪电路
由酒精气体浓度传感器MQ-3负责检测空气中的酒精气体浓度;由单片机内部自带的模/数转换器把检测到的模拟量(表示酒精浓度)的电压信号转换成数字量;然后和预先设定的表示酒精浓度的阀值进行比较,如果比较结果超过阀值就由单片机P2.3口输出方波信号控制PNP型三极管VT4驱动蜂鸣器发出报警声;同时由单片机P2.6口输出低电平控制发光二极管LED3发出红光;表示被检测的人处于醉酒状态;如果黄灯LED2亮表示被检测的人处于饮酒状态;如果绿灯LED3亮表示被检测的人没有饮酒。
数据的采集模块:
2.2 吹气判断电路
当没声音信号时VT1饱和导通,其集电极为低电平,VT2因反偏截止,IC1 555“2”脚为高电平,IC1 555“3”脚输出低电平,VT3截止,信号输出端VOUT输出高电平。此时绿色指示灯LED2不亮,表示没吹气或吹气无效,此时,单片机P1.3口输入高电平;编程时P3.1口高电平判断为:吹气无效或没有吹气。
吹气时,麦克线圈把音频信号转化为低频脉冲信号,经电容C1耦合、三极管VT1 9013/VT28050工作在放大区,经2次放大,IC555 2脚大于1/3VCC、小于2/3VCC时,接成单稳态的IC555电路翻转、3脚输出高电平、绿色LED21导通发光,表示吹气有效;此时,单片机P1.3口输入低电平;编程时P1.3口低电平判断为:吹气有效。
酒精浓度信号采集电路及信号调整电路:MQ-3酒精气体浓度传感器检测到空气中的酒精浓度,并且把浓度转换成电压输出(模拟量AOUT送到单片机的P1.7口);传感器输出的信号输入运算放大器LM393的2脚,与3脚RP2分压以后的电位比较,从1脚输出整形数字信号(数字量)。
模/数转换:由于STC12C5A32AD这个型号的单片机P3口带有ADC功能,根据酒精浓度和电压关系图表,可以把模拟量转换为数字量,供CPU处理。调节电位器Rp改变输出的灵敏度。
2.3 单片机模块
单片机和液晶显示器LCD1602接口、及晶振、复位电路如图3所示。液晶显示器选用LCD1602来显示酒精浓度值;LCD1602挂在单片机P0口上,液晶显示器的8位数据线P0.0~P0.7和单片机P0口的8位P0.0~P0.7一一对应连接;LCD1602的3条控制线由单片机P2.0、P2.1、P2.2控制;连接关系如下:E-P2.0;RW-P2.1;RS-P2.2;液晶显示器通过3脚上的10K电位器RP3调整;由于P0口结构关系需要外接上拉电阻;用1K的排阻一端接5V,另一端接P0.0~P0.7;单片机采用11.0592MHz晶振频率;复位电路采用按键式复位方案。
2.4 酒精浓度和输出电压关系的取得
由无水乙醇和水勾兑、稀释而成不同浓度的酒精;然后分别用不同浓度的酒精慢慢靠近MQ-3酒精气体浓度传感器,从电压表读出电压值;建立模型(图表),找出电压和浓度的关系(试验多次,然后取平均值)。电压与浓度的对应关系如表1所示。
单片机还把浓度和阀值比较,如果超过阀值就通过P2.3口控制三极管VT4(9012)驱动蜂鸣器发出报警声。通过P2.6/P2.5输出低电平驱动红灯LED3亮表示醉酒状态;LED2黄灯亮表示饮酒状态;同时单片机把转换后的酒精浓度数据送到液晶显示器上显示;单片机负责控制各个分电路。
2.5 阀值设定/调整电路
由单片机和四个按键组成。按键一端接地,另一端接单片机P3口;P3.5口控制SW4(CANCEL)键(当按下时表示处于阀值预设或阀值调整状态);P3.4口控制SW3(OK)键(当按下时表示阀值设定到位);P3.1口控制SW2(Down)键,每按一次,阀值减一;P3.0口控制SW1(UP)键,每按一次,阀值加一。如图4所示。
平时没有键按下,P3口处于高电平状态;当有按键按下时,P3口和地线接通被拉成低电平。采用查询扫描方式,循环检测。如果没有按键按下,检测结果都是高电平;如果检测到低电平时,表示有键按下。当检测到P3.5口是低电平时,表示SW4按下处于阀值预设定状态,此时,每按一次SW1(UP)键,阀值加一。达到20mg(或80mg)时,请按下SW3(OK)键,表示固定阀值。如果按下SW2(Down),阀值减一。
表示酒精浓度的阀值取得:采用道路交通安全法中的规定;即大于20mg小于80mg,判断为饮酒状态;大于80mg判断为醉酒状态。
2.6 阀值存储电路
采用电可擦写可编程只读存储器AT24C24来保存酒精浓度阀值数据。图中PRE、E1和E2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机IIC通信的串行控制时钟线和数据线。SCL连P1.0,SDA连P1.1。阀值数据很重要,是处罚的依据,必须保存好以备查和解决争议;AT24C24内部有E2PROM可保存数据100年,掉电数据不丢失,最适合。
阀值设定/调整:通过“增加”、“减少”按键调节。
2.7 声光报警电路
声光报警电路如图5所示。
单片机将酒精浓度的测量值与事先设定的阈值相比较,当测量值大于阈值时,蜂鸣器报警;当超过阀值(20mg、80mg)时,单片机从P2.3口输出方波信号,控制三极管VT1导通/截止交替变化,驱动蜂鸣器发声。
如果20mg/100ml<酒精含量<80mg/100ml,则单片机P2.5口输出低电平驱动发光二极管发光,黄灯闪烁,表示饮酒状态。
如果酒精含量>80mg/100ml,则红灯闪烁,单片机P2.6口输出方波信号驱动发光二极管闪烁,红灯表示醉酒状态。
3 设计制作印刷电路板
Protel Dxp 2004是目前网络上功能最强大、最专业的PCB线路板设计软件,软件具有丰富的设计功能,能进行原理图的设计、印制电路板的设计、新增加了自动布线功能、原理图仿真功能。把各个分电路集成就形成了酒精浓度检测仪完整电路原理图。如图6所示。
设计过程中设计了自己的元件库,自制了4个元件(LCD1602、MQ-3、STC12C5A32AD、LED);设计了自己的封装库(LCD1602、MQ-3、STC12 C5A32AD)。
为符合设计要求,设计了酒精浓度检测仪电路印刷电路板。采用双面板方案,电子元件选用非贴片,元件封装采用THT技术,电路布局按功能分区布设,双面覆铜;PCB板采用方型;集成电路采用DIP技术;按要求设计的酒精浓度检测仪电路印刷电路板图如图7所示。
4 软件设计
主程序流程图如图8所示。
5 结论
本设计能够对人体呼出气体进行酒精气体浓度检测,超过规定阀值时能够声光报警,实现了预期设计要求。
上一篇:实际不稳定问题和稳定方案
下一篇:基于SOPC的现场总线多通道实时温度采集系统设计