现在,很多人都把骑自行车作为一项锻炼身体的运动项目,如果在自行车上加装一个里程速度表,就可以知道自己骑车的速度和行程,从而很好地控制运动量。本文介绍一种用单片机制作的自行车里程速度表。里程和速度显示可进行切换,采用三位数码管显示,最大可显示里程为99.9km。显示最高速度可为99.9km/h。该里程速度表也可以用在电动自行车和速度不超过100km/h的摩托车上。
一、电路原理
电路如图l所示。由检测传感器、单片机电路和数码显示电路等组成。
检测传感器由永久磁铁和开关型霍尔集成电路UGN3020.组成。
UGN3020由霍尔元件、放大器、整形电路及集电极开路输出电路等组成。
其功能是把磁信号转换成电信号。图2a是其内部框图。霍尔元件H为磁敏元件,当垂直于霍尔元件的磁场强度随之变化时,其两端的电压就会发生变化,经放大和整形后,即可在③脚输出脉冲电信号。其工作特性如图2b所示。由于有一定的磁滞效应。可保证开关无抖动。Bop为工作点“开”的磁场强度,Brp为释放点“关”的磁场强度。永久磁铁固定在车轮的辐条上,UGN3020固定在车轮的叉架上。
检测传感器的工作原理如下:车轮每转一周,磁铁经过UGN3020一次,其③脚就输出一个脉冲信号。UGN3020输出的脉冲信号作为单片机AT89C2051的外中断信号。从P3.2口输入。单片机测量脉冲信号的个数和脉冲周期。根据脉冲信号的个数计算出里程,根据脉冲信号的周期计算出速度并送数码管显示。Sl用来进行里程和速度显示的切换,在初始状态下显示的是速度。数码管DSl~DS3、VTl~VT3、R4~R13等组成显示电路。使用共阳数码管。P3.3~P3.5为数码管的动态扫描位驱动。P1.0~P1.6作数码段码输出。
二、程序设计
程序用C语言编写,由主程序、外中断O服务程序、11D中断服务程序、延时子程序等模块组成。主程序主要完成程序初始化和键盘处理。
外部中断O服务程序由测量、计算、读数等部分组成,TO中断服务程序由计时、动态扫描显示、自行车停车判断等部分组成。
从P3.2口输入的脉冲信号作为外中断O的中断请求信号。采用沿触发方式。在测量速度时,由于车轮转动脉冲信号的频率很低,不适宜使用计数的方式进行测量,所以采用测脉冲周期的方法进行测量。用脉冲信号系统来控制计时信号,通过计时数计算出脉冲周期,用车轮的周长除以周期便可得到自行车的行驶速度。在测量里程时,用脉冲信号个数乘以车轮的周长便可获得行驶里程。需要说明的是:脉冲信号周期和个数是同时测量的。要做的只是用按钮开关Sl切换显示。
本文的程序是针对车轮直径为26英寸的自行车编写的。
对于其他规格的自行车。
只要改写程序spm=14904(常量1),n和sPIN=207(常量2)×c即可。为了避免使用浮点数。运算结果长度是以百米为单位的,数据读出时,在第三位数加小数点就换算成千米了。为方便读者制作,现列出各种规格的轮径和轮周长、程序常量的对应值见附表,供参考。
径,英寸 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 28.5 |
轮周长/cm | 128 | 144 | 160 | 176 | 192 | 207 | 223 | 227 |
常量l | 9216 | 10368 | 11520 | 12672 | 13824 | 14904 | 16056 | 16344 |
常量2 | 128 | 144 | 160 | 176 | 192 | 207 | 223 | 227 |
定时器TD的中断定时时间为5ms,每中断一次计时变量n加l,因此n的单位为5ms。例如:自行车车轮转一周对应的n值为100。则对应的时间为0.5s。由此可得自行车的速度为14.9km/h。如果n的值达到1000,即5秒钟仍没有发生外部中断,即表示自行车没有前进。n也被清零,速度显示为O。读数采用三位显示,TD中断一次显示一位数。中断3次就可以刷新一次数据。即15ms刷新一次数据。