免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于AVR单片机的酒精传感器的设计包含原理图和完整代码摘要该设计作品基于ATmega16单片机,利用酒精传感器,实现空气周围环境中的酒精浓度实时测量,通过LED数码管实时显示,一旦超过阈值即蜂鸣器报警,可用于车载监控及仓库等有防火要求的地方。关键字ATmega16单片机 酒精传感器 自动报警AbstractThe design works based on single-chip microcomputer, using alcohol ATmega16 sensor, realize the alcohol concentration of air environment through real-time measuring, LED digital display, once more real-time tube threshold, which can be used for car buzzer alarm monitor and warehouse fire.目录1 项目要求 42.项目的硬件原理和内容 42.1 硬件设计思想和原理图42.2 如何使用硬件单元42.3 硬件电路图63.软件设计思想和内容 83.1端口初始化 83.2数据采集及处理流程83.3 LED显示93.4蜂鸣器报警104.测试过程处理114.1硬件调试114.2仿真调试114.3综合调试124.4测试过程问题分析134.5测试结论145. 系统设计所需资源 146. 项目分工 147. 系统设计总结 147.1团队总结147.2个人心得15参考文献 18附录A 酒精传感器参数 18附录B 系统总程序代码 20附录C 实物图 23一、 项目要求:便携式酒后驾车测试仪 酒后驾车易出事故,但判定驾驶员是否喝酒过量带有较大的主观因素。请你利用学过的知识,设计一台便携式、交通警使用的酒后驾车测试仪。总体思路是: 让被怀疑酒后驾车的驾驶员对准探头(内部装有多种传感器)呼三口气,用一排发光二极管指示呼气量的大小(呼气量越大,点亮的LED越多)。当呼气量达到允许值之后,“呼气气确认”LED亮,精酒蒸气含量数码管指示出三次呼气的酒精蒸气含量的平均百分比。如果呼气量不够,则提示重新呼气,当酒精含量超标时,LED闪亮,蜂鸣器发出“嘀嘀”声。二、 项目的硬件设计原理与内容1、 硬件设计思想和原理图:采用MQ303将酒精信号转换成敏感体电阻的变化,外接电源和负载电阻,把电阻变化转换成电压信号,利用Mega16单片机的模数转换功能采样电压变化,转换成酒精浓度用七段数码管显示出来,当达到预定报警浓度时,蜂鸣器报警,并接通开关时,Led灯不再显示。硬件设计时,考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压值且电压值稳定,外部干扰小等。因此,可以直接把传感器输出电压值送入单片机进行处理。此外,还需接入LED数码管显示,声光报警电路等。其总体框图右图所示:2、 如何使用硬件单元:将MQ303预留引脚接电源,预热3秒以上。接通单片机电源,七段数码管闪烁显示周围酒精浓度。一旦酒精浓度超过阈值,蜂鸣器报警。与门和非门以及开关组成打火系统,蜂鸣器信号和开关决定是否导通。开关模拟打火系统电源开关,接通开关时,Led灯亮表示打火成功,反之则表示打火系统被强行制止。单片机选择:ATmega16单片机是一款功能十分强大,集成度非常高的数字处理系统。它集成了ADC与DAC的模块,因而此作品设计中可以直接将MQ3型酒精气敏传感器的探测信号输入单片机中,然后在单片机内进行A/D模数转换,数据处理。其引脚图如下图:下图1为选择4位一体共阳极数码管,型号为SR410561k。该数码管具有工作稳定,亮度高,反应灵敏,质量可靠等特点。图表 1图二为蜂鸣器报警部分:图表 2图三为传感器回路图:图表 33、 硬件原理图:PCB图:三、 软件设计思想和内容软件方案主要包括数据采集、数据处理、显示、声光报警等子程序。仪器开机后经初预热阶段后测量结果。测量时数据采集程序把数据送入到AVRmega16单片机中的A/D转换器,进行A/D转换。由数据处理程序完成数据间的转换和数制间转换。当测量数据超过阈值时报警子程序启动,发出声光报警。软件主程序流程图如右图所示:1、端口初始化1、 PORTA用于传感器信号输入和蜂鸣器输出; PORTB用于控制LED显示; PORTC用于LED位选。2传感器采集部分:采用ADC差分输入,因为传感器输出电压可以达到0-5v,单片机可以直接处理,故使用1倍增益。3 ADC转换部分:使用7.3728M晶振,32分频,T0比较匹配中断,定时2ms,转换结果右对齐。4 七段数码管显示部分 动态扫描显示,间隔2ms。 2、数据采集及处理子程序流程:图表 4数据采集及处理函数关系图如下:图表 54、 LED显示子程序:本作品显示为LED显示。显示子程序分为预热阶段显示程序,测量结果显示程序。流程如图6:图表 65、蜂鸣器报警子程序:传感器输入值经A/D转换后,调用比较程序,再经过数据处理后显示的测量值与程序中设定的报警阈值比较,小于等于阈值则继续执行显示程序,大于阈值则将单片机PA5端口输出高电平进行报警。 蜂鸣器报警大于阈值 图表 7四、 测试过程处理调试分析包括硬件调试分析和软件调试分析及软、硬件联调。由于硬件调试分析和软件调试分析是独立进行的,所以可以先调硬件再调软件。在调试中找出错误、缺陷,判断各种故障,并做出软硬件的修改,直至设计作品能够正确体现其功能。1、硬件调试硬件调试包括传感器电路、显示电路、单片机外围电路、报警电路等。下面主要介绍传感器电路、报警电路的调试。首先把MQ303A酒精传感器,接1.5v左右电压上由于电压预热3秒以上,酒精传感器里已经集成了放大电路,而用万用表测量可证实传感器输入电路中输出是一稳定的0-5V的电压信号,符合单片机的输入条件,因此此信号可以直接接人单片机进行A/D转换而不需要放大、滤波等。其次对于声光报警电路的调试分为蜂鸣器和LED的调试。经试验可知蜂鸣器在高电平时正常工作,LED为共阳极。2、仿真调试软件调试为利用ICCAVR,CVAVR,AVR Studio软件进行模块化调试。调试过程中观察各个变量的变化,查找所写程序的错误,并改正。ADC 转换结果转换结束后(ADIF 为高),转换结果被存入ADC 结果寄存器(ADCL, ADCH)。单次转换的结果如下:1024是2的10次方,因为转换结果是10位的仿真电路图:报警时:不报警时:3、综合调试利用AVR Studio软件和硬件电路板进行软硬件联合仿真,首先将软件程序下载到AVR Studio中,然后运行一下,确认无误后,再把程序写入硬件之中。对调试过程中出现的错误要仔细分析,然后不断修正,直至达到理想效果为止。在软硬件联调时,根据在程序中设定的阈值,用酒精渐渐接近传感器来模仿酒精浓度的增大,显示结果良好,报警结果十分精确,在到达阈值时能够准确发出报警声。4、测试过程问题分析:1、 PCB板多处电路不通,只能在开发板上调试2、 MQ-3传感器的输入和输出非线性,因此计算它的浓度和输出电压的值的关系非常困难,我们只能测出数据,然后折合为几条曲线,通过编程控制输出,由于硬件参数存在的误差,开始我们的输出数据不理想,通过多次调试,逐渐把它的输入和输出值接近真实值。3、 该开发只能在100-1000这个值内进行工作,由于受加热温度的影响,加热时间对输出有比较大影响,所以超出这个范围,我们都强制它等于0,这个范围已经可以够我们进行酒后驾车的测试了,避免了超出输出范围,很难进行数据的处理这个方面的设计。4、 酒精传感器的电阻值随时间,温度和酒精浓度变化较大,这是我们不能进行定量计算的难点。5、 用酒靠近传感器进行测量,有相应的数据输出,但撤去酒精的时候,数值只能缓慢地下降至低值,可能是因为酒精残留的缘故。所以酒精传感器不能进行快速的多次测量。这是我们设计的问题。5 测试结论:1、在距离一定距离内对着传感器吹浓度56%的白酒,成功报警。2、指标参数的分析MQ303说明书上说在0.9-1.0v下预热时间大于48小时,在2.20.2V下预热510秒钟,实测不需这么长的时间,也不需2v以上的电压,5号干电池提供1.5v左右电压预热3秒以上即可。五、 系统设计所需资源:MQ303A酒精传感器1个,AVR单片机芯片,ATmega16单片机实验板1个,印刷电路板一块,七段数码管4个,Led灯一个,15mh电感一个,104电容一个,蜂鸣器一个,10k欧电阻两个,360欧电阻8个,插线若干,与门和非门各一个等等。参考资料:【1】 康华光 电子技术基础 高等教育出版社,2006 第五版【2】马潮avr单片机嵌入式系统原理与应用实践清华出版社 2005 第一版附录A、1、酒精传感器参数:符号参数技术条件备注V H加热电压0.9V 0.1VAC or DCV C回路电压 6 VDCR L负载电阻可调P S 10 mWR H加热电阻4.5W 0.5 W室温IH加热电流12020mAPH加热功率 140 mWPS元件功率10 mWB.环境条件符号参数技术条件备注Tao使用温度-20 o C +50 o C推荐使用范围20ppm-1000ppm乙醇Tas储存温度-20 o C +70 o CRH相对湿度 95% RH(O2)氧气浓度21%1%(标准条件)不得小于 16%氧气浓度会影响灵敏度C. 灵敏度特性型号MQ303A 符号参数名称技术条件备注Rs元件电阻(4kW to 400 kW)在 洁净空气中a电阻比(0.50 0.15)Rs (300 ppm酒精) / Rs (100 ppm酒精)标准测试条件: 温度: 20 o C 2 o C V C : 3.0 V 0.1 V DC 湿度: 65% 5% V H : 0.9 V 0. 1 V DC R L : 可调预热时间:大于48小时3、酒精含量的判断标准:呼气测试最简便。而血液中的酒精浓度与肺部呼出的气体酒精浓度有一定的比例:大约2200毫升呼气中酒精含量相当于1毫升血液中酒精含量,测出后者就可知道前者。大量的统计研究结果表明,如果被测者深吸气后以中等力度呼气达三秒钟以上,这时呼出的气就是从肺部深处出来的气体。呼气中的酒精含量与血液中的酒精含量有如下关系: BAC(in mg/L) = BrAC(in mg/L) x 2200 上式中,BAC是血液酒精浓度的英文缩写,BrAC则是呼气酒精浓度的缩写,括号中的in mg/L表示以每升中多少毫克为单位。也就是说,以毫克/升为单位的血液酒精浓度在数值上相当于以毫克/升为单位的呼气酒精浓度乘上系数2200(由于各国的情况不同,在美国此系数采用2000,而欧洲很多国家采用2100)。基于此,目前全世界绝大多数国家都采用呼气酒精测试仪对驾驶人员进行现场检测,以确定被测量者体内酒精含量的多少。关于吹管 酒精测试仪用的吹管是一个容易被忽视的问题。GA307-2001标准对吹管也作了规定。吹管虽小,但对保证检测精度非常重要。被测者口含吹管呼气,进入吹管的气体几乎全部是被测者呼出的气体。如果从一个喇叭口送入气体,被测者不接触喇叭口而对喇叭口吹气,根据流体力学的原理,气体流动时压力减小,这就把周围的空气一起带进仪器内(喷雾器就是根据这个原理制成的),相当于把呼气中的酒精浓度稀释了,检测到的酒精浓度就会比被测者实际的呼气酒精浓度低,这显然是不能容许的。另一个必须注意的是吹管一定要是单向性的,在吹气的时候才能进行检测,吸气时不能进行检测,因为吸气时吹管中的气体不来自人体,检测的结果自然不能反映人体内的酒精含量。在选择警用酒精测试仪时必须注意这个问题。饮酒驾车和醉酒驾车,是按血液中不同酒精浓度区分。依标准,血液酒精浓度在0.20.8mg/ml(不含0.8)之间,属于酒后驾车,处暂扣一个月以上三个月以下驾驶证,并处200元以上500元以下罚款。血液酒精浓度在0.8mg/ml(含)以上时,属醉酒驾车。按照道路交通安全法,处十五日以下拘留和暂扣三个月以上六个月以下驾驶证,并处500元以上2000元以下罚款。附录B、系统总程序代码:/酒精传感器C代码,ICCAVR编译环境/ICC-AVR application builder : 2010-4-16/ Target : M16/ Crystal: 7.3728Mhz#include #include flash unsigned char led710=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/数码管字型09flash unsigned char position4=0x01,0x02,0x04,0x08;/用于选通四个数码管显示用unsigned char dis_buff4=0,0,0,0,posit;/对应个位,十位,百位,千位的相应的数值int time_2ms_ok;/中断相应用到的变量unsigned long int value;/AD转换的寄存器ADCH存放的结果,转换为10进制的值。 unsigned long int middle_1,middle_2,middle_3;unsigned long density;/转换的最终结果值,此值需要显示出来void port_init(void)/端口初始化 PORTA = 0x00; DDRA = 0xF0; PORTB = 0x00; DDRB = 0xFF; PORTC = 0x00; DDRC = 0xFF; PORTD = 0x00; DDRD = 0xFF;void adc_init(void)/dac初始化 ADCSR = 0x00; /disable adc ADMUX = 0x61; /select adc avcc 外部电源参考,数据左对齐; ACSR = 0x80; SFIOR&=0x1F; SFIOR|=0x60; ADCSR = 0xAD; void density_dis_buff()/此函数用于将density的个位,十位,百位,千位分开存放进数组dis_buffiunsigned char i; for(i=0;i=3;i+) dis_buffi=density%10;density/=10; #pragma interrupt_handler adc_isr:iv_ADC void adc_isr(void)/ADC转换 float a,b; value=ADCH; a=(float)value; b=a/256; if (b0.1) density=(-0.12)*b+0.561)*2000; else if (b0.15) density=(-0.16)*b+0.461)*2000; else if (b0.2) density=(-0.28)*b+0.321)*2000;/分段直线计算,计算值在2001000ml/L内误差相对减少(已经转换为血液中的值),已经能实现检测酒后驾驶和醉酒驾驶。 else if (b0.25) density=(-0.3)*b+0.2)*2000; else if (b0.3) density=(-0.3)*b+0.18)*2000; else if (b0.35) density=(-0.3)*b+0.15)*2000; else if (b1.8)density=(-0.3)*b+0.15)*2000;else density=(-0.3)*b+0.2)*2000; /density=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淄博市中医院预防接种规范操作与不良反应处置考核
- 湖州市人民医院病案格式规范考核
- 龙岩市人民医院急救基础知识如患者晕厥出血笔试试题
- 常州市中医院维护并发症识别考核
- 衢州市中医院通路影像评估考核
- 合肥市中医院颈椎畸形后路矫形技术准入考核
- 镇江市中医院诱发试验技术考核
- 抚州市中医院三叉神经痛治疗考核
- 重大参观来访活动方案
- 青年教师团建活动方案
- 2.PaleoScan详细操作流程
- 电梯形式检测报告
- 专项维修资金使用公告示范文本
- GB/T 224-2019钢的脱碳层深度测定法
- GB/T 10066.1-2019电热和电磁处理装置的试验方法第1部分:通用部分
- 2022年澄迈县辅警招聘笔试试题及答案解析
- 第六章-导游服务中问题与事故的处理课件
- 房间隔缺损封堵术的护理课件
- 6078三菱帕杰罗v87v97v93维修手册原厂10pajero-china index
- 粮油储藏技术规范
- 孕妇体重管理课件
评论
0/150
提交评论