基于单片机的轿车内一氧化碳气体测控系统设计
扫描二维码
随时随地手机看文章
摘要:设计了一个基于单片机的轿车车内一氧化碳浓度测控功能的系统。该系统以16位高性能单片机SPCE061A为控制核心,采用高精度敏感元件MQ-7,集成运算放大器INA128进行信号调理,并引入了实时操作系统μC/OS-II进行任务管理。实验表明:系统实现了轿车空调运行时一氧化碳气体的实时监控,CO浓度不超过300 ppm,同时具有温度测量功能,便于进行空调操作,参数测量准确,为保证轿车内人员安全提供了可靠方案。
关键词:轿车;一氧化碳;传感器;信号调理;声光告警
轿车空调运行在车辆停驶期间产生的一氧化碳进入轿车车厢内极易诱发中毒事故,随着轿车的普及,由此引发的一氧化碳安全事故也越来越多。为了减少这类的事故的发生,本文设计实现了一个能够检测轿车一氧化碳浓度的系统,该系统采用凌阳公司高性能16位单片机SPCE 061 A作为控制核心,利用CO传感器MQ-7采集车内一氧化碳,引入μC/OS-II实时操作系统。中国《工业企业设计卫生标准》规定:车间连续接触8小时的最高容许浓度为300 ppm。因此,设定CO报警门限为300 ppm,当车内一氧化碳达到设定的该值时,系统可以发出声光告警提示通风换气,延时一分钟后则自动打开天窗进行通风,以保证车内人员安全,另外,为便于观察车内温度操作空调,设计了温度辅助测试单元,采用DS18B20温度传感器实现温度测量。
1 系统硬件设计
系统整体框图如图1所示。系统控制芯片选用凌阳公司生产的高性价比16 bit双核微处理器SPCE061A,该芯片的主要特性是:微处理器内核工作电压VDD为3.0-3.6 V,32位通用可编程I/O端口工作电压VDDH为5.5 V;微处理器工作时钟范围可编程实现0.32~49.152MHz;内置SRAM容量为2 kB和FLASH ROM容量为32 kB;系统在备用状态下功耗为7.2μW(时钟为关闭状态);可以进行触键唤醒设置;7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器;2个16位可编程定时器/计数器(可自动预置初始计数值);2个10位DAC(数/模转换)输出通道,可以方便实现语音提示功能;14个中断源易于实现系统的实时控制能力,同时具备串行设备接口便于和其他设备通信;低电压复位(LVR)和低电压监测(LVD)功能,保证系统的运行可靠;另外16位单片机具有高效率RISC指令系统和集成开发环境,通过内置在线仿真ICE(In Circu it Emulation)实现在线调试。微处理器支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用。
图1所示系统包括传感器采集电路、CO信号调理电路、声光报警电路、LCD显示电路、温度测量、电源电路等功能模块,系统通过CO传感器MQ-7采集电路采集CO信号,输出与CO浓度成正比的模拟电压信号,把电压信号送入SPCE061A内进行A/D转换后,经单片机处理后驱动器显示出CO浓度值,若CO浓度大于报警电路预设数值,报警电路发出报警,延时1分钟会启动天窗通风,从而防止CO中毒事故的发生。
1.1 一氧化碳测试电路设计
一氧化碳传感器MQ-7对一氧化碳具有很高的灵敏度和良好的选择性,其工作电压为5 V,具有信号输出指示,双路信号输出(模拟量输出及TTL电平输出),TTL输出有效信号为低电平。(当输出低电平时信号灯亮,可直接接单片机),模拟量输出0~5 V电压,浓度越高电压越高。且使用寿命较长和稳定性较高、可靠的优点。为了便于测量显示一氧化碳浓度,采用模拟量输出方式,SPCE061A内部的ADC功能对MQ-7传输的0~5 V电压进行模数转换,经滤波处理后进行显示,达到设定门限值时进行声光告警,延时1分钟后送出控制信号给天窗电路,天窗驱动电路打开天窗通风以保证车内一氧化碳浓度满足安全指标。信号调理电路的核心为集成运算放大器INA128,具有较大的放大性能和抗干扰能力。
MQ-7的信号调理电路如图2所示。
1.2 温度测试电路设计
温度检测电路选用DALLS公司生产的“一线总线”数字化温度传感器DS18B20,其测量温度范围达-55~125℃,在-10~85℃范围内,精度为±0.5℃。该器件只有3个引脚(即电源VDD、地线GND、数据线DQ),不需要外部元件,一条数据线进行通信。设计系统检测温度范围设计为-5~35℃,精度为0.5℃,已经能够满足绝大多数工作环境的要求;用9位数字量来表示温度。本系统用1块DS18B20实现对环境温度的检测,获得温度信息时,先由SPCE061 A的IOA8脚发送复位脉冲,使DS18B20复位并向SPCE061A发送响应脉冲,SPCE061A就可以发送读DS18B20序列号的命令,然后,SPCE061A再发出定位命令启动DS18B20进行温度转换,当温度转换结束后,SPCE061A发送DS18B20数据存储指令,即完成了温度信息数据的转换和读取。
2 系统软件设计
系统软件主要任务有:设置、修改、LCD显示的参数;检测、计算、显示温度、CO浓度等参数;温度、CO浓度状态指示及报警输出;定时存储各种检测及运算参数。本系统软件采用C编程语言和汇编编程语言混合编程、模块化结构和程序调用的方法。一般的嵌入式软件系统的设计都是采用前后台式的设计方法。传统的前台、后台式的单任务程序开发方法已经不能适应多数工程的需要,因此系统引入了μC/OS—II,采用多任务式的软件设计方法。将μC/OS—II移植到SPCE061A微处理器之后,然后就可以对操作系统本身进行需要的扩充。
在系统运行时,CO测量、温度测量、显示等任务是处于无限循环状态的,分别实现要求的功能,由μC/OS—II内核来进行调度。系统运行开始时,首先由OSInitial()完成操作系统μC/OS—II所有的变量和数据结构初始化,再初始化微控制器的定时器等,通过调用OSTask Cre at()函数依次创建各个子任务,并且分配各个子任务优先权,置所有子任务为就绪状态。最后调用OSStart()函数启动系统,开始多任务调度。
根据CO浓度测控及温度测量系统所要求实现的功能,将系统程序划分为并行存在的任务及中断程序。系统中并行存在的5个子任务按优先级从高到低依次是:系统监视任务、数据采集任务、数据处理任务、数据输出任务、显示任务。CO浓度及温度测量系统主程序流程图如图3所示。
数据采集A/D转换主程序和外部中断O的服务程序。A/D转换主程序主要实现SPCE061 A硬件初始化、数据采集处理、达到设定浓度300 ppm时进行声光告警。数据采集子程序如图4所示。
3 μC/OS-Ⅱ的植入
μC/OS-II是一种专门为微控制器设计的实时抢占式多任务操作系统,它以源代码的形式给出。其内核主要提供进程管理、时间管理、内存管理等服务。系统最多支持56个任务,每个任务均有一个独有的优先级。由于其内核为抢先式,所以总是处于运行态最高优先级的任务占用CPU。系统提供了丰富的API函数,实现进程之间的通信以及进程状态的转化。多任务系统在进行任务切换时需要完成的主要操作步骤如下:首先将当前子任务CPU所有的寄存器数值压入堆栈:然后将CPU系统堆栈的数据全部拷贝到当前子任务的堆栈中;获取下一个处于运行态且优先级最高的子任务的堆栈指针;再恢复下一个子任务的CPU寄存器的值和系统堆栈中的数据;最后通过中断返回指令或函数返回指令。在对?C/OS-Ⅱ编写任务切换程序时需注意:?C/OS-II在每个中断发生后都会产生任务调度,但在中断结束后进行任务切换时,不能调用普通任务切换函数,这是因为在中断过程中通常要将CPU的状态寄存器压栈操作。
4 结束语
文中采用SPCE061A CPU结合嵌入式实时操作系统?C/OS-II,设计并实现了轿车车内环境温度测量和CO浓度实时测控。空调开启后,可设定CO浓度在300 ppm的安全范围上,系统实时监测车内温度和CO浓度的变化情况,并记录、存储相关数据。另外,该系统便于功能扩展,测控精度高、可靠性高、系统成本低,可广泛应用在煤矿、家庭等一氧化碳存在环境。