一种便携式汽油标号检测仪的设计
摘要:介绍了一种由C51单片机控制的便携式汽油标号检测仪,对该系统的测量原理和控制器的硬件结构进行了说明,介绍了软件主流程结构及其模块化设计。通过与传统油介质检测方法的比较,说明了该系统各项性能的优越性及其广泛的应用价值。
关键词:电容 CAN总线 RTOS 面向对象
随着近年来我国经济的快速发展,汽车逐渐走入普通家庭,人们对汽油的消费也多了起来。由于汽车发动机对汽油的指标有严格的限制,使用指标不合格的汽油会损坏发动机;于是,对汽油标号的检测就变得重要起来。为此,设计了一种便携式油介质检测仪,用它可以实现对汽油标号的实时检测,从而满足了市场上实际应用的需要。
1 测量方案的实现
1.1 设计原理
1.1.1 背景知识
汽油的标号是由其辛烷值确定的。辛烷值是测定汽油抗震性能的一种指标,辛烷值越大,汽油的抗震性能越好。由于异辛烷的抗爆性最好,所以将它的抗爆性定为100,也就是辛烷值为100。其它燃料的辛烷值是通过与异辛烷比较来确定的,如93号汽油的抗爆性是异辛烷的93%,这种汽油的辛烷值就定为93。
1.1.2 模型的建立
现采用电容电测的方法,以电容为传感器,以相对介电常数为相关变量,间接测定汽油辛烷值。汽油是具有电气绝缘性能的液体混合物,粘度低、流动性好、挥发性强,这些特点为使用电容式传感器直接测量其相对介电常数创造了有利条件。
javascript:window.open(this.src);" style="cursor:pointer;"/>
由电工学知识可知,平行板间的电容为:
C=ε0·εr·S/b
其中?熏ε0=8.85415×10-12F/m,为真空的介电常数;εr为相对介电常数(在空气中εr0≈1)。
平行板电容式传感器在空气中的电容为:
C0=ε0·εr0·S/b
式中,S为平行板的面积;b为平行板的间距。
同一传感器在汽油中的电容为:
C=ε0·εrn·S/b
于是有:
C/C0=εrn·εr0≈εrn
所以,汽油的相对介电常数εrn约等于同一传感器以汽油为介质时的电容值C与以空气为介质的电容值C0之比。对同一品质的汽油,该比值为一常数。于是,可以通过测定浸入待测油品中的电容传感器的电容值C来得到待测汽油的相对介电常数εrn。
图2 电路原理图
通过大量实测数据,得出汽油的辛烷值Yn与其相对介电常数εrn之间存在着函数关系,即:
Yn=Y0-k·εrn
其中,k为斜率参数;Y0为截距参数。
这些参数需要根据实际环境在现场由试验标定设置。
1.2 硬件设计
本装置的测量原理框图如图1所示。
这里选用了MAX038高频精密波形发生器作为整个电路的核心器件,产生高频方波。MAX038的工作频率范围为0.1Hz~20MHz;输出波形可以是三角波、正弦波、锯齿波、方波和脉冲波;频率和占空比独立调节;占空比可变(15%~85%);具有低阻抗(0.1Ω)输出缓冲器和低失真(0.75%)正弦波。
MAX038的工作电压为±5V,其基本振荡器是一种通过恒定电流对电容C进行交替充放电的张弛振荡器,同时产生三角波和方波。充放电电流由流入引脚IIN的电流来控制,由施加在引脚FADJ和引脚DADJ的电压来调节。
javascript:window.open(this.src);" style="cursor:pointer;"/>
输出波形的占空比可以通过对引脚DADJ施加电压来控制。在正常情况下,VDADJ=0V,占空比为50%。VDADJ从+2.3V变到-2.3V时,占空比从15%变为85%,大概每伏特变化15%。当VDADJ超过±2.3V时,将使频率漂移,并引起不稳定。调节引脚DADJ上的电压可以减少正弦波的失真。未调整时(VDADJ=0V)的占空比为50%±2%,若对VDADJ加一个小的调整电压(不大于100mV),则可以使波形准确对称,并使失真减到最小。
MAX038的输出频率由输入IIN引脚的电流、COSC引脚电容和FADJ引脚上的电压决定。当VFADJ=0V时,输出频率F0=IIIN/C,则周期T0=C/IIIN。其中,IIIN为输入IIN引脚的电流(2μA~750μA),C为COSC所接的电容(10pF~200pF)。当10μA≤IIIN≤400μA时,MAX038达到最佳工作性能。所以,当需要固定频率时,取IIIN为100μA。电容必须用短引线,尽量减小分布电容的影响。在COSC引脚及其引线周围用一个接地平面来减小其它杂散信号的耦合。
由于MAX038产生的是高频信号,很难直接进行计数和相应的计算,所以必须对MAX038的输出信号进行分频。在这里,选用了两片73HC393进行分频,从而得到便于处理的方波信号。
具体电路如图2所示。
1.3 软件设计
普通的单片机软件都是采用一种前后台的编程方式,后台采用死循环轮询的方式,前台处于等待中断的状态,一旦中断发生就会打断后台的轮询。这种方式将各种情况的处理混杂在一起,使得软件的复杂度大大增加,编写和维护都很困难,而且任何一个部分出了问题,整个系统就会处于死机状态。为此选择在RTOS(Real Time Operation System)基础上构建系统的软件。RTOS的特点就是多任务,可以许多个任务同时存在,根据一定的调度规则,进行任务切换。多任务使得CPU的利用率达到了最大,并且使软件最大程度地模块化,便于编写。
系统软件可分为两大模块:CPU模块和LCD模块。
CPU模块包含以下任务:
(1)CAN管理任务,负责CPU和LCD板的通信,可以发送/接收一个Modbus的数据包。
(2)232管理任务,负责CPU和上位机的通信,可以发送/接收一个Modbus的数据包。
(3)CAN中断任务,负责发送或接收一个CAN帧。
(4)232中断任务,负责发送或接收一个232帧。
(5)Modbus任务,可以执行以下操作。
①接收一个232/CAN的数据包。
②发送一个232/CAN的响应数据包,等待232/CAN的发送状态返回信息。
③分析接收到的232/CAN数据包中的内容,对实时数据库和历史数据库进行读写操作,或者搜索操作。
(6)I/O时钟任务,定时执行以下操作(两次刷新间隔500ms):
①读取外界模拟量,并写到实时数据库。
②读取外界开关量,并写到实时数据库。
③读取实时数据库,并输出开关量和模拟量。
④调整系统的时间。刷新系统的时候要求独占CPU。
(7)时间任务,定时刷新看门狗(两次刷新间隔500ms)。
(8)打印任务,接收信箱中的要求,进行打印,每次打印一个字符(两个字符间隔100ms)。
(9)存盘任务,接收信箱中的要求,进行存盘,每次存储一个内存块,独占CPU(两个内存块间隔100ms)。
(10)自动检测任务,根据当前系统的状态执行自动检测控制逻辑,调节数据库,达到控制所有I/O的目的(两次调节相差1s)。
javascript:window.open(this.src);" style="cursor:pointer;"/>