新闻中心

EEPW首页>嵌入式系统>设计应用> 新型出租车计价器软件功能分析与实现

新型出租车计价器软件功能分析与实现

作者: 时间:2011-06-16 来源:网络 收藏


2 计程
2.1 计程原理与设计
将安装在车辆变速箱输出端齿轮的霍尔传感器接到单片机外部中断接口上,车轮每转动一圈,霍尔传感器将产生一个下降沿脉冲(霍尔脉冲),触发外部中断。设车轮直径0.6 m,最高时速200 km/h,则两次外部中断之间最短时间间隔为:0.6×3.14/(200×1 000/3 600)×1 000=33.9 ms。
对单片机而言,所有计价、计时、显示、统计等,都可在33.9 ms时间内完成,所以对计程部分采用每次外部中断到来时(F_int0= 1),调用外部中断处理程序来处理计程价。具体流程如图1所示。
设计一个占5字节的计程单元S,车轮周长占3 B,每1 B存储内容如表3所示。对计程价每100 m处理1次,所以在计程计子程序中首先是让计程单元加上车轮周长,判断是否已行驶100 m。从表3可以看出,做加法计算时如果第3字节有向第4字节进位,说明已经行驶了100 m,这时再判断计程单元的大小,判断是起步价,还是3~8 km的短途价或是8 km以上的长途价,继而再根据时间判断是夜班还是白班,加上不同的计价参数。

本文引用地址://m.amcfsurvey.com/article/172674.htm

c.JPG


2.2 计程误差
因为在计程时用的是每来一个霍尔脉冲加一个车轮周长的方法,车轮周长误差的累积将引起总计程的系统误差。车轮周长用3 B压缩BCD码表示,1 B整数(单位:m),2 B小数,每次系统误差为10-4m,相对误差小于0.01%。
假设最大计程1000km,车轮周长1.5m,则计程最大系统误差为:(1 000×1 000/1.5)×10-4=66.7m,偶然误差为2个周长,即3.0m。
对计程价每100 m加1次,即计程误差小于1个计价单位。

3 误时
3.1 误时原理与设计
误时价的计算是以Vwait=5 km/h为切换点,当速度低于5 km/h时,需要计算误时价。已知:速度=周长/时间间隔。为了判断速度,开启单片机定时器来计算两次霍尔脉冲的时间间隔。为了计算方便,对于51单片机开设50 ms的定时器中断。特别设计一个占5 B的总误时单元,3 B的计时单元。这里第3字节存储的是50 ms中断的次数,具体存储内容如表4所示。其中总误时单元存储的是总的误时时间,计时单元专门存储霍尔脉冲间隔。

d.JPG


当行驶速度为5 km/h时,这时霍尔脉冲的时间间隔为:0.6×3.14/(5×1 000/3 600)×1 000=1 356.48≈27×50 ms。
根据上面计算,在两次霍尔脉冲之间,50 ms中断的次数大于27时,要计算误时价。而对误时价是10s处理1次,即调用1次误时价子程序,这时分两种情况:
第一种情况是在外部中断处理程序中。外部中断到来(F_int0=1)后,计时单元中50 ms次数大于27,这时总误时单元要加上计时单元,总误时单元的50 ms次数如果大于或等于200,则调用误时价子程序。还要注意的是,因为中断到来后,定时器会重新赋初值,所以需要把上一次定时器中不足50 ms的计数值转换为微秒,存储到计时单元的第1和第2个字节中。流程图如图1所示。
第二种情况是在50 ms中断处理程序中。计时单元50 ms中断次数已达到200次即两次霍尔脉冲的间隔超过了10 s,这时计时单元清零,也要调用误时价子程序。流程图如图2所示。

f.JPG


误时价子程序里先将总误时的10 s单元加1,然后判断有没有超过起价等待时间,如果超过的话,再根据时间判断,是要加白天10 s误时价,还是加夜间10 s误时价。



评论


相关推荐

技术专区

关闭