如图3所示,系统的信号预处理电路由二级电路构成,第一级是由开关三极管组成的零偏置放大器,采用开关三极管可以保证放大器具有良好的高频响应。当输入信号为零或负电压时,三极管截止,电路输出高电平;而当输入信号为正电压时,三极管导通,此时输出电压随着输入电压的上升而下降,这使得速度里程表既可以测量任意方波信号的频率,也可以测量正弦波信号的频率。由于放大器的放大功能降低了对待测信号的幅度要求,因此,系统能对任意大于0.5V的正弦波和脉冲信号进行测量。预处理电路的第二级采用带施密特触发器的反相器DM74LS14来把放大器生成的单相脉冲转换成与COMS电平相兼容的方波信号(如图4所示),同时将输出信号加到单片机的P3.4口上。
图3 信号预处理电路图
图4 施密特触发器对脉冲的整形
利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于VT+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。
从传感器得到的矩形脉冲经传输后往往发生波形畸变。当传输线上的电容较大时,波形的上升沿将明显变坏;当传输线较长,而且接受端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象;当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。只要施密特触发器的VT+和VT-设置得合适,均能受到满意的整形效果。
3、E2PROM AT24C02的应用
AT24C02是CMOS 2048位串行E2PROM,在内部组织成256×8位。AT24C02的特点是具有允许在简单的二线总线上工作的串行接口和软件协议。
如图5所示,在本设计中用芯片AT24C02的SDA端与单片机的P3.7口相连,SCL端与单片机的P3.5口相连。因为在这个I2C总线上只有一个器件,所以把AT24C02的地址设为000,即把A0、A1、A2都接地。单片机计算出来的里程数据通过SDA、SCL向AT24C02输送数据。单片机首先向AT24C02发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向AT24C02的内部地址传送数据。当显示里程时,单片机首先向AT24C02发送读信号,然后确认后,单片机从AT24C02内部的地址向单片机的读出单元字节读出数据,供显示所用。
图5 AT24C02与单片机的接口电路图
4、显示部分
本设计的显示模块包括MC14511BCP、CD4076、74LS138和6个LED显示管等器件。
MC14511是将锁存、译码、驱动三种功能集于一身的“三合一”器件。锁存器的作用是避免在计数过程中出现跳数现象,便于观察和记录。用译码器将BCD 码转换成7段码,再经过大电流反相器,驱动共阴极LED数码管。译码器属于非时序电路,其输出状态与时钟无关,仅取决于输入的BCD码。
74LS138的作用相当于位选的功能,当C,B,A的输入分别为“000、001、010、011、100、101”时分别选择不同的MC14511,从而在不同位上显示不同的数字和小数点。CD4076是CMOS 4位三态输出D寄存器,通过74LS138的Y6,Y7来控制其CP的工作,从而使CD4076来控制小数点显示。图6是显示模块框图。
图6 显示模块框图
图7为系统显示部分的电路。系统中用74LS138的Y0~Y5选择MC14511以驱动LED显示,Y6、Y7来控制CD40756的CP,从而达到以 CD4076的Q1~Q4控制小数点的显示,另一个CD4076只用到其Q1和Q2,图中字符相对应的地方表示其引脚相连。
图7 系统显示部分的电路
系统的软件设计
1、系统软件框图
如图8所示,本系统软件采用模块化设计方法。整个系统由初始化模块、频率测量模块、速度,里程计算模块、数据转BCD码模块、速度显示模块、里程显示模块、数据存储,读取模块、定时器中断服务模块以及其他功能模块组成。
图8 系统软件框图
2、数据处理
待测信号经预处理电路后加至单片机的P3.4(T0)引脚可为单片机测量信号频率提供有效的输入信号。单片机通过检测P3.4引脚电平来决定是否启动测量频率程序。当该引脚为高电平时,系统处于等待状态,要一直到该引脚出现低电平时才开始测频率。
我们可从硬件的铝盘上知道两个过孔之间在圆周上的距离。而这个距离M正好为计算速度和距离起到了基本的数据储备作用。同时可以从TL0寄存器知道在两秒内单片机检测到的N个脉冲。而M×N所得到的正是这两秒内铝盘在圆周上所走得距离S。(此时假设在这个两秒内车子是匀速前进的),距离S除以2s的时间,就可以大概的算出这2s内铝盘的线速度。再根据铝盘与自行车的轮子保持着一样的角速度,得到铝盘的线速度与轮子线速度的关系,从而算出自行车在这2s的平均速度。
至于里程的计算,根据速度计算的分析,在得到2s内铝盘在其圆周上走过的距离后。根据它与自行车轮子的圆周走过的距离有一定比例关系(通过两者角速度一样的算法)可以通过单片机的算出自行车在这两秒内走过的路程S1。把这个路程S1与存储器原来的里程数相加即可得到目前的总里程数。通过单片机计算出来的速度和里程的数据,必须通过BCD码的转换才能输出给显示模块。总里程数的显示是设定出现在电动自行车开动,单片机开机经过初始化后显示出来,这样以来用户可以清楚的知道自己的车子已经运行了多少公里了。而速度的显示则是在计算出速度里程后立刻显示出来,体现实时性。
结论
本设计以AT89C2051为核心,通过光电传感器来检测自行车的运转情况进而实现电动自行车的速度,里程的计算及里程的累计,存储,最后用6位的LED能直观的将速度与里程显示给用户,并且在速度高于一定的值时可自动向用户报警,从而达到智能速度里程表。