基于430单片机的出租车计价器设计与实现*
2015-09-21齐轩晨
叶 磊,黄 莹,齐轩晨,刘 艳
(南京邮电大学 电子科学与工程学院,江苏 南京 210023)
0 引言
随着城市化进程的加快,出租车需求量不断增加、车型逐渐多样化[1];随着司机对自身权益的要求,针对夜间出车、堵塞等待,分模式计费是必然趋势;物价升高以及附加燃油费的变动,引起出租车收费调整,计价器计价算法却不能及时更新[2]。出租车计价器的计费方式以及准确性与司机、乘客的利益息息相关。
传统出租车计价器的设计是采用普通液晶显示加机械按键控制,机械按键频繁使用之后易发生故障[3];计价器依赖硬件,易被篡改,计价页面信息单一,不利于乘客监督和保障自身利益;计价器更新麻烦,不能及时跟上市场变化。针对这些不足,本文基于低功耗的MSP430单片机设计了一款出租车计价器,采用触摸液晶显示器,电路单元简单,调整方便,模式、单价、车速等信息一目了然,很好地弥补了已有出租车计价器的不足。
1 设计思路
传统计价器利用外部芯片的定时器捕捉脉冲信号实现测速、测里程的功能,同时通过使用外部ROM芯片进行掉电保护。MSP430F149单片机集成了这些硬件条件,同时F149单片机内部定时器还具有捕获上升或下降沿的工作方式[4],结果更精确。计价器正常工作时,点击触摸式液晶屏上选项,将触点坐标送给单片机,单片机识别出用户指令,选择相应状态;光电传感器将机械转动信号转为电脉冲信号送入单片机处理;单片机通过定时中断获取脉冲周期,根据车轮半径等实际参数算出速度、里程等信息送液晶更新显示;单片机通过SPI方式连接SD卡,送入液晶的数据同时缓存在其中,起到掉电保护的作用;根据市场对起步价及单价的调整,出租车公司可随时更新系统程序。
2 硬件设计
整个出租车计价器设计包括四个部分:单片机模块、掉电保护模块、液晶显示模块和光电传感器测速模块。整个系统由8节干电池供电,整体结构如图1所示。
图1 整体结构图
2.1 单片机单元电路设计
单片机MSP430F149的单元电路图如图2所示。16位超低功耗MSP430F149单片机包括时钟模块、定时器A、定时器B、串行通信接口、比较器以及多个 I/O口等。单片机的定时器有比较/捕获模式,工作时钟可以由对内部时钟分频得到或者外接时钟提供,定时器工作在捕获模式,设置为上升沿捕获,可以获得脉冲周期间隔内的主计数器的计数差值。为了提高系统的防作弊能力[5],可以从变速箱的输入齿轮以及输出齿轮处获取脉冲信号,按固有齿轮比编写的程序,比较两者计数值,允许极小误差。如果改换变速箱齿轮,出租车运行之后,两处脉冲不满足确定关系,计价器不会进行计费。
计价器的时间显示可以不需要外部的实时时钟芯片,利用单片机的定时器的定时中断,由司机根据实际时间设定初值,当定时中断触发时,时间加上1 s,并更新液晶显示的日期时间。
图2 单片机系统电路图
2.2 测速单元电路设计
以往出租车计价器中检测脉冲的霍尔传感器易受磁铁干扰,有一种作弊方式:增加磁铁个数导致电脉冲信号增加[5],使得计价器多计费。采用光电传感器能有效地避免电磁干扰。基于光电传感器[6]的原理设计测速电路:将机械转动信号转变为光脉冲信号,再转变为电脉冲信号送入单片机处理,电路原理图如图3所示。为了避免可见光的影响同时提高响应速度,选用GaAlAs红外对管;为保护红外发光管和光敏接收管,两管通过电阻接地,起限流作用;用三极管对光强变化引起的电位升降信号进行放大;最后通过反相器74HC04对三极管集电极的电脉冲信号进行消抖整形,避免单片机误判造成显示不稳定。
图3 光电测速电路原理图
2.3 液晶显示单元电路设计
液晶显示单元电路[7]包括控制电路(图4)、输入输出接口电路(图5)。液晶屏采用DMTFT-28型TFT彩色触摸屏,触摸屏的结构[8]包括三个部分:导体层之间的隔离层、电极以及两层透明的阻性导体层。如果有外力使上下两层在某个点接触,控制电路通过触摸屏控制芯片XPT2046分别采集触点在X轴和Y轴上产生的数字电压量,运用公式计算触摸点坐标,根据坐标位置对应的指令,单片机对液晶显示做出状态更改或者页面切换。输入输出接口电路中,第35~40脚为触摸控制接口;第26~33脚为液晶数据口高 8位;第 21~24脚是SD卡的控制接口;第17脚为I/O扩展控制位LE脚(74HC573锁存芯片的 LE脚);第 4~16脚与控制器之间增加了限流电阻,可以在使用5 V控制器驱动液晶时,保护液晶避免过流而损坏,限流电阻阻值1 kΩ、2 kΩ均可。
图4 液晶控制电路
图5 输入输出接口电路
2.4 掉电保护单元电路设计
掉电保护电路设计的关键是选用合适的外部存储器以及相应的通信方式。Flash写入速度比较慢,而且即使速度能跟上,内部的Flash写入次数也有限,很快就不能工作了,给程序空间带来很多风险。这里采用SD卡以及SPI串行通信协议[9],接口电路如图6所示。由SCLK提供时钟脉冲,SDI、SDO基于此脉冲完成数据传输。串行数据通过SDO线送入到单片机,数据在时钟下降沿或上升沿时改变,在紧接着的上升沿或下降沿被读取。输入数据时原理类似。
图6 SD卡接口电路
3 软件设计
软件部分程序采用模块化的设计方法,主要是液晶显示程序、定时器中断测速程序和掉电存储程序,其中液晶显示程序包括定时中断计时程序、触点坐标判断程序以及预先设置的3个界面。
当车启动时,出租车自身的电气系统给计价器供电,MSP430单片机对定时器、液晶初始化。当电机开始转动时,会产生光脉冲由光电传感器转换为电脉冲送入单片机的定时器捕捉相邻上升沿,根据定时器所使用的时钟频率可以算出脉冲频率,继而算出电机的转动速度,再根据齿轮比等参数即可得到里程数。由里程数以及计费规则,单片机会自动算出总车费并显示在屏幕上。当司机点触屏幕时,单片机会根据点触的坐标位置,选择相应的指令,或是更新数据或是切换到预先配置的界面中。如果电路系统供电突然中断,单片机在下次上电启动时,将储存在SD卡中的数据、状态取出继续运行。
源程序中已经设定了白天、黑夜两种模式,对应了两种不同的计费规则,由单片机根据系统时间自行选择模式,乘客能在液晶屏上看到此时的时间、模式。当有乘客上车时,司机只需点击“载客”,系统就会进行计费;未载客时,点击“空闲”即可。计费规则综合考虑了起步价、每公里车费、燃油附加费,只需要根据最终显示的总车费付费即可。当需要对起步价或单价或燃油附加费进行调整时,只需要修改源程序的参数,再将新程序装载到MSP430单片机中即可。主程序框图如图7所示。
图7 主程序框图
4 测试及分析
设计完成后,编写了相关功能的程序烧入单片机,通过在小车模型上模拟出租车运行,观察计价器工作情况。小车通过4个LM298N芯片驱动直流电机转动;在某两个电机转轴处用光电传感器取脉冲分别送入单片机比较,误差在运行范围内即可正常计价(模拟真实出租车系统变速箱的两个齿轮,防作弊措施);整个小车系统以8节干电池供电,主要用于驱动直流电机工作,计价器部分功耗很低,在出租车系统中完全能稳定工作;计价器页面清晰显示载客状态、时间、模式、单价、里程数以及车费。表1是模拟运行显示的信息,实物见图8。
表1 模拟出租车运行信息表
图8 基于430单片机出租车计价器实物图
5 结束语
经过实验测试,本系统能很好地工作,改善了已有出租车计价器的不足之处:机械按键易故障;计价器依赖硬件,易被篡改,计价页面信息单一;计价器更新麻烦。新的设计具有易于系统更新、多处防作弊措施、分模式综合计费、系统稳定精简、低功耗等优点。
[1]赵巧珍.形形色色的出租汽车车型[J].交通与运输,2013(4):74-76.
[2]陈寒青.新型出租车计价器软件功能分析与实现[J].现代电子技术,2011,34(10):35-38.
[3]王立忠,王薏林,贺五洋,等.基于单片机的出租车计价器检定装置的设计[J].吉林大学学报(信息科学版),2014,32(6):624-631.
[4]曹浩彤,刘艳.基于 430单片机的简易频率计设计[J].微型机与应用,2014,33(21):92-94.
[5]叶建针.出租车计价器防作弊技术与预防措施[J].科技信息,2011(19):79,82.
[6]乔勇惠.光电传感器原理及应用[J].可编程控制器与工厂自动化,2008(5):103-106,123.
[7]蓝晓柯,陈朋.基于TFT彩屏的便携式智能车手持调试平台[J].计算机系统应用,2013(6):57-59,101.
[8]周波.TFT液晶显示原理[J].科技资讯,2006(35):9-12.
[9]刘景文.测量仪器基于SD卡的数据导出接口系统设计[D].天津:天津大学,2009.