1、基于单片机的行车测速系统 XX (XXXX,XXXX) 摘 要 本设计采用 AT89S52 单片机作为控制芯片,利用霍尔传感器采集被测信号,将被测信号通过 单片机计算在 LCD 上进行显示,另外通过矩阵键盘设置计算参数,并使用存储芯片储存重要数据和参 数,构成了基于单片机的行车测速系统。该测速系统除了可以测量车辆行驶速度,还可以记录车辆行 驶里程,而且具有价格便宜、使用方便、可靠性高等特点,并能够有效提高对测速传感器输出信号测 量的准确性和稳定性,在日常生活运用中具有独特的优势。 关键词 AT89S52; 测速系统; 霍尔传感器 1 绪论 如今随着半导体技术的不断发展,微控制单元 MCU(Mi
2、croControllerUnit)以其集 成度高、功能强、速度快、可靠性好等特点被电子系统开发人员广泛的运用到控制系统、 智能仪表、机电一体化产品、智能接口、智能民用产品等领域。单片机的突出特点是体 积小,抗干扰性好,功耗小,可靠性好,有较强的模拟接口,代码保密性好,所以得到 了官方的应用 1。采用单片机作为主芯片可以有效的解决对采样信号的处理问题,并能 够降低开发成本,提升开发的效率和开发的质量。 现代汽车上一般都装有发动机控制、自动驾驶、ABS、TRC、自动锁车门、主动式悬 架、导向系统、电子仪表等装置 2,这些装置都需要汽车车速信号。速度是一个很重要 的物理量,获取准确的速度能够保证车
3、辆行驶的安全性,而基于单片机技术的测速系统 具有价格便宜、使用方便、可靠性高等特点,能有效提高对测速传感器输出信号测量的 准确性和稳定性。 因此本文提出了一种基于单片机的行车测速系统,有效速度范围为 10300 km/h,完 全符合 JJG 527-2007 的标准测速仪的速度范围为 20180 km/h 和 MPE 为1%的要求。因 此,其可用于机动车的测速,为机动车的安全驾驶提供安全保障和技术支持。 2 方案的设计与论证 2.1 测速系统主要组成器件的选择与论证 2.1.1 微控制器的选择 方案一:采用 80C52 单片机实现。80C52 内置 8 位中央处理单元、256 字节内部数据 存
4、储器 RAM、8k 片内程序存储器(ROM) 、32 个双向输入/输出(I/O)口、3 个 16 位定时/ 计数器和 5 个两级中断结构,一个全双工串行通信口,片内时钟振荡电路 3。此外, 80C52 还可工作于低功耗模式,可通过两种软件选择空闲模式和掉电模式。在空闲模式下 冻结 CPU 而 RAM 定时器、串行口和中断系统维持其功能 4。掉电模式下,保存 RAM 数据, 时钟振荡停止,同时停止芯片内其它功能。 方案二:采用 AT89S52 单片机实现。AT89S52 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 1
5、6 位定时器 /计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路 5。另外, AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护模式下,RAM 内 容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止 6。 由于 80C52 不支持在线系统编程,而 AT89S52 支持,80C52 具有一个数据指针 DPTR,而 AT89S52 具有两个数据指针 DPTR0 和 DPTR1,且 AT89S52 含有一个看门狗定时器, 具有断电标志 PO
6、F,因此本设计选择 AT89S52。 2.1.2 测速传感器的选择 方案一:光电式脉冲发生器。 主要由光源、光敏器件和遮光盘组成。车轮旋转带动遮光盘旋转,当遮光盘没有遮 住光源时,光源的光射到光敏器件上,光敏器件中有电流流过,于是在输出端产生电压 输出。其脉冲频率与车速成正比,经过单片机处理后,即可得出车辆的速度。这种光脉 冲发生装置,在转换速度较高的情况下,由于车辆运行中的振动引起的光脉冲干扰等问 题不好解决,现在采用的不多。 方案二:磁电式脉冲发生器。 将导磁材料的齿轮固定在转轴上,对着齿轮端面固定一块磁钢,霍尔元件贴在磁钢 的一个端面上,随着齿轮转动,元件的电压信号输出呈周期性变化。霍尔
7、传感器输出频 率与转速成正比,此信号经单片机处理后,即可得出车辆的速度。 本设计的测速传感器要求稳定性好,灵敏度高和精度高,而且对汽车速度的测量还 要要求传感器能够适应各种各样的环境,所以这里选择方案二,并采用 HAL44E 霍尔传感 器。其原因还有三点:一是霍尔传感器输出信号电压幅值不受转速的影响;二是频率响 应高,其响应频率高达 20kHz7,相当于车速为 1000km/h 时所检测的信号频率;三是抗 电磁波干扰能力强。 2.1.3 显示模块的选择 方案一:数码管显示。 优点:亮度高,价格便宜,寿命长。缺点:显示简单,只能 显示 0-9 的数字及简单的字符,数码管电路连接比较复杂。 方案二
8、:Nokia5110 LCD 显示。 优点:可以显示字符、汉字,具有功耗低、与单片 机之间的数据通信简单易操作等特点。缺点:亮度较低。 综合本设计的功能需求及电路连接的繁简程度,本设计选择 Nokia5110 LCD 显示。 2.2 系统的设计方案及结构框图 2.2.1 测速系统的测速原理 本设计是采用 AT89S52 单片机作为主控制芯片,通过对转子旋转引起的周期脉冲信 号的频率进行测量,将所得频率通过计算变换成实际的运行速度,并通过计算转子旋转 总圈数得出行驶里程,然后通过串行存储芯片 24c02 芯片储存行驶数据并通过 Nokia5110 LCD 显示器显示车速和车辆行驶里程。测速系统的
9、结构框图如图 2-1 所示。 图 2-1 系统结构框图 2.2.2 测速系统设计概述 通过对测速系统的理论研究和实际电路的设计,将霍尔传感器、单片机、存储器、 按键、LCD 显示器有机的结合在一起从而构成了一个完整的测速系统。其关键技术主要 在四个方面:初级信号采集模块的设计,核心处理计算模块的设计,目标信息的显示模 块的设计,关键数据的存储读写模块的设计。通过显示器直观的显示数据信息,使用者 可以方便的了解到当前的车速和行驶里程。该系统实现了对行驶数据的采集、计算、存 储和显示等基本功能。 3 系统硬件电路设计 测速系统的硬件电路大致分为五个模块:由单片机最小系统构成的核心计算模块, 霍尔传
10、感器作为主要器件的数据采集模块,由 24c02 串行存储芯片等核心器件构成的存 储模块,由 Nokia5110 LCD 构成的显示模块和电源模块。系统总电路图见附录 1。 3.1 单片机计算处理模块电路设计 单片机加上适当的外围器件和应用程序,构成的应用系统称为最小系统 8。 (1)时钟电路 单片机内部具有一个高增益反相放大器,用于构成振荡器,通常在引脚 XTALl 和 XTAL2 跨接石英晶体和两个补偿电容构成自激振荡器 9。可以根据情况选择 6MHz、12MHz 或 24MHz 等频率的石英晶体,补偿电容通常选择 30pF 左右的瓷片电容,时钟电路如图 3- 1 所示。 图 3-1 时钟电
11、路 (2)复位电路 单片机最小系统通常采用上电自动复位和手动按键复位两种方式实现系统的复位操 作 10。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件 下,在单片机运行期间,用按钮开关操作使单片机复位,其结构如图 3-2 所示。上电自 动复位通过电容 C1 充电来实现 11,手动按键复位是通过按键将电阻 R1 与 VCC 接通来实 现。 SW-PB0uFCKRVGNDT 图 3-2 复位电路 3.2 数据采集模块电路设计 本设计中霍尔传感器与磁场的作用关系如图 3-3 所示。磁场由磁钢提供,所以霍尔 传感器和磁钢需要配对使用。在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器
12、固定在 圆盘外缘附近,通过单片机测量产生脉冲的频率就可以得出圆盘的转速。 (注:没有磁钢 时输出高电平,有磁钢时输出低电平。 ) 数据采集模块主要是由特定磁极对数的永久磁铁、霍尔元件、旋转机构及输入/输出 插件等组成。其工作原理是当传感器的旋转机构在外驱动作用下旋转时,会带动永久磁 铁旋转,穿过霍尔元件的磁场将产生周期性变化,引起霍尔元件输出电压变化,所得的电 压信号即为车速传感器的输出信号。霍尔结构的速度传感器主要电气技术参数包括:输 出信号高电压、低电压、占空比、周期、上升时间、下降时间、周期脉冲数等。 图 3-3 霍尔传感器使用示意图 图 3-4 检测脉冲产生模块 检测脉冲产生模块如图
13、3-4 所示,将电机的转动轴上装上小磁钢,每当小磁钢经过 霍尔传感器时,就会引起传感器输出电压发生变化。本设计选用 HAL44E 霍尔传感器,具 有低噪声输出,灵敏度高,快速上电,温度稳定性好,寿命长,高可靠性等优点 12,非 常适合用在线性目标移动和旋转目标移动的位置检测系统中。 123P尔4.7KR6GNDVCcesu 转 动 轴 霍 尔 传 感 器 转 动 轴 霍 尔 传 感 器 图 3-5 霍尔传感器电路图 以上是霍尔传感器的原理部分,而整个测速器就是用到单片机与一个电磁感应器来 计算行进中车轮所转动的圈数,输入车轮的外径,计算单位时间内车轮所转圈数即得车 速。车轮圆周长的计算公式如式
14、(3-1)所示,车速的计算公式如式(3-2)所示,车辆 行驶里程计算公式如式(3-3)所示,霍尔传感器电路图如图 3-5 所示。 C=2R ( 3- 1) V=n*C/t (3- 2) L=N*C (3- 3) 其中 C 为车轮的圆周长,R 为车轮的外径,V 为车辆行驶速度,t 为单位时间,n 为 单位时间内车轮转动的圈数,L 为车辆行驶里程,N 为车轮转动的总圈数。 3.3 数据存储读写模块电路设计 在系统中很多重要的数据都需要进行必要的存储以便使用者查询和记录,对于单片 机输出来的数字信息需要一个存储方便、容量合适的数字存储芯片进行存储和读写,为 了可以与单片机有更加方便快捷的通信连接,我
15、们采用串行存储芯片 24c02 来存储测速 过程中的重要数据。 图 3-6 串行存储芯片 24c02 引脚分配图 24c02 采用 I2C 总线协议进行数据通信,I2C 总线通信时必须有起始信号和停止信号, 而且时钟信号为高电平的时候,数据线必须保持稳定的状态 13。主器件通过发送起始信 号启动发送过程,然后发送它所要寻址的从器件地址,从器件会监视总线并当其地址与 发送的从地址相同时便返回一个应答信号,单片机在根据读写引脚 R/W 的状态进行读或 写的操作 14。I2C 总线在每传输完一个字节数据后,接收设备就会返回一个应答信号, 接收器在第九个时钟周期时将 SDA 线拉低,表示已经接收一个数
16、据,最后就是在时钟线 上始终保持高电平的情况下,数据线电平从低跳到高作为 I2C 的停止信号,一个完整的 数据传输存储过程就完成了。A0,A1,A2 为器件地址线,WP 为写保护引脚,SCL,SDA 为 二线串行接口,符合 I2C 总线协议。串行存储芯片 24c02 引脚分配如图 3-6 所示。 3.4 显示模块电路设计 显示模块采用 Nokia5110 LCD 液晶显示器与单片机的 P0 口相接,数据通过液晶显示 器的 5 个引脚输入到显示器,连接电路图如图 3-7 所示。 图 3-7 Nokia5110 LCD 显示模块 3.5 按键模块电路设计 本设计通过矩阵键盘设置车轮半径、单位时间等
17、计算参数,以适应不同车辆的应用, 按键模块电路如图 3-8 所示。 图 3-8 按键模块电路 3.6 电源模块电路设计 电源供电由 9 V 电池和板内稳压电源组成。电路板内采用三端稳压集成电路块 LM7805 为板内元器件供电,LM7805 三端稳压器具有内部过流、热过载和输出晶体安全区 保护功能,可将 9V 的输入电压转换为+5 V 电压,最大输出电流 0.5 A15,保证板内 AT89S52、霍尔元件等器件可靠地工作,电源模块电路如图 3-9 所示。 图 3-9 电源模块电路图 4 系统软件设计 在 单 片 机 软 件 编 程 时 , 应 运 用 模 块 化 编 程 思 想 , 按 照 先
18、 粗 后 细 的 方 法 把 整 个 系 统 的 软 件 划 分 成 多 个 功 能 独 立 、 大 小 适 当 的 模 块 。 本 设 计 软 件 可 分 为 霍 尔 元 件 测 速 子 程 序 、 LCD 显 示 子 程 序 部 分 。 软 件 功 能 是 运用 C 语言进行代码的编写,用串口下载工具 下载编译调试成功的程序,在主程序中,先初始化计数器 T1 和计数器 T0,对外部脉冲进 行计数,设计一个标志位为 Flag,判断 Flag 的值,当 Flag=1 时,将脉冲的数值由十六 进制转换成十进制,将转换后的值进行数学运算,然后存入到存储器中去,并通过 LCD 显示出来。系统程序见附
19、录 2。 4.1 系统主程序流程图 系统主程序流程图,如图 4-1 所示。 图 4-1 主程序流程图 4.2 各子程序单元流程图及软件设计 4.2.1 测速模块软件设计 本系统使用 T0、T1 来测量车轮转速,T0 工作在定时模式,T1 工作在计数模式,在 一定时间内测量出脉冲数就可以计算出车轮的转速,程序流程图如图 4-2 所示。 图 4-2 测速模块程序流程图 4.2.2 显示模块软件设计 显示模块程序流程图,如图 4-3 所示。 图 4-3 显示模块程序流程图 5 实验及误差分析 将成功研制的测速系统实验装置与德国考休斯.达特朗公司生产的 L-400 型非接触式 测速仪进行比对试验,实测
20、结果如表 5-1 所示。 表 5-1 比对试验数据 测速仪 实验装置 绝对误差 相对误差 序号 Km/h Km/h Km/h % 1 18.9 18.9470 0.0470 0.2487 2 30.8 30.7670 -0.0330 -0.1071 3 38.6 38.2900 -0.3100 -0.8031 4 55.5 55.5595 0.0595 0.1072 5 60.1 60.5123 0.4123 0.6860 6 75.5 75.9401 0.4401 0.5829 7 85.6 85.4502 -0.1498 -0.1750 8 98.5 98.9001 0.4001 0.40
21、62 9 105.8 106.1081 0.3081 0.2912 10 114.2 114.6491 0.4491 0.3933 平均值 / / 0.1623 0.1630 测速系统误差分析如表 5-2 所示。 表 5-2 误差分析 机动车行驶速度 绝对误差 相对误差 序号 Km/h Km/h % 1 10 0.0018 0.018 2 60 -0.0610 -0.100 3 100 0.1700 0.170 4 200 0.6800 0.340 5 300 1.5000 0.500 通过以上分析,该测速实验装置测量机动车行驶速度(10300km/h)的测速误差均在 1的数量级内,完全符合
22、JJG 527-2007 的标准测速仪的速度范围为 20180 km/h 和 MPE 为1% 的要求 。 6 结论 本系统采用霍尔感应原理采集转速信号,把霍尔元件输出的电压信号输入到单片机 进行处理、计算,得出实际的速度值和行驶里程,辅之以液晶显示器显示行驶数据。该 系统能够很好的完成转速采集、速度计算、数据存储和设置,能够直观的显示出车辆的 行驶速度和行驶里程,操作简单方便,性能稳定,成本低廉。对于该系统的设计,目前 已经搭好了硬件电路进行了一定程度的实验验证,实验的调试运行证明,该套测速系统 能够达到设计预想的功能要求,运行良好。 另外,为拓宽本测速系统的应用范围,经改装也可应用于电动车、
23、自行车的测速以 及行驶里程的计量并由液晶显示器显示。通过将霍尔传感器安装在靠近车轮不超过 10mm 远的车架上,增加安装在车轮上的磁钢数,利用矩阵键盘更改车轮半径、单位测量时间 等参数,提高测量精度,可以达到 1km/h80km/h 的车速测量范围。 本测速系统的稳定性好,抗外界干扰能力强,如抗错误的干扰信号等,因此不易因 环境的因素而产生误差。由于霍尔测速传感器在防护措施有效的情况下,可以不受电子、 电气环境影响,能防油、防潮,并且能在温度较高的环境中工作,而且测量结果精确稳 定,输出信号可靠,因此该测速系统可以适用于复杂的工作环境。 参考文献 1 王震,占江山. 电力电子技术领域的现状和展
24、望J. 计算机与数字工程研究所 , 2008,(08):16-20 2 徐伟. 基于单片机设计的高速公路测速仪J. 常熟理工学院学报 , 2007,(10):56-57 3 刘玉玲. 单片机设计与开发M. 北京: 科学出版社,2008:89-94 4 TEXAS INSTMUENTS. High-Speed DSP Systems Design Referenee Guide,2005:11-75 5 陆应华. 电子系统设计教程M. 北京: 国防工业出版社,2009:150-153 6 徐海黎,孙冬梅. 一种基于单片机的测速系统J. 南通工学院学报 ,2000,(03):115-116 7 李
25、强,雷宏江. 基于 HT45R24 单片机的智能测速仪的设计与实现J. 实验室研究与探索, 2011,(06): 68-69 8 李劲松,朱景亮. 单片机的智能测速仪的设计与实现J. 仪表技术,2010,(01):36-37 9 张世欣,肖沙里,徐东镪. 一种新型的高速公路测速仪设计 J. 光电子技术,2007,(02):94-95 10 Cucchiara, R. Grana, C. Piccardi, M. Prati, A. Staticstic and knowledge-based moving object detection in traffic scenes. Proceedi
26、ngs of IEEE Intelligent Transportation System, 2000:27-32 11 Shen L.P Mohri K, Abudukelimu A.L. Machano enecephalogram based on amorphous wire micro SI acceleration sensorA.Proceedings of IEEE Transactions on MagneticsC, 2001:84-85 12 谭逢富,侯再红,季永华,张守川. 基于 PIC 单片机的测速系统设计J. 微计算机信息, 2008,(17):102- 103 1
27、3 李鑫,陈梅,陈薇. 自确认测速度仪的设计J. 微计算机信息 ,2009,(10):24-25 14 Daniel J. Dailey, F. W. Cathey, and Suree Pumrin. An Algorithm to EstimateMean Traffic Speed Using Uncalibrated Cameras. IEEE Transactions onlntelligent Transportation Systems, 2000:98-107 15 王香婷,苏晓龙. 基于 PC 机和单片机的光传感器实验系统设计与实现 J. 实验室研究与探索, 2007,(04
28、):18-19 Vehicle Velocity Measurement System Based on Single-chip Microcomputer XXXX (XXXXXX) Abstract This design uses AT89S52 microcontroller as the control chip, by acquiring the Hall sensor signal being measured, the measured signal for display on the LCD through the calculation of the single-chi
29、p microcomputer, also through the matrix keyboard setting calculation parameters, and the use of memory chip to store important data and parameters, finished the design of hardware circuit design and software algorithm basic. The measurement system is cheap, easy to use, high reliability, and can ef
30、fectively improve the speed sensor output signal measurement accuracy and stability, has unique advantages in daily life. Keywords AT89S52 ; Speed measurement system ; the Hall sensor 附录 1 整体电路图 附录 2 系统程序 #include #include #define uint unsigned int #define uchar unsigned char sbit RS=P26; /寄存器选择位,将
31、RS 位定义为 P2.0 引脚 sbit RW=P25; /读写选择位,将 RW 位定义为 P2.1 引脚 sbit E=P27; /使能信号位,将 E 位定义为 P2.2 引脚 uint i,M1; /uchar buf10; uchar bai1,shi1,ge1; uchar dis1=“Speed test“; uchar dis2=“A_S: r/m“; void delay1ms(uchar ms) uchar i,j; for(i=0;ims;i+) for(j=0;j110;j+); uchar lcd_busy() bit result; RS=0; RW=1; E=1; _
32、nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0 E=0; return result; void lcd_wcmd(uchar cmd) while(lcd_busy(); RS=0; RW=0; E=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void lcd_pos(uchar pos) lcd_wcmd(pos|0x80); void lcd_wdat(u
33、char dat) while(lcd_busy(); RS=1; RW=0; E=0; P0=dat; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void LcdInit() delay1ms(15); lcd_wcmd(0x38); delay1ms(5); lcd_wcmd(0x38); delay1ms(5); lcd_wcmd(0x38); delay1ms(5); lcd_wcmd(0x0c); delay1ms(5); lcd_wcmd(0x06); dela
34、y1ms(5); lcd_wcmd(0x01); delay1ms(5); void T1_Init() TMOD |= 0x10; IE = 0x8f; IP=0x08; TH1 = (65535-50000)/256; TL1 = (65535-50000)%6; ET1 = 1; TR1 = 1; void INT_Init() TCON = 0x01; void my_INT0(void) interrupt 0 M1+; void timer1() interrupt 3 TH1 = (65535-50000)/256; TL1 = (65535-50000)%6; i=i+1; i
35、f(i=20) i=0; bai1=(M1/100)+48; shi1=(M10/10)+48; ge1=(M10)+48; M1=0; void main() EA=1; IT0=1;/外部中断开启标志 EX0=1; TR0=1; ET0=1;/定时器中断开启标志 TMOD=0X01;/定时器 控制方式 TH0=(65536-50000)/256; TL0=(65536-50000)%256; while(1) LcdInit() void counter(void) interrupt 0 EX0=0; /关外部中断 0 mm+;/计数加 1 EX0=1; void time1(void) interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; n+;