基于单片机的汽车车速里程表设计

2019-10-21 07:29李倩陈登峰段优
科学与财富 2019年7期
关键词:单片机

李倩 陈登峰 段优

摘 要:车速里程表是驾驶员和汽车进行信息沟通的重要接口,使驾驶员能够即时掌握车辆的行驶状况,这是汽车行驶安全的重要保障。本文提出一种基于单片机的电子式车速里程表,通过无接触式光电传感器可以測量瞬时车速和里程,可以实现限速报警功能,并具有较好的再开发功能。车速测量通过固定在电机转轴上的码盘,用光电传感器检测码盘的工作状态,使转轴转动速度的物理量转化成脉冲信号,并根据生成的脉冲频率值得到圆盘的转速,通过计算就可获得里程值和车速值,并通过LCD1602液晶屏显示出来。在本设计中通过强大的软件程序取代了复杂的硬件电路,不仅简化线路,而且降低了成本。

关键词:单片机;车速里程表;LCD1602

Abstract: Speedodometer is an important interface for information communication between drivers and vehicles, which enables drivers to grasp the driving status of vehicles in real time, and it is an important guarantee for driving safety. This paper presents a design of electronic speedometer based on single-chip microcomputer. The instantaneous speed and mileage are measured by non-contact photoelectric sensor. And the speedodometer supports speed limitation alarm and further development function. It uses photoelectric sensor to detect the working state of the code disc which is fixed on the motor shaft, the physical quantity of the rotation speed of the rotating shaft can be converted into pulse signals. According to the generated pulse frequency, the rotating speed of the disc can be obtained. The mileage value and vehicle speed value can be calculated and displayed on LCD 1602 screen. In this design, the complex hardware circuit is replaced by powerful software program, which simplifies the circuit design and reduces the cost.

电子式车速里程表,测量转速的传感器与机械部件不产生摩擦,它经过安装在变速器上的传感器获取反映车辆速度的脉冲信号,经过相应的电路设计带动指示表的变化。传感器检测端口与齿轮中被要求含有大约1.4+0.6mm的位置间隙。而当汽车行驶时, 变速器输出轴转动,经过传感器检测端与里程表转子齿轮相接洽时,敏感元件受到里程表转子的磁场影响,从而输出低电平;若传感器检测端没有与里程表转子的齿轮接洽时,敏感元件不受磁场影响,从而以高电平输出,通过这样高低电平的变化,变速器的输出轴每转动一周,传感器就会输出方波脉冲信号,由连接口传送给仪表,再经过相关电路和软件计算处理后,由显示装置就可以显示出速度。车辆里程则根据累计运行的时间和速度,并经过显示装置显示。因为电子车速里程表无直接齿轮接触产生摩擦进而产生一些误差,而是通过传感器测量得到所需数值,所以读数较为精准,磨损减少,成本低,生产容易,所以应用领域非常的广泛[1]。

1设计的整体思路

采用完全硬件方式实现的车速里程表结构比较复杂,成本较高。通过单片机进行信息采集、处理和控制可简化电路,降低成本,且通过编写软件程序结合硬件电路可实现更为复杂的功能。

本文提出的电子式车速里程表基于测控、光电以及计算机等技术,具有逻辑运算、存储及控制等功能,车速里程表使用的核心器件包括:单片机、传感器、液晶显示器及电机。电机工作,相当于一个变速器,传感器工作对脉冲信号进行有效采集,并将采集到的信号传递给单片机,再由单片机处理和计算,将采集到的信号转化、处理、计算,最终通过LCD1602显示机车行驶的瞬时速度和所行里程。系统结构图如图1所示[3]。

本设计的采用的主要硬件包括:STC89C52单片机,(数据采集、处理和控制中心),电机(通过光电传感器,向单片机外部中断提供脉冲),LCD液晶显示器(显示速度、里程及限速值)。

主要功能:计算速度和里程;存储历史里程数据;显示瞬时速度;限速报警[4]。

2硬件设计

2.1光电式传感器测量转换电路

转速即在规定的单位时间内物体转过的圈数。机械设备工作状况与转速密切相关,工农业生产中经常需要检测转速,常用的检测方法可分为模拟式和数字式两大类。模拟式以测速发电机为检测元件,将转速转化为电压模拟量,采集和处理硬件部分比较复杂、调试困难、功能单一、系统不灵活等;数字式采用霍尔、磁电、光栅编码器等检测元件,将转速转化为脉冲信号,用单片机实现采集、处理功能,利用程序完成测量,降低成本,大大提高了工作效率。

本文通过光电式传感器进行检测,把有n个孔的齿盘固定于转轴上。码盘表面有间距均匀的凹槽,当转轴旋转时,会产生脉冲量。传感器检测转速脉冲,由脉冲计算频率的方法获取实时转速。如图2所示。

本文采用有41栅格的码盘和385电机。实验测得385电机的相关数据如表1所示。

光电式传感器是利用光学原理而做成。敏感元件利用物体经过时,隔断光线而检测到信号,由光源、感光器件、模擬量输出等构成[6]。若码盘转动时,发光二极管产生的光亮被隔断,然后光敏二极管(或光敏三极管)采集时断时续的光亮信号。码盘上的隔断与发光二极管对准时,光线由隔断通向光敏二极管(或光敏三极管),光敏二极管(或光敏三极管)接通便就会采集到脉冲信号。光电式传感器进行的速度检测效率高、是非常可靠的检测装置,它由光发射器和接收器组成,这两个器件面对面安装,相互无影响,若物体经过两个器件就会隔断光线的传播,从而传感器采集并将信号发送给单片机。U形的光电检测装置作为新的器件无需再调光轴[7]。

2.2单片机外围辅助电路

上拉电阻:P0~P3为4.7KΩ阻排,为芯片的四个I/O口提供上拉电阻。P0口当作一般的I/O口用时,由于它是开漏结构输出,所以要外接一个上拉电阻。P1~P3内部虽然都有上拉电阻,但内部上拉电阻太大,造成上拉电流太小,甚至在某些时候电流不够,因此,要提供足够的上拉电流,就要并联一个4.7KΩ的上拉电阻确保正常工作[5]。

复位电路:单片机的复位电路由R5、S3和C3构成。当振荡器开始工作时,在RESET端口若有两个或者更多的高电平的机器周期(由低到高跳变)出现,单片机就可以复位。

为了使得芯片上电自动回到初始状态,需要构建一个简单的复位电路。这里由电阻、开关和电容构成此电路。

RESET引脚和电源在上电时刻的电位一致, 若RC电路充电电流减小,RESET电位也依次降低。当RESET引脚处持续有两个高电平的机器周期,单片机就能正常复位。复位电路原理图如图3所示:

时钟电路:单片机外围时钟电路通过电容C1、C2和一个晶振Y1组成。它的工作时钟可以用以下方式提供:内部振荡器以及外部信号输入方式。原理图中使用内部振荡器方法。在XTAL1、XTAL2外围安装定时器件,则芯片包含的振荡电路产生自激振荡。晶振两侧使用18~33pF间相同的抗振电容,电容值的大小即可微调频。时钟电路结构原理图如图4所示。

编程接口:Program接口是单片机的编程接口,STC89系列单片机使用串行口来下载程序,因此Program接口虽然有10个引脚,但是只使用了其中3个:RXD、TXD和GND。Program接口在开发板中对应一个10脚的牛角插座。如图5所示。

2.3蜂鸣器报警电路

蜂鸣器结构简单,通过直流电压供电,在电话、手机、门铃、安检、印刷等装置中都能得到极大的使用。

蜂鸣器有很多种,从制作工艺到所需材料有压电式和电磁式之分。通过压电效应的压电陶瓷驱动金属薄片抖动发出声响即压电式蜂鸣器;通过电磁作用,若断电则通过金属薄膜弹力弹回,连接电源时将薄膜吸下的为电磁式蜂鸣器,因此它是通过二分之一的方波驱动,而压电式是以全部的方波驱动。根据每一种类型蜂鸣器发声原理不同,则应用在不同的场合。压电式蜂鸣器组成结构单一,音质差,发声单一,因此作为报警器设备比较好。而电磁式由于音质较好,所以多用于音乐,语音器件等.

根据工作方式不同,蜂鸣器具有有源和无源之分。"源"的含义即震荡源,非一般的电源。顾名思义,有源就是器件里边包含震荡源,给它通电后就可发声;无源蜂鸣器需要2~5K的方波才能驱动发声。因为有源蜂鸣器中有一个震荡源,所以在价格方面也比无源蜂鸣器贵一些。无源蜂鸣器的优点有:一,价格便宜;二,声音频率可控;三,可以复用一个控制口与LCD。有源蜂鸣器的优点是程序编写比较容易。虽然两者外观相似,但也存在着不同。将蜂鸣器倒置,无源的有绿色的电路板, 有源蜂鸣器没有电路板,通过黑胶粘合。倘若是无源蜂鸣器,通过万用表电阻档进行检测,将黑表笔连到元器件正极, 红表笔在负极来回的触碰,会产生"咔、咔"声,电阻也只有8Ω或者16Ω; 有源蜂鸣器发声持续,并且阻值是无源的十多倍。通过接入固定电源持续工作的是有源蜂鸣器;通过声音变化放大等电路工作的是无源蜂鸣器。

与一般的发声器件对照, 该类型的元器件通过极性需要添上恰当的直流电压,就能产生稳定的工作效果,使用方法也非常简单。它的驱动电路及蜂鸣器外观如图6所示。

蜂鸣器是由直流电压供给工作的,因为蜂鸣器的工作电流较大, 通常芯片上的I/O口直接启动无法工作,因此采用三极管放大才能使蜂鸣器正常工作。具体工作状态是蜂鸣器通过一个9015三极管进行驱动,三极管的基极与P3.7口相连。如果P3.7低电平输出,蜂鸣器响;如果P3.7高电平输出,不响。在要求比较严格的一些场合还要加上二极管,并且是反相的,作为保护电路使用[8]。

2.4 LCD1602液晶显示模块

LCD1602是一种非常好用的字符型液晶显示器,它可以是1行16位字符的呈现模式,也有2行16位字符的呈现模式,器件里边包含标准的资源库供选择,其中还有16个5×7、32个5×10的点阵字符。此外,还包含64字节RAM用于字符生成,供用户自定义字符,其中含日语、阿拉伯数字、惯用符号和英文字母的大小写等。每个字符都有一个固定代码,此代码就是对应字符的ASCII码。LCD1602液晶显示器的工作电压在4.5V~5.5V之间,最佳工作电压为5V,字符尺寸为2.95×4.35(W×H)mm。图7所示为其引脚图。

由于LCD1602可以采用4位或8位并行数据接口,为了方便编程,这里选用8位的并行方式,与信号线RS、E占用单片机的10位I/O口。P1为滑动变阻器,其滑动端接到LCD1602的对比度调整引脚VL上,用来进行对比度调整。本次设计直接采用电阻R6,为2kΩ固定其亮度。背光的负极直接接到电源地,其正极通过一个跳线接口接到VCC上。

3 软件设计

3.1主程序设计

初始化模块的主要任务是在单片机复位后程序设计的重要变量、中断、定时/计数器的设置方式和控制字,将部分应用内存清零;而开中断和定时器是将EEPROM中的数据包括初始化速度、里程、限速值等數据调入至内存当中。

程序包含两个部分:主程序和子程序。主程序作用在于将整个参数归到初始位,编写程序代码执行过程衔接枢纽,并将结果呈现给用户。如图8所示为主程序的流程图:

有关参数被分配到特定的寄存器, 各个独立的模块子程序根据要求被主程序调用。主要作用如下:

(1)定义系统运行过程中所需要的变量;

(2)在运行程序的过程中,按要求逐次完成对各个系统模块进行调用,并将运行结果显示出来;

(3)在各个模块的调用过程中,实现对调用过程的保护,保存运行过程中必要的参数,确保程序能够顺利执行, 避免程序跑飞。

为了获取程序中所需的各个参数而采用中断处理模块。在主程序运行时,如果有中断请求,程序将跳转到其他所需处理的子程序模块运行,一般中断程序只对数据做简单的读取和赋值,而不进行处理与计算,缩短了中断程序的运行时间,系统响应中断的实时性也得到了提高[9]。

3.2车速里程表子程序流程图

由于光电传感器检测产生的脉冲信号频率越高,车速就越高,它们之间是正比关系,因此,计算车速与测得输出脉冲信号的频率息息相关,公式如下:

里程S=(检测到的脉冲数n)/(速比*传感器极对数),单位:km

速度V=(3600*单位时间内的脉冲数)/(速比*传感器极对数),单位:km/h

本设计中选择的车速测量周期为1秒,车速表的刷新周期为3微秒,电机的最小驱动间隔为1微秒,即电机的执行周期为10微秒,设置采样滤波周期,每个周期中设置两个监测点,时间间隔为1微秒。

3.3 I/O口的控制方式

单片机的输入和输出数据传递控制方式主要有:无条件传送方式、查询方式和中断方式。例如:电子设备及机械装置的开关、声控灯、报警设备等,它们无时不处于“准备好”的模式,以供给信息传输。

查询方式:由各接口电路供给设备的工作状况,以软硬件结合的方式检测系统工作状态,最终实现查询方式的数据传送。其流程图如图10所示:

中断方式:在程序中应用中断方式,是利用在芯片使用时可兼顾控制几个外围装置以及其余待执行的工作,从而大大提高了CPU的使用效率。由于单片机控制的许多外部设备速度相对较慢,如打印、温度检测、数据通信等,不可能与CPU进行直接的同步数据交换,从而浪费大量的等待时间,因此可通过中断的分时实现CPU和外设的协调工作,即在CPU执行程序过程中,如果需要进行数据输入、输出获温度监控设备的启动,可以按序启动这些外设获控制模块,再继续执行实现其他功能的程序。与此同时,被启动的外设获控制模块进入准备工作阶段。当准备完成后,它们可以按照完成的先后次序分别向CPU传送特定的数据,需要CPU终止当前所运行的工作状态,转而处理中断请求的其他一些装置要求,这就是所谓的中断请求。其中断响应示意图如图11所示。

4 软件调试

4.1程序的查错手段

程序查错采用相匹配的开发系统或软件进行调试,通过单步执行以及断点的设置对系统的软硬件进行全面检查和调试。

单步执行:应用单步执行指令就是程序每执行一步就有一条指令,逐个排查程序是否正确执行,通过要求找到错误的地方。

断点设置全速运行:断点设置就是在自己觉得有问题的地方设置一个断点,设置程序的起始位和终止位,通过运行到断点处的状况,进行检测。程序若没有显示出语法错误,则继续运行,最终在断点处终止;若有错误,则在错误处停止运行;若程序处于死循环当中或者是程序跑飞,将无法终止工作[10]。

4.2 源程序的调试

源程序主要包括分调、联机调试和考机调试几个步骤。

分调:最初,要求按照设计要求把各部分子程序调试好,将中断服务程序移出,再通过系统主程序运行的先后逻辑顺序独立的各部分程序逐次进行调试。按照设计要求,设置并输入一组合适的参数,运行程序,并进行实时观察,并对出现的故障及其产生的影响进行检测记录;上述检测记录的故障问题进行严格分析推测,通过软件调试方法逐渐缩短范围,找出问题并及时修改,最后分析故障原因。

联调:分调被修改整理,若运行良好,则联机调试。联调着重对主程序和独立的子程序接连处调试修改,把软硬件结合逐个进行调试,最后考机。

5总结

本篇论文研究的电子式车速里程表是将STC89C52单片机作为主要部分,将芯片的功能得到广泛的拓展应用,是软件与硬件相结合的设计,其功能及优点主要有:

1、使用当下功能强大的单片机STC89C52芯片,结构简单,体积小,价格容易接受,且功能强大;

2、设计原理简单,无外围驱动电路,易焊接操作;

3、采用LCD1602液晶显示屏进行车速和里程等显示,数字及字符型的显示加上由液晶材料而制成的屏幕,观测时十分方便且可以防止眼睛疲劳;

4、具有限速报警功能。程序设置限速段在20~90km/h之间,通过按钮可将限速值控制在这个速度段内的某一个值并进行检测报警;

5、应用C语言编写程序,编写移植容易,易读;

本设计中单片机系统结构简单,稳定、可靠,成本低,但功能十分可观,有广泛的使用空间,车速里程表的设计还需要进一步的开发和推广,随着电子技术的发展与时俱进,更好的满足现代化的需求。

参考文献:

[1]袁大宏. 国际汽车电子仪表应用现状及发展趋势[N].中国汽车报,2000-07-07(05).

[2]孙仁云,付百学,等. 汽车电器与电子技术[M].北京:机械工业出版社,2006:120-121.

[3]刘小明,柴苍修,黄静. 数字化车速里程表的设计[J].仪表技术,2007,(1):48-52.

[4]吴栩钧.基于单片机的车速里程表设计与仿真[J].计算机光盘软件与应用,2012,(14):213-223.

[5]潘明,黄继业,潘松,等.单片机原理与应用技术[M].北京:清华大学出版社,2001:1-7.

[6]高洪一,康国初,等.汽车电子技术[M].北京:北京交通大学出版社,2007:167-169.

[7]王文英.用光电传感器测量电机转速[J].光谱实验室,2013,30(2):1018-1020.

[8]张鹏,等.单片机开发板制作与应用[M].北京:化学工业出版社,2014:188-225.

[9]夏明娜,高玉芝,等.单片机系统设计及应用[M].北京:北京理工大学出版社,2015:112-113.

[10]周润景,张丽娜,丁莉,等.基于PROTEUS的电路及单片机设计与仿真[M].北京:北京航空航天大学出版社,2009:338-342.

通信作者:李倩

基金项目:国家自然科学基金项目(51705393),陕西省教育厅专项科研项目(14JK1408),西安市工业应用技术研发项目(JZKD0011),西安建筑科技大学基础研究基金项目(JC1318)。

猜你喜欢
单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
MSP430单片机在仿真中要注意的几点问题
基于单片机的平衡控制系统设计
基于单片机的三维LED点阵设计
Microchip推出两个全新PIC单片机系列
基于Proteus的单片机控制系统的仿真设计