1. 引言
我国已成为交通大国,无论是机动车保有量还是各类交通运输工具数量规模,都在国际上排名前列。在这些交通工具的燃料使用监测管理方面,目前仍然处于待开发实现阶段。虽然部分学者做了一些研究,包括闫尉深等人对隧道内积水深度进行探测 [1] ,但未联系到机动车油箱系统设计。李如意等人对输液情况进行检测 [2] ,周朝霞等人设计远程智能输液系统等 [3] ,曾鑫等人对于输液自动报警进行研究 [4] ,他们都只关注到输液方面,没有拓展应用范围,局限性很大。师显强等人对于飞机燃油测量计算方法仅仅进行了理论研究 [5] ,但对于机动车油箱燃料方面的液位监测,目前来看还没有引起足够的重视。实际上如果有相应的油箱液位监测系统,当燃料不足时,能及时提醒驾驶员做出补充燃料等决策,提高行驶效率。
本文提出基于MSP430单片机设计油箱液位监测系统,该液位仪利用超声波探头以及单片机开发板,利用超声波测距原理实现较为精确的箱体液位监测,并可根据用户需求设置上下限报警值从而在液位到达警戒值时实现报警功能。液位仪配套了相关显示设备,可以实现实时液位显示、报警值设置的功能。本系统配套了Windows平台下的上位机软件,可以实现绘制实时液位变化的连续曲线并进行相关参数设置与显示。将实用性和可操作性更好地统一起来。系统潜在用户广泛,个人用户可以用来检测私家车的油箱状况,公司用户则可以搭配上位机监测公司内每台车的油箱状况。
2. 系统组成
本文设计的油箱检测系统,由超声波传感模块、单片机模块、显示模块、监测上位机模块四部分组成。其中超声波传感模块主要负责油箱液位变化的探测,并且将变化信息传递给单片机进行进一步处理;单片机模块主要对液位信息进行软件处理,包括对其进行设置、分析和识别,当液位低于与设置时进行报警等功能;显示模块主要将油箱液位实时进行显示,使使用者观察更直观;无线通信模块主要是将单片机和上位机进行通信联络,在PC端展示机动车油箱液位变化曲线情况。系统组成详见表1列举。

Table 1. Module list of fuel tank monitoring system
表1. 油箱监测系统模块清单
3. 系统原理
3.1. 系统传输信息流
本系统的信息传输流程大致如下:首先由超声波传感器利用超声波探测原理得到液位信息,接下来依据特定的协议通过无线串口模块传输给MSP430单片机,单片机可以设置上下阈值和显示测得的数据。液位数据信息经单片机处理过以后会通过串口将数据传输到上位机来显示监测的结果。图1为油箱监测系统各模块连接示意图。

Figure 1. Schematic diagram of module connection of fuel tank monitoring system
图1. 油箱监测系统模块连接示意图
3.2. 超声波传感器模块
本系统通过一个5 V电源,利用升压线转为12 V电源给超声波传感器供电,其次通过油箱底部的超声波传感器探头发送超声波,超声波接收器接收经过液面反射后的超声波,核心处理板利用时间差来计算液面高度,并将数据转换为1~5 V模拟电压作为输出给显示模块和上位机。
3.3. 单片机模块
MSP430F149单片机为本油箱监测系统核心,对传感器信号进行信号处理,并且在单片机内设计出相应软件程序,当液面低于设置的报警值后,会自动进行报警,同时以LED指示灯亮和蜂鸣器响为报警信号,提醒用户注意。单片机处理完数据后,将数据通过串行口传送给上位机。MSP430单片机相较于刘子源等人所使用传统STC89C52单片机的液位监测系统 [6] ,功耗更低,系统使用时间更长,在系统可持续性上有所提升。
3.4. 监测上位机模块
上位机中有使用程序编写的一个液面高度显示程序,当油箱内液面有变化时,将会有波形跳变指示,对应到当前液面的高度。当漏油、偷油事件发生,油量迅速减少时会自动报警,以灯亮的不同数目和蜂鸣器鸣叫作为报警信号,在液晶屏和上位机上显示剩余油量及其他相关信息。图2为系统硬件设计总体框图。

Figure 2. Overall block diagram of system hardware design
图2. 系统硬件设计总体框图
4. 系统特点及应用
本系统具有以下特点:
1) 构成简单,元件均为市面上常见的电子元件。
2) 液面测量较为精确并且采用非机械结构测量,无机械传动所产生的变差和刻度误差,不需要进行误差计算和调整。
3) 结构设计紧凑无冗杂,运行可靠。
4) 所搭配的上位机交互界面数据清晰可靠,易于分析。
5) 核心代码可根据搭配元件不同进行调整,代码操作简单可行。
5. 系统测试验证
5.1. 超声波探头测试
先将超声波探头与显示模块相连接,然后通过升压线把显示模块的另一个接口与电源相连,使探头工作在12 V电压下。用砂纸打磨好测试油箱底部,将耦合剂均匀涂抹于探头上部,之后固定在干净的油箱底部。打开电源开关,若显示模块上有数字显示,则说明探头可正常工作(图中杯中没有装水,故显示为0)。连接示意如图3所示。

Figure 3. Test example of ultrasonic sensor probe
图3. 超声波传感器探头测试示例
5.2. 显示模块
将12864液晶背后20针引脚插入MSP430单片机开发板上对应的20针排母,用于显示油箱液位信息提示用户。排母位置示意如图4所示。

Figure 4. Schematic diagram of 20-pin liquid crystal row bus based on MSP430 single chip microcomputer
图4. MSP430单片机20针液晶排母示意图
5.3. 串口通信模块
将单片机9针串口利用USB转串口线与上位机连接,进行油箱液位信息交互。示意如图5所示。

Figure 5. Schematic diagram of 9-pin serial port position of MSP430 single chip microcomputer
图5. MSP430单片机9针串口位置示意图
整个系统接通电源后,仪表自检,液晶屏显示基本的数据格式,单片机8位LED亮,蜂鸣器发声,约200 ms后LED灭,蜂鸣器停止发声。进入工作状态,液晶屏开始显示测得的数值。当接收测定值失败时,蜂鸣器发出10 KHz的声音。当测定值高于上限时,8个LED亮1 s后熄灭,蜂鸣器发出2 KHz的声音。当测定值低于下限时,8个LED灯循环点亮,循环一次后熄灭。蜂鸣器发出500 Hz的声音。上限是指油箱内油量在安全范围内的最高值,下限是指油箱内油量在可保证正常行驶的最低值。此处的上下限可通过软件自行增减设置。
5.4. 软件实现
本系统在上位机通过编程实现对液位阈值的设置、指示灯展示以及报警等功能。能更加直观的观察将当前油箱液位信息。程序主函数部分初始化模块:
void main(void)
{
uchar i = 0;
WDT_Init(); //看门狗设置,关闭看门狗
Clock_Init(); //系统时钟设置
Port_Init(); //系统初始化,设置IO口属性
delay_ms(100); //延时100 ms
LCD_init(); //液晶参数初始化设置
LCD_clear(); //清屏
Display();
LED8DIR = 0xff;
P6DIR = 0xff;//p6.7蜂鸣器 输出
TIMERA_Init();
KEYPort_init();
UART_Init(); //串口设置初始化
TACCR0 = 1000 − 1; //上电输出1 K频率声音
TACTL| = MC0; //启动定时器产生声音
LED8 = 0X00;
delay_ms (200);
TACTL& = ~MC0; //暂停计数器 停止声音
BEEP_SET; //暂停定时器后 关闭蜂鸣器
LED8 = 0XFF;//灭
delay_ms (200);
显示模块,显示油箱液位当前信息,具体代码实现:
void Display (void)
{
DisplayCgrom (0x80, “油箱液位监测系统”);//第一行第一个汉字位置起
DisplayCgrom (0x90, “当前油量: cm”);//第二行第一个汉字位置
DisplayCgrom (0x88, “上限30 cm下限10 cm”);//第三行第一个汉字位置
DisplayCgrom (0x98, “运行状态:初始化”);//第四行第一个汉字位置
}
这部分代码主要通过初始化函数设置液晶的各项参数。实现的功能就是显示两部分内容,第一部分就是静态内容,“油箱液位监测系统”、“当前油量:cm”、“上限30 cm下限10 cm”、“运行状态:初始化”。第二部分是动态内容,就是将传感器监测到的数据进行显示“当前油量:*** cm”。系统总体代码功能很多,包括串口初始化、单片机看门狗设置、中断设置、定时器设置等。本文设计的油箱监测系统通过软硬件设计与实现,能够较好的监测机动车油箱液位信息,为用户提供方便。
6. 结语
本文基于MSP430单片机,设计实现了机动车油箱监测系统。整个系统创新的利用超声波探测当前油箱内燃料液位高度,利用超声原理实现精确测量液位信息。并将数据信息反馈至单片机,单片机对数据信息进行信号处理,搭配LCD显示屏显示液位信息。同时使用上位机软件,可展示液位图信息绘制实时液位曲线,对车辆实时信息进行展示。总体来说,该系统能够帮助用户更好掌握车辆燃料信息,有一定实用价值。