- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机酒精超标自动报警器
基于ATMega 16单片机课程设计报告
——酒精超标自动报警器
冯艳涛 胡夫 李大伟
摘要:
该设计作品基于AVRmega16单片机,利用酒精传感器,实现空气周围环境中的酒精浓度实时测量,通过LED数码管实时显示,一旦超过阈值即蜂鸣器报警,可用于车载监控及仓库等有防火要求的地方。
关键字
ATmega16单片机 酒精传感器 自动报警
目的、功能及用途:
目的:当今社会,汽车已经成为主要的交通用具。随之带了交通问题,然而,酒后驾车酒后驾驶问题已成为造成交通事故最主要的原因。为了避免交通悲剧的发生,一种有效地提醒民众防止酒后驾驶的系统的出现就成了现实中的迫切要求。而本课题正是要利用单片机知识制作一种报警器,用于杜绝酒后驾车问题。
功能:此报警器利用酒精传感器,测量空气中酒精浓度,通过LED数码管实时显示,一旦超过阈值即蜂鸣器报警,并能强行制止司机打火,从而,杜绝酒后驾车。
用途:基于以上功能,可将酒精超标自动报警器设计于汽车构造中,用来防止酒后驾车,减少交通事故。
硬件设计原理与内容:
硬件设计思想和原理图:
采用MQ303将酒精信号转换成敏感体电阻的变化,外接电源和负载电阻,把电阻变化转换成电压信号,利用Mega16单片机的模数转换功能采样电压变化,转换成酒精浓度用七段数码管显示出来,当达到预定报警浓度时,蜂鸣器报警,并接通开关时,Led灯不再显示。
硬件设计时,考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压值且电压值稳定,外部干扰小等。因此,可以直接把传感器输出电压值送入单片机进行处理。此外,还需接LED数码管显示,声光报警电路等。
如何使用硬件单元;
将MQ303预留引脚接电源,预热3秒以上。
接通单片机电源,七段数码管闪烁显示周围酒精浓度。
一旦酒精浓度超过阈值,蜂鸣器报警。
与门和非门以及开关组成打火系统,蜂鸣器信号和开关决定是否导通。
开关模拟打火系统电源开关,接通开关时,Led灯亮表示打火成功,反之则表示打火系统被强行制止。
单片机选择:AVRmega16单片机是一款功能十分强大,集成度非常高的数字处理系统。它集成了ADC与DAC的模块,因而此作品设计中可以直接将MQ3型酒精气敏传感器
下图1为选择4位共阳极数码管,型号为SR410561k。该数码管具有工作稳定,亮度高,反应灵敏,质量可靠等特点。
图表 1
图二为蜂鸣器报警部分:
图表 2
图三为传感器回路图:
图表 3
硬件原理图:
三、软件设计思想、流程与功能
软件方案主要包括数据采集、数据处理、显示、声光报警等子程序。仪器开机后经初测量结果。测量时数据采集程序把数据送到AVRmega16A/D转换器,进行AD转换。由数据处理程序完成数据间的转换和数制间转换。当测量数据超过阈值时报警子程序启动,发出声光报警。
1端口初始化部分
PORTA用于传感器信号输入和蜂鸣器输出;
PORTB用于控制LED显示;
PORTC用于LED位选。
2传感器采集部分:
采用ADC差分输入,因为传感器输出电压可以达到0-5v,单片机可以直接处理,故使用1倍增益。
3 ADC转换部分:
使用7.3728M晶振,32分频,T0比较匹配中断,定时2ms,转换结果右对齐。
4 七段数码管显示部分
动态扫描显示,间隔2ms。
2、数据采集处理子程序
图表 4
3、数据采集处理
图表 5
4、LED显示子程序本显示为LD显示。显示子程序分为显示程序,测量结果显示程序。
图表 6
5、蜂鸣器报警子程序传感器输入值A/D转换后,调用比较程序,经过数据处理后显示的测量值与设定的报警阈值比较,小于阈值则继续执行显示程序大于阈值则将单片机端口进行报警
图表 7
6、全部程序
编译环境Icc avr
//ICC-AVR application builder : 2009-5-8- 21:45:59
// Target : M16
// Crystal: 7.3728Mhz
#include iom16v.h
#include macros.h
flash unsigned char led_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
flash unsigned char position[4]={0x01,0x02,0x04,0x08};
unsigned char dis_buff[4]={0,0,0,0},posit;
int time_2ms_ok;
unsigned long int value;
unsigned long int mid
文档评论(0)