您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页基于单片机步进电机式汽车组合仪表

基于单片机步进电机式汽车组合仪表

来源:百家汽车网


基于单片机步进电机式汽车组合仪表

第1章引言
1.1设计的目的和意义
目前的汽车仪表多为模拟式动圈式机芯(线圈连同指针一起转动)或动磁式机芯(磁钢连同指针一起转动)仪表,主要是利用电磁感应原理来实现仪表的指示,指针的回转回零则是利用弹簧游丝的弹性实现。动圈式机芯仪表抗震性能差、过载能力弱、指针易抖动等弱点;而动磁式机芯(主要是十字交叉机芯)仪表虽比较先进,但也存在一致性、通用性差的缺点。同时,这两种机芯的仪表都具有体积

用性强、可靠性高的驱动机芯来取代.

大、重量重、生产工艺复杂等缺点,因此,迫切需要一种一致性好、通

为驱动信号的一种特殊电机,用它来驱动仪表指针,与先前的模拟式机心仪I湘比具有体积小、重量轻、指示精确、一致性好、便于控制等特点,特别适合于用单片机控制。而单片机具有集成度高,抗干扰能力强,并具有较强的数据处理能力和接口功能,所有功能由软件实现,应用灵活,系统的扩展、配置较典型、规范,容易构成各种规

模的应用系统.以单片机来控制微型步进电机带动仪表指针来实现

仪表指示功能已经成功的应用,充分地发挥了单片机和步进电机的


基于单片机步进电机式汽车组合仪表

所有优势,它们的完美结合构成的步进电机式数字化汽车组合仪表既保留了传统仪表的指针式显示模式,指示简单直观,符合传统视觉效果,更主要的是精度高、可靠性好、抗干扰能力强、体积小、重量轻、生产检测工艺简单、一致性和通用性好,非常适合现代汽车的生产。但是目前这种新型的数字化仪表都是以单个的形式出现,每个表都是一个的整体,比如车速表、转速表、油量表、水温表、数字里程表等等,每一个表都需要一个MU和仪表外壳,造成了很大的资源浪费和成本的提高.

率和效能则是要继续研究的重要课题.

因此,进一步提高发掘单片机步进电机在汽车仪表上的利用

起转动)或动磁式机芯(磁钢连同指针一起转动)仪表,存在抗震性能差、过载能力弱、指针易抖动等弱点;而动磁式机芯(主要是十字交叉机芯)仪表虽比较先进,但也存在一致性、通用性差的缺点.同时,这两种机芯的仪表都具有体积大、重量重、生产工艺复杂等缺点。但基于单片机系统的数字汽车仪表则具有精度高、可靠性好、抗干

扰能力强、体积小、重量轻、生产检测工艺简单、一致性和通用性

好等优点,所以发展和研究基于单片机系统的数字汽车仪表意义重


基于单片机步进电机式汽车组合仪表

大。

目前的汽车仪表的发展,按技术规格来分经过了四代:第一代汽车仪表是基于机械作用力而工作的机械式仪表,即机械机芯表;第二代汽车仪表的工作原理基于电测原理,即通过各类传感器将被测的非电量转换成电信号加以测量,
称之为电气式仪表;第三代为模拟电路电子式;为步进电动机式全数字化汽车仪表从其应用技术手段上看,还是属于电子技术范畴,也属于电子式仪表。目前国内大部分汽车厂商所生产的汽车

分高档轿车上才使用了数字仪表系统。因此这一块市场存在着很大

中使用的仪表仍为传统的动圈式机芯或动磁式机芯仪表,只是在部

本文根据目前国内汽车仪表的状况和要求,完成基于STC5410的步进电机式汽车联合仪表的实现,研究通用单片机和步进电机来实现汽车组合仪表的基本功能的解决方案。用单片机驱动步进电机指示汽车在行驶过程中的车速、水温等基本信息。主要包括单片机控制系统的硬件结构、软件结构以及关键技术的实现。

通过对汽车仪表系统的基本功能的分析,完成系统的总体设计

方案及基本框图的设计:对系统的各个组成部分的具体电路进行分析


基于单片机步进电机式汽车组合仪表

和设计;对系统主要功能部分的软件进行分析和设计;对系统的关键问题,即如何消除指针的抖动进行分析和解决。

本设计主要是由两个模块组成来实现本设计的目的--测速模块和测温模块。测温模块由温度传感器直接将测到的温度数据(数字信号)传给单片机进行处理,最后显示在LED数码显示管上,主要的难点在编程上,如果编程将传感传来的温度信号转换为单片机可处理的信号,最后显示在LD数码显示管上。

这个设计的主要难度是在测速这个模块上。LED数码显示管显示

指针指示车速时,如何消除指针的抖动。其中便涉及到车速采样频
速度不是这个设计的最大难点,最大的难点在于步进电机驱动仪表

正确指示所要求的车速是一个主要问题。本设计采取的是10s钟采样一次。另外,此次设计不对车速进行非常精确的指示,而是“模糊指示”,所谓模糊指示,是指一定车速区间内设一个点,例如100km/h150km/h之间的任何车速,在仪表盘显示的则是125km/h,以此类推。当然测速模块上的LED数码管显示的是“精确”指示,直接指示当时的车速.

基于单片机步进电机式汽车组合仪表

2章系统设计方案
论文研究的是基于单片机的步进式汽车组合仪表的解决方案。单片机是整个系统核心;微型步进电机是最直接最根本的控制对象;与汽车仪表密切相关的一些汽车基本行驶信息(车速、水温),是单片机所需要处理的信息;系统软件是实现系统功能根本手段;系统的抗干扰能力是系统能否稳定可靠工作的基本保证。通过对它们作理论分析和研究,可以对系统方案做出一个总体的设计.

2。1系统的功能与要求

1.采用通用单片机,用软件实现对系统的控制。

2。用步进电机带动表盘指针实时指示汽车在行驶中的车速信号。3.用数码管显示汽车油箱温度。

4。表盘展开角:车速展开角为0度,转速的展开角为0度。在程序设计时,展开角作为变量来处理,根据实际需要,可以随时调整.

5。电源掉电和上电时,表头指针能复位回零。

6.系统电源由外接变压器提供+1V电压。




基于单片机步进电机式汽车组合仪表

7.系统要具有较强的抗干扰能力,硬件设计和软件设计都必须考虑.8。系统要有较好的兼容性和通用性,标定和检测方便.

2.2系统组成
步进电机式汽车组合仪表系统由单片机模块、测温模块、测速模块、显示模块、步进电机控制模块、串口通信模块、单片机电源模块、单片机供电模块等部分构成。

系统组成图如图21所示:


车速信号

水温信号

滤波和整形

LED 显示

测温模块

测速模块

步进电机控制模块

单片机模块

电源模块

串口通信模块

步进电机

基于单片机步进电机式汽车组合仪表

程序写入

2.1系统结构图

221步进电机控制模块
.步进电机的结构
步进电机是一种将电脉冲转化为角位移的一种特殊电机.汽车仪表所使用的则是一种非常小型化的精密电机,由电机线圈(oin)、转动轴(RtorShaft)、针轴(PonterShft)、齿轮差速比

组成。

装置(Gear Reduction)和四个分布对称的触点(Contacs)

止,取决于电机的输入信号。

2。步进电机的分类
步进电机分三种:永磁式(PM),反应式(VR)和混合式(H)。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或1 :反应式步进一般为三相,可实现大转矩输出,步进角一般为1.55度

度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰 ;混

合式步进是指混合了永磁式和反应式的优点,它又分为两相和五相:


基于单片机步进电机式汽车组合仪表

两相步进角一般为18度,而五相步进角一般为0.72度。这种步进电机的应用最为广泛.


3.步进电机的工作原理
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信

号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲

信号,电机则转过一个步距角。当步进驱动器接收到一个脉冲信号,


基于单片机步进电机式汽车组合仪表

它就驱动步进电机按设定的方向转动一个固定的角度(即步进角).通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的.

步进电机的工作原理,当电流信号经由四个触点输入时,引起电机线圈的磁场变化,从而引起转动轴的转动,而后再通过齿轮差速比装置带动针轴的旋转。

步进电机可以作顺时针和逆时针两个方向运动,顺时针运动

电平的高低来决定的。当输入高电平时,电机正转;当输入低电平时, 电和逆时针运动,取决于电流信号的给定与变化。电机的正反转是由

序图)时,步进电机由位置1右侧运动到位置4,完成一个整步运动,此时,电机作顺时针运动;当四个引脚1234中输入相位差为60度的三相电流信号(24中逆时针运动的时序图)时,步进电机由位置1左侧运动到位置4,完成一个整步运动,此时,电机作逆时针运动。


基于单片机步进电机式汽车组合仪表

在图2.4中,指针由1(4)的位置运动到4(1)的位置完成一个整步运动;如图2.4中,指针由1(2)的位置运动到21)的位置完成一

个分步运动,相邻的两个相位相差180度。由于步进电机也可以将一

个整步分为三个分步来完成,所以完成一个分步所需的脉冲数也只

.步进电机的特点
步进电机的一个最显著特点就是:步距角固定。保持转矩是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随

速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的

参数之一。一般步进电机的精度为步进角的3-5,且不累积。


基于单片机步进电机式汽车组合仪表

汽车仪表在实际应用中要求精度高、功能全,微特步进电机正好具备这些要求,除此之外,它还具有体积小、控制操作方便的优点.

系统选用的虽然为普通电机,但是。功能比较完备,精确度较高,而且性价比高,具有无累积误差、成本低、控制简单等优点。

22.2测速与测温模块
汽车的基本信号有车速、水温两个,都是通过传感器采集。其中车速信号为频率信号,但不符合标准的脉冲信号,水温信号为电阻

方式和电路处理,则要对它们进行分析。

信号,是模拟信号,在送到单片机之前要对它们进行处理.采用何种

多以非接触方式获取,如用霍尔、电涡流等传感器获取。取出的信号为频率信号,但并非是标准的脉冲频率信号。根据取信号的位置不同,取出的信号有下面几种形式:
1)发动机飞轮齿取信号.信号比较稳定,杂波较少,最小峰值为1.5V,高温

时幅值较大。如图2.5所示。

2) 点火线圈取信号。点火时出现瞬时高峰值,最大值可达3


基于单片机步进电机式汽车组合仪表

0V,紧接着迅速衰减。如图26所示.

3)发电机取信号.又可以分相线和中性点取信号两种,相线取信号类似方波,但是有尖峰干扰信号,必须作前级滤波处理,如图2.7

所示.中性点:直流成分较大,高频成分较多,必须作前级滤波处理。

如图2.8所示。

比较上面三个信号的特点,结合系统对输入脉冲信号的要求,决定从发动机的飞轮齿取信号。因为它的信号由专门时传感器产生,信号较好,谐波分量少,更稳定,更规则,幅值大于1.8v,虽不完全

是较好的频率信号,但很接近于正弦波,只要经过滤波、整形等处

,很容易得到系统所要求的脉冲波形.


基于单片机步进电机式汽车组合仪表

2.水温信号
通过传感器采集来的水温属于电阻信号,要进行滤波处理和A/D转换才能送入单片机.最后通过单片机处理,显示在LD显示液晶屏上。

3输入信号的处理
转速、车速两路频率信号通过限幅、滤波,再经过施密特触发器整形变成符合要求的脉冲信号送CU计数器:水温、燃油量信号转换为电压信号,经限幅滤波送入A/D转换器,得到数字量再送CP

.2。3电源模块(单片机系统供电模块、单片机电源模块)

.

可;数字电路的电源则不同,一般电路为+9V,可以用集成稳压电源实现,CPU则为+5V,而且要求相当严格,可以采用开关稳压电源实现,尤其是脉宽调制型开关稳压器件组成开关的开关电源,具有体积小效率高、外围元件少、应用简单、输出电压可调、误差小、输出电流大、转换速率快、保护功能强等特点,特别适合于给单片

机供电.

除了对电源电压的大小有要求外,还要考虑电源对系统硬件的


基于单片机步进电机式汽车组合仪表

干扰。在单片机仪表系统中,危害最严重的是来自电源的噪声干扰,而电源内阻是引起电源干扰噪声的主要原因,如果没有这种电阻,任何噪声都会被电源短路,在线路中不会建立任何干扰电压,但事实上,电源内阻不可能不存在.电源噪声主要来源于一些大功率设备的使用及电源本身的配置的不合理性。单片机数据采集的电源干扰主要原因是因过压、欠压或尖峰电压的出现引发。过压与欠压的危害是显而易见的,它会使系统的直流工作电压偏离允许范围,而处于非正常工作状态.而对于尖峰电压,由于它持续时间很短,一般不会毁

甚至破坏源程序。解决以上问题的办法是使用具有噪声抑制能力的

坏系统,但单片机系统的正常运行破坏性很大,它会使逻辑功能紊乱.

还会详细介绍。

2.2.4单片机模块
单片机模块是整个系统的核心,完成以下功能:输入数据的采集转换并驱动表头、驱动液晶显示里程、按键处理、系统标定等所有功能。根据系统的要求和现实的考虑,选用宏晶公司生产的STC1C5410通用单片机。

STC 12C5410单片机简介

STC 12C5410是由宏晶公司生产的和Atmel公司生产的A


基于单片机步进电机式汽车组合仪表

8C52性能相当的一种8K字节闪烁可编程可擦除只读存储器(FEROM—FalsbProgrammableand ErasbleRead OnlyMeory)的低电压,高性能CMOSS位微处理器,俗称单片机。该器件采用高密度非易失存储器制造技术制造,与工业标准的MS51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,它是一种高效微控制器,为很多嵌式控制系统提供了一种灵活性高且价廉的方案。和Intl公司的MC-51系列单片机相兼容,是广泛应用的单片机之一。

TC12C510芯片图:

图2。9ST12C5410芯片图

225LED显示模块
由单片机直接控制LED数码管显示车速和温度。

ED数码显示管原理简介:

发光二极管LD 在工作的时候只有两种状态,或者熄灭或者


基于单片机步进电机式汽车组合仪表

点亮,LED按照一定的结果排列就可以组成比较复杂的显示设备.当某一个发光二极管导通的时候,相应的一个点或一条被点亮,控制不同组合的二极管导通就能显示字符。MS—51单片机对LED管的显示可以分为静态显示和动态显示两种。

动态显示是指各LED静态显示是各个LED管脚能稳定的显示字符;
轮流一次一次的显示各自字符,其实每次只有一个数码管在显示,但是由于人视觉的惰性,可以看到各LED似乎是在同时点亮.静态显示需要占用很多CPU端口资源,而动态显示则需要很少的端口就能实

动态显示是一位一位的轮流点亮各位数码管,这种诸位点亮的

现。

显示是各数码管分时轮流选通,要使其稳定显示必须采取动态扫描方式,即在每一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另外的一位数码管,并送出相应的码段。


基于单片机步进电机式汽车组合仪表

30数码管显示部分电路

A DP 为八段显示。而3 个三极管是起到扩流作用,分别向对

图3。11 显示电路中,CS1,CS2CS3 三个引脚为片选,

到片选作用。.

2。2.6串口通信模块
单片机的串口通信模块主要是用于扩展单片机的功能,使其功能更加强大,操作更加方便,在有串口通信模块的情况下,可以实现在电脑上直接对整个系统进行操作,如监控该系统,直接获取相关

信息到电脑上,如车速,温度;也可以在计算上直接对该系统单片机

进行读写控制,如可以直接写入本设计需要的程序,直接控制直流电


基于单片机步进电机式汽车组合仪表

机转速,直接控制与测温相关的温度调节。串口通信模块最主要的功能是用于后续功能扩展,以使单片机具备更多的功能。

尽管此次设计中没有用到这个串口通信模块,但有了此模块后,本单片机系统在以后的功能扩展上将具备更多的便利,如和温度监控系统,汽车超速报警监控系统进行连接,以实现更多的功能。

3.1单片机模块功能的实现


基于单片机步进电机式汽车组合仪表

31 单片机模块
单片机模块管脚连接简介:

2.驱动步进电机来驱动表头,使仪表能指示车速。A0,0C0,D

04个管脚连接的是步进电机驱动模块芯片ST188,用于单片机控制

步进电机.

3.将从测温传感器和测速传感器两个信号中获得的数据处理后,直

接驱动LED数码管显示管,分别显示水温和车速。a,b,c,.-dp这

8个管脚用于连接4LED数码管,CS1,CS2,S3,CS4,4个管脚为

片选管脚,用于根据程序选择4LED数码管中其中一个数码管点亮。


基于单片机步进电机式汽车组合仪表

4.P33~P3。5分别接选择按键(用于选择测速或测温),以及系统复位键。

32测温模块
采用DS18B20温度传感器,实现测温模块各项功能。测温模块各项功能如图32

图3。2测温模块

进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点可归纳如下:
1.独特的单线接口仅需要一个端口进行通信。

2.多个DS18B20可以并联在唯一的3线上,实现多点组网功能

3.无需外部器件
4.可通过数据线供电,电压范围为3.05.5V


基于单片机步进电机式汽车组合仪表

5.零待机功耗
6.温度以912位数字量
7.用户可定义的非易失性温度报警设置
8.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。

9.负电压特性,电源极性相反时,温度计不会因发热而烧毁,只是不能正常工作。

3。3测速模块
采用S188芯片来实现测速模块的各项功能,测速模块的接线

3.3测速模块


基于单片机步进电机式汽车组合仪表

ST188芯片特点:
1.采用高发射功率红外光电二极管和高灵敏度光电晶体管组成。

2.检测距离可调整范围大,4-3mm可用。

3.采用非接触检测方式。

应用范围:
1.IC卡电度表脉冲采样
2.集中抄表系统数据采集
3.传真机纸张检测


基于单片机步进电机式汽车组合仪表

3。1 S188芯片光电特性表

34LED显示模块

采用4LED数码管来实现显示模块的各项功能,显示模块接线图


基于单片机步进电机式汽车组合仪表

如图3.4


该模块由单片机直接控制,显示水温。

35步进电机控制模块
采用UN283A芯片来实现步进电机控制模块各项功能,模块接线图如图3.5所示。


基于单片机步进电机式汽车组合仪表

35步进电机控制模块
东芝ULN203芯片系列是高电压,高电流达林顿驱动芯片,由8对NPN达林顿管脚组成。可应用于继电器,,显示器(LED)驱动。

东芝ULN2803芯片特性:

2.持续高电压输出 50V(Min

1.输出电流(单输出)50mA(最大)

4.输入兼容各类型电平

5.封装AP型号:DIP—18pin
6.封装AFW型号:SOL—18pin
32东芝ULN2803芯片特性表特性表:

特性

符号

范围

单位

输出持续高电

VCE(SUS)

-0。5—50

V下载高

基于单片机步进电机式汽车组合仪表





输出电流

Iu

500

mA

输入电压

Vin

05—30

箝位二极管反相电压

VR

5

V

箝位二极管前向电压

IF

500

m

电能消耗

PD

1.47

工作温度

Topr

存储温度

Tstg

-55-15

°C

3.6串口通信模块

采用MAX22A来实现串口通信模块各功能,用以向单片机写

入程序。串口通信模块接线图如图3.6所示。

基于单片机步进电机式汽车组合仪表

图3。6串口通信模块MAX232A芯片简介:

专为EI/TI232A以及V28/V24通信接口设计,尤其是为无法提供+-12V的电源的应用。
MAX232A系列芯片为MAXIM公司推出的驱动器/接收器,

3.7单片机系统供电模块、单片机系统电源模块
采用U3LM芯片实现单片机供电系统模块各项功能,用以向单片机中各其它模块提供电源.模块接线图如图37所示。


基于单片机步进电机式汽车组合仪表

3.7单片机系统供电模块

采用M780T来实现单片机系统电源模块各项功能,用以向单片机芯片提供电源。模块接线图如图38所示.


4章系统软件设计
本系统的软件功能主要是完成数据的采集与转换、步进电机的驱动、数据的存储、数据的显示、系统的复位等等,它包含主程

序和若干个子程序.如何使电机平滑地转动(尤其是在车速和转速较

高时)是设计重点。要保证这一点,需要做好两方面的工作:一是信


基于单片机步进电机式汽车组合仪表

号的采样频率的选定;二是表头驱动程序的合理设计。在编程过程中采用模块化的编程技术,对所有项目分模块进行编程。

4.1系统软件模块划分
根据系统任务分析,程序分为系统初始化、中断处理、步进电机驱动、车速转速测量、水温测量、串行通信、显示等模块。1.初始化模块。初始化模块用于系统程序运行之前完成系统功能参数的初始化.

2. 中断处理模块。获取程序所需的各种参数.

3。 车速里程测量模块.根据入口参数完成车速里程的计算、转换、

5.水温测量模块.根据入口参数完成燃油水温的计算、转换..串行通信模块。根据入口参数完成数据段的发送。

4.2编程语言的选择
现在单片机的编程语言主要有三种:汇编语言、C语言和PLM语言.其中C语言和PLM语言属于高级语言,它们的优点是本身具有

丰富的库函数和数据类型封装,程序编制简单,可读性强,缺点是程

序生成机器代码的效率低。汇编语言则相反。本系统既对机器代码




基于单片机步进电机式汽车组合仪表

的效率有较高的要求,又对数据的计算和处理要求也较高。因此,系统软件程序采用汇编语言和C语言混编的形式编程.

4。3主程序设计
系统的软件是由一个主程序和若干子程序构成,主程序的主要
功能是设定程序执行过程中用到的相关变量,分配寄存器,对所需要
的参数进行初始化,然后按照要求在恰当的时间调用相应的处理模
块和子程序,来对系统进行处理。主程序具体简述如下:
1.定义系统运行过程中所需的变量;
2.分配硬件系统所提供的相关资源,如寄存器、ROM以及中断资
4。在程序的运行过程中,按要求依次完成对系统各模块的调用,
将结果提供
给用户;
5。在各模块的调用过程中,实现调用过程的现场保护,以确保程序
正确执行;

保存系统运行过程中的必要参数。

41为主程序流程图.

开始



基于单片机步进电机式汽车组合仪表

显示时间

测速

10秒?

转速
LED显示

在进行表头驱动程序的设计时,要使表头指针能够平滑无抖动
地转动,关键是要做到信号采样频率的选定和表头驱动程序的合理
设计这两点.

44.1采样频率的选定
由于步进电机在工作时要保持步距角恒定,如果采集频率选择不当的话,将会引起仪表指针的抖动,为使指针能够平滑地转动,选

基于单片机步进电机式汽车组合仪表

择恰当的采集频率是非常重要的。

1。车速和转速信号采样频率的选定
车速和转速属于频率信号,且变化较快。在选择采样频率时,既不能太快也不能太慢,太慢则指示滞后,不能反映车速和转速真实性,太快则会导致步进电机跟不上节奏,也会出现指针抖动现象。

对于车速信号,由于设计的车速的满度为140公里/时,对应此速度的脉冲频率即最高输入频率为194赫兹。若采样周期为025秒,则每个周期内48个脉冲则为满度(即最大的采样值为48,

表盘5,显然在脉冲稳定的情况下也会后5度的抖动,在实际测试过

样完了之后马上刷新表盘)。25/48余数为5,即每个脉冲对应

动的主要原因是信号频率太低,表的相应速度又不能太慢,所以在时间上产生了错位。因此采样周期为0.5,采样频率为4赫兹。现在,假设汽车以恒定的140公里/时行走时,则在某一秒中第一个计数周期采样的值如果为48,则第二个采样周期的值一定为49,如果第三个采样周期的采样值还为48的话,则第四个采样周期的采样值必定

为49.就是说,即使在速度恒定的情况下,速度仍会产生5度的抖动。

我们考虑的就是,任何整数值被4整除,余数为0, 1, 2, 3四种情


基于单片机步进电机式汽车组合仪表

况。如果余数为0的话,就不会产生5度的抖动了;如若不然,即使速度是恒定的,每个采样周期的采样值都不一样,进而输出的结果也就会随之变化,仪表就会产生抖动,但是每相连的两个采样值的差值不会超过2,因为余数的最大差值为2

对此解决抖动的方法就是测量脉冲宽度,只是要求信号的占空比恒定。这样如果每相邻的两个采样值之差的绝对值小于2的话,则输出不变。因为如果采样频率为4或4的倍数的话,则任何两个相邻采样值之差不会大于2。这样,仪表指针就会做到连续平滑无抖动地

对于转速信号,其满度输入频率为9000赫兹,单位为转/分,

转动.

速指针也可连续平滑的转动。

2.水温信号的采样频率的选定
由于水温信号的变化要慢很多,同时对它的要求也较低,因此采样频率可以相对较低.

44。2表头驱动子程序设计

步进电机平滑的正反转控制是设计的重点。当车速转换后


基于单片机步进电机式汽车组合仪表

的信号频率增大时,电机就向顺时针方向运动,这是正转;当车速和转速转换后的信号频率减小时,电机就向逆时针方向运动,这是反转;而当车速恒定时,指针也不发生改变。

在进行程序设计时,要设定各步进电机的驱动间隔定时器和计数器,设定各表指针需要达到的角度位置和实际角度位置,均为1/12度,即一个微步.表头驱动程序执行过程如下:
1.驱动时间间隔到,中断程序被触发,驱动间隔计数器清零。2。检查当前指针的位置与由采样程序算得的理论值.

4。 如果当前值〉理论值,驱动指针逆时针走一微步,且当前值减1

3。 如果相等则不作驱动。

化(当前值不等于理论值),则上述过程每500微秒执行一次(驱动

电机旋转一微步),直到指针指向理论值。表头驱动程序流程图如图4.2所示。


基于单片机步进电机式汽车组合仪表

45车速采样测量子程序设

下:
里程数X=总的接受到的脉冲数/(传动比*传感器极对数),单位为千米
其中:传动比=37,传感器极对数=8
车速V=3600*单位时间内的脉冲数)/(传动比.传感器极对

数),单位为千米/时 其中:传动比=637,传感器极对数=8

转速n= 60.每秒脉冲数)/齿数比,单位为转/分 其中:齿数比




基于单片机步进电机式汽车组合仪表

=128
下面以车速的测量为例来说明其过程,,车速测量周期为1/4,即车速表的刷新周期为250微秒,而电机的最小驱动间隔为0.125微秒,即电机的执行周期为0125微秒,设置采样滤波周期,每个周期中设置两个检测点,时间间隔差为0.5微秒。根据指针偏角度公式“指针偏角=(角度/脉冲比)*频率/4”计算出指针实际偏转角度。图4。2为测量车速程序流程图。


开始

达到

10s

显示转速

4。3车速测量子程序流程图

46水温采样测量子程序设计



基于单片机步进电机式汽车组合仪表

水温属于电阻信号,通过测量水温传感器电阻信号,然后将转换后的数字信号直接通过MCU处理,最后显示在LED上。

测温子程序函数流程图:

初始化

开机显示“0000"
读出温度值、发温度转换命令、温

度计算处理

显示温度值

2s

4.4测温模块程序流程图

4.7 本章小结

本章对系统软件功能模块的划分,介绍了主程序及部分子程序

基于单片机步进电机式汽车组合仪表

的流程图,其中重点介绍了步进电机转动子程序的设计思想、流程图和程序设计.电机转动子程序是实现整个系统的关键技术,是软件的设计重点,它关系到仪表指针能否无抖动的转动这个关键问题,本章对其作了较为详细的讨论和阐述;对于其它程序的设计只作了简单的介绍。


统进行设计和相应的功能测试。

5.1系统安装与调试
系统调试包括硬件和软件两个方面的调试。

由于本设计包括2个以上的模块,因此为了防止一次性做完后出现大问题的情况,系统调试主要是采取了分模块进行调试的方

,调试一块,成功一块,才去调试下一个模块。

硬件调试方面:


基于单片机步进电机式汽车组合仪表

硬件方面主要的问题:由于是分模块进行硬件焊接、调试,所以避免了在最后拼接时出现严重问题。硬件安装调试中出现的问题主要是焊点、芯片管脚焊错的问题。一般情况下,主要避免犯以上两个错误,硬件都能安装成功。

在安装步进电机模块时,出现过主要的问题是刚开始把步进电机关系到相位的4个焊点焊错,导致步进电机无法转动。后来很快就发现了问题,重新焊脚,步进电机便能正常地运行。其次是测温模通过用万用表块,也是将温度传感器焊错了管脚,导致无法显示温度,

软件调试方面:

测量电压,找出错误,改正后,测温模块便能正常运行。

机系统。

大学四年以来写了这么多程序,在编程过程中犯的基本上都是一些低级错误,都是由于没有完全掌握好C语言的原因。例如会在编程时经常丢失每行结束时应该有的“;"号,或者在使用if语言时,“{”这个符号经常会放在错误的地方,导致最后的循环嵌套语句出现

错误,出的结果与预期应该会出现的结果非常不一样.另一个曾经犯

的错误是,在做测温模块时,刚开始测温在LD数码显示管上没有


基于单片机步进电机式汽车组合仪表

温度显示,后来检查程序时,才发现没有对温度传感器中一个管脚进行定义,所以导致LED上根本没有温度显示,经过修改后,程序还是通过了硬件装载。基本上在编程时,都是出现一个问题就自己先找问题,修改,修改不了的就找同学帮忙修改。程序这一块是最难做的,但是一个个的解决,最终还是在硬件上实现既定功能。

52系统性能测试
由于本设计只测车速、转速以及温度两个信号。根据车速,水温两路信号的特点和参数,用直流电机来模拟车速信号,用真实水温

LED显示和车速表头的指针变化及在表盘的位置。另一方面,改变

来作为水温信号输入,输入相应接口,不断改变相关参数的取值,

的方案和技术理论的正确性.

当然,实际性能测试中,由于受条件所限,不可能将温度传感器放入水中测试水温(如不小心会使水接触电路,使电路短路),因此实际性能测试中,采用了三个温度点--室温、姆手温度、笔记本电脑出风口旁温度,以测定测温系统的性能是否符合标准。

以下是测温数据表:

5.1 测温结果表


基于单片机步进电机式汽车组合仪表

测温点

室内温度

姆指温度

笔记本电脑出风口温度

温度计实测温度

28.4

3

48

本系统测出温度

286

3。2

481

由于DS18B20的精度是00625,对于实际使用中,这样一个精度已经相当的高,所以误差由此可见,系统测得温度与温度计测得的实际温度之间的误差应该不是D18B20本身所产生的,而是由系统

自身不可避免的误差所产生,例如测温模块中的A/D,D/A转换电
路,系统程序设计中的数据处理产生的误差等,都能引入一定程度上

测速模块性能测试:
测速模块主要包括LD显示和仪表指针指示显示两方面,主要难点是在仪表指针。LED显示是转速,而仪表指针指示的则是车速范围--限于硬件条件和本人水平有限,为简化难度,现在只能在仪表盘上指示实时测出的转速,通过程序换算车速,最后在仪表盘上指

针指示的是车速的范围,具体就是:

系统测得的车速在0-25kmh范围内的,指针指示的是0-


基于单片机步进电机式汽车组合仪表

0刻度之间的中心位置;系统测得的车速在25—50k/h范围内,则指针指示的是25-50km/h刻度之间的中心位置;系统测得的车速在50—75km/h范围内,则指针指示的是50-5kmh的中心位置,以此类推.

转速的改变主要是通过改变直流电机的电压以达到改变直流电机转速的目的,从而改变所需要测试的条件.

在程序换算方面,仍然是限于硬件条件(不可能真正地用直流电机驱动一轮胎进行测速)和本人水平条件,对车速采取如下方法:

的转速情况下,为计算方便,我们这里设该直流电机所驱动的轮胎

直流电机在4V的电压下的转速1500rmin,因此在这样

以下为转速-车速测试结果表:
5.2转速-车速测试表

直流电机电压

LED显示的转速(每10s的转速)

仪表盘上的指针位置(km/h)

经计算得出的车速(km/)

6.42

58

100~2

11.6

8。91

368

150~15下载

1663高清

基于单片机步进电机式汽车组合仪表

8.30

34

150175

17。4

73

303

125150

37.0

可见,LED上显示的转速和仪表盘上的指针显示的车速是基本对应的.当然在这之中,仍然会出现指针指示不稳定的情况,但是基本上是稳定的.

经过以上系统的功能测试表明,论文所研究设计的基于单片机的步进式汽车组合仪表性能表现基本符合要求,达到技术要求,不但

何积小、重量轻、生产检测工艺简单,而且精度高,可靠性好、抗干扰能力强、兼容性高、通用性强、开发成本低、开发周期短,非常

53后期需要改进地方

由于本人水平有限,此次设计出来的基于单片机的汽车组合仪表是比较简单,比较初级的,功能比较单一,没有将汽车仪表中常见的油量显示,蓄电池量显示,方向灯等一起做到系统中,同时车速显示也是过于粗糙,只是显示大概的一个范围,而不是指示具体的车速

(k/h),这个地方需要极大改进,相信在以后的学习中,能够更加深

入的了解到有关基于单片机的汽车仪表方面的知识和技术,使该设

计更加完善,更加人性化,更加直观.


基于单片机步进电机式汽车组合仪表

结束语

经过几年的学习和研究,此次的设计主要是完成了以下几个方
面的工作;数字式步进电机组合仪表总体方案设计;仪表系统的硬

机技技术应用于传统汽车仪表中,实现了传统汽车仪表的基本功能,用步进电机带动表盘和LED指针实时指示汽车在行驶中的车速信号;LED显示汽车水温信号.通过对仪表系统功能测试,系统各方面性能表现良好,基本达到实际要求.

此次设计中主要是做了以下几件事:

1.以ST410单片机为核心完成了系统设计,在进行总体

设计时,对系统的各个组成部分进行了详细的分析和介绍,尤其是


基于单片机步进电机式汽车组合仪表

对能给系统性能的车载输入信号的性质特征进行了细致的分析,为后面系统的硬件设计打下了基础。

.在系统的硬件设计过程中,为了使测量准备、表头指针转动平滑无抖动和增强系统的抗干扰性,对车载信号中的车速信号进行了整形和滤波。

3。在系统的软件设计过程中,对步进电机的驱动程序作了详细的设计,系统设计的关键是如何使表头指针能平滑无抖动地转动。设计中,采取设定步进电机的驱动间隔定时器和计数器的方法来减

.对仪表系统功能进行了反复地模拟测试,通过改变温度、 直流

小指针抖动。

尽管此次设计出了较为简单的基于单片机系统的汽车仪表,并且达到了基本目标,但仍然离实际应用的标准非常远,许多实际汽车仪表中的功能都没有集成进这个系统,最重要的车速显示非常粗糙,只是显示了范围,没有显示精确的车速,这是一个极大需要改进的地方.我会在以后的学习中更加努力,在这个方面进行更加深

入的学习,继续研究基于单片机系统的汽车仪表方面的内容,完善这

个系统,使其功能更加强大,更加易用,更加人性化。


基于单片机步进电机式汽车组合仪表

此篇论文是在我的导师严彬老师的悉心指导下完成的,导师在研究的选题、研究方案的制定、研究进度、论文撰写等多方面给予了耐心细致的指导,我的每一点进步无不倾注着导师的心血。在论文完成之际,我谨向严彬老师及其帮助过我的所有老师表示衷心的感谢,感谢她给予我的帮助。

衷心感谢机电所有老师在学习生活和课题工作中对我的各种帮助和支持,在他们的亲切关怀和谆谆教导下,使我顺利完成了学士阶段的学业。

持以及生活上无微不至的关怀!

最后,感谢我的父母和家人,感谢他们对我工作学习的理解与支

陈刚

二零 零七年五月于地大 参考文献:
1]杨忠敏.汽车仪表的发展现状.汽车电器,204,4)1—3[2]许德章。现代汽车仪表技术与发展趋势.汽车电器,2002,

(5:127--129

[3]刘友庆。汽车仪表北京:人民交通出版社,199:0-94


基于单片机步进电机式汽车组合仪表

4Mizshim. Devlopmet oLiquCrystal Displa

Mdule for AuomobieShapuGio/ Sharp Tchical

1993,9):3—76

[5]郑发农。电动电子车速里程表的研究.汽车电9,1999,(6):1

-

6]马兰皋.数字仪表与显示器件。北京:电子工业出版社,18

:140-145

[7]陈宝江.MCS单片机应用系统使用指南.北京:机械工业出版

[8]谭浩强。C程序设计(第二版)北京:清华大学出版社,20007

,1997(7)130——171

2):29-0

[10]潘旭峰。现代汽车电子技术北京:北京理工大学出版社,199

:229-232

[11]李潮青.单片机原理及接口技术。北京:北京航空航天大学出版

社,1999:56-7

12]宋培义,刘立新.单片机原理、接口技术及应用。北京:中国广

播电视出版社, 1991( 1:73- 78


基于单片机步进电机式汽车组合仪表

13]谭浩强。C程序设计(第二版)北京:清华大学出版社,00:5-8
14]杨文霞,赵春雷。单片机AT9S2313在汽车里程表中的应用.电子技术,2001,(3):3538
15]邬宽明.单片 机外 围 器 件 实 用手 册 一数 据 传输接口器件分册.北京:北京航空航天大学出 版 社,99856--9
16TimourStanGge.ntegatedLEDDis

ument Panl isplays. Papr7 192:17—134

ly ehnology for Automobiles.Electronic Ist

18]徐雁。单片机测量频率的两种方法.电测与仪表,1995(3:22-25
19]王柏林。单片机系统设计的误区与对策。电子技术应用,2002;28():222

[20]Craig SzydioskiA Gteway fr CASpecification

2o Non—Passie iicesAuomtivMicro-co

trollesPpe930005:201—-209


基于单片机步进电机式汽车组合仪表

21]Fumihiondoh,HiroshihimamotoandYohihiroFujitaADigitlPixel mageSnorfor Ral-Timeedout.IEEETanactionson Electron Devces/theInsitutefElectriclndEletrncsEnieers,2000,47(11)213-—227

附录:
系统组成原理图:

测温模块程序:

iclude 〈re51.h>#inld<intinsh>


基于单片机步进电机式汽车组合仪表

#deineDisaaP
dfineiscan 2
#deineuint unsigndint
dfineucarunsindchar
sbitDQ=P3^7
sbitDIN=P1^0;
unth
////////////////////////

03,0x03,0x04,0x040x50x60060x070x08,0x

uchar code dtab[16]={0x00,0010x01002,0

x99,0x490x410xF0x1,x09,0xF,0xff0xb};

uchrcoesan_con[4]={0xfe,0xfd0fb,0xf7};
uchadatatemp_data[2=0x00x00};
uhadatadisply5={x000x00,0x00,0x000x00;

//////////////////////// void dlyuint )


基于单片机步进电机式汽车组合仪表


for(;t>0;t--)

}
//////////
scan)

hrk

fr(k=0;k<3k++

dscan=scan_cn[k];
dela(0);isa=0ff

ow_reset(voi)


char presnc=1


基于单片机步进电机式汽车组合仪表

while(preence

while(presenc)

DQ=1;_nop_();_nop_);_nop_();_o_)_

op_()_nop_();_nop_(;_nop_();_op_(); _nop_()_o

_()_nop_();_nop_()_nop_();_np_()_no_();

_nop_(;_nop_();_nop_);_nop_(;_nop_(); _nop_();_

DQ=0 np_();_no_)

elay(72);
prsence= Q;
}

deay(545); resnce=~DQ; }



基于单片机步进电机式汽车组合仪表

DQ=1;

//////////
voidrite_byte(ucharval)

charij;
fri=8;i>0;i-—)

{
DQ=1;

_np_(; _nop_() _op_(); _n

(; _nop_)_o_)_nop_()
DQ0; _nop_(;_no_); _nop_); _nop_(); _op_(); _nop_();_op_()_np_()_nop_(;

_nop_();_nop_()_nop_(); _no_(; _nop_();

_nop_();_nop_()_nop_(; _nop_(); _op_()

_op_)_no_();_nop_)_np_()_np_();

_nop_);_np_();_nop_(); _nop_(_nop_()


基于单片机步进电机式汽车组合仪表

_nop_();_no_();_no_)

_np_(; _np_)

_op_

);_nop_();_nop_(); _nop_(); _np_(; _nop_();_n

p_();_op_); _nop_(); _nop_(); _nop_();_n

p_();_nop_();

_no_)

_nop_();

_nop_()

_nop_)_op_); _nop_(); _no_(); _op_

();_nop_();_nop_(); _nop_); _np_(); _nop_

()

D=val&x01;

vlval/2;

delay(72);

dely12);

}

////////////////

ucharead_bte(void)


uchar ij



基于单片机步进电机式汽车组合仪表

ucharvalue=0;

fri8;i〉0;i—-)

DQ=1;_nop_();_nop_();_nop_); _op_();

_op_(); _nop_()_op_();_nop_();_op_();

_nop_();

_nop_();

_op_(;_nop_();_nop_();_nop_);

_np_()_nop_)_nop_();_o_();_nop_()

_nop_(); _np_(); _nop_(); _nop_(;

DQ=0;_?np_();_nop_(_nop_()_nop_); _no_(; vale >= 1

_(); _nop_(

_op_(); _np_();_op_);_nop_);_nop_()_nop_

)_nop_(); _nop_();_no_)_nop_);_nop_();

_op_(; _nop_(); _no_)_no_();_o_();_

nop_(); _nop_); _nop_); _nop_()_no_();_n

p_();_nop_)

_nop_();

_op_(); _nop_();_nop_();

_nop_();_np_()_nop_(); _np_(); _op_)

DQ=1;_?nop_();_np_();_op_)_no_() _o


基于单片机步进电机式汽车组合仪表

_();

_nop_(); _no_();_np_)_nop_)_o_()

_no_();

_nop_();_op_(;_nop_();_nop_()

_nop_

); _nop_(); _no_();_nop_()_nop_();_np_();

_nop_

();

_nop_(); _nop_);_nop_();_o_(;_nop_();

_op_()

_no_(); _o_(); _nop_();_np_();

_nop_(); _nop_(); _np_(); _np_();_nop_();_

nop_()_op_(); _nop_)

_nop_(); _np_();_nop_

()_no_(;_no_); _op_); _nop_(); _nop_);

delay(72) i(DQ) value=0x80;

returnvaue;

///////////////////////
ea_temp(


ow_reset();



基于单片机步进电机式汽车组合仪表

rit_byte(0xCC;
writ_byte(0xBE)
temp_data[0]=read_byte)
temp_daa[1]=rad_byte();
ow_eset();
writ_bye(0xCC)
wite_bye(0x44)

}
///////////////////

ucharn=0;
f(tep_ata[1]>127)

emp_data[1=(256-tm_daa1]);tm_data[0]=

(256—tep_ata[0]);n=1

}

display4]=temp_dat[0]0x00=ditab


基于单片机步进电机式汽车组合仪表

dipay[4];
dsply[4]=((temp_data[0]&0xf0)〉>4)|((temp_data[1]&0x0f)<<);
display[3]=isly[4]/100
display1=display4]%100
dsplay[2=display[1]/10;
isplay1]=display[1]%10

if(! diplay[3]){display[3]=0x0A; if! dsply2]

if(n) {display3=0xB}{display[2]=0x0A; }}

///////////////
min(
{
Disdata=0xff
discan=0xf;

fr(h=0;h4;h++){display[h]=8; }

ow_reset);


基于单片机步进电机式汽车组合仪表

wrie_byte0xCC;
writ_byte(0x44;

for(h=0;h〈5000h+)

{

scn);
}

whle(1){

forh0;h<5000;h++
sa();}

测速模块程序

includereg51。h
#definuint unsigned in


基于单片机步进电机式汽车组合仪表

definecharunsignedhr#define LedPortP1
bitC1P2^0;
sitCS2=2^1;
bitCS3P2^2;
sitS4=P2^3;
bitA0=P^4
sbit 1=P2^;

sbit A3=2^7

sbt A2P2^6

uchar datco50ms=x00;
bit true
/**********************
cacodedis_7[11]={0x03,0x9,025,0x0D,0x990x49,0x4,0x1F,x01,0x09,0F}

/* 共阳LED段码表 ”0” ”1" ”2"3” "4" ”5” ”

" ”7” ”8" "9" "—" */


基于单片机步进电机式汽车组合仪表

uintdtdis[4]={0x00,x00000,0x00};/*显示单元数据,共4个数据*/
uinttmedata4=0x00,0x000x00,0x00}
scan();
nitial);
/******************
**1毫秒延时程序***
****************/

{

vid Deay(uint t

forj=0;j<120j++)

}

main(void)

{ uit k,temp a=0; true=0;



基于单片机步进电机式汽车组合仪表

initial();

hile(1)


?iftrue==0){scan)(};
?elseif(tu=1)
?temp=a;
?dis[3=tep10;
?temptemp%1000

temptemp%100;

?is[2=tem/100

?is[0]temp;
?scan();

/*

for(=0k〈100;k++)

{

A3=1; A2=0;A1=0A00Delay(10)


基于单片机步进电机式汽车组合仪表

A3=0;A2=0;?A1=1;A00;Dely10);

A3=0A21;A1=0; A0=0; Dly(10);

?A3=0; A=0

A1=0; A01Dlay1;)

}*/
?

/**********

********/

扫描程序

ucari

for(i=0;i<4i++)

{

?ftrue=0

?LedPort=dis_7[imedatai]];}/*给数码管送数据*

elsif(true==1{LdPort=ds_7disi]];/*给数


基于单片机步进电机式汽车组合仪表

码管送数据*/
/?LePort=is_7tmedtai]];/*给数码管送数据*/

/*数码管片选*
switchi)

cs0:{ CS=0;C2=1CS31

CS4=1Dlay(3); C1=1; bra;}
cse 1{ CS=; S=0CS3=1;
CS4=1; Delay3); CS31; break;}

case3:{ CS1=1;CS2=1; C3=;CS4=0;Dlay3;CS4=1;reak;}
}

??

?///000000

initial()


基于单片机步进电机式汽车组合仪表

uhaw;
or(w=0;w4;w+)
{
?edPort=ds_7[tieataw]];/*给数码管送数据*/

/*数码管片选*
sitch(w)
{

?ase 0: { CS1=0; CS21C3=1; CS4=1
Delay(3); C1=1break}

case2:{ CS1=1;CS2=; CS3=0;CS4=1Dlay3);CS=1;break;}
cse3{ C1=1CS2=1; C3=1;S4=0;Delay(3);CS4=1;break}
}


TH0=x3c;TL=0B0


基于单片机步进电机式汽车组合仪表

TMD=0x1;ET01
?TR0=1;
?EX0=;
?IT=1PX0=0
?A=1;

voiditt0void)interrupt0


EX0=0

EX0=1

elseEX=0;

基于单片机步进电机式汽车组合仪表

odtime_intt0(void)nterrupt1
{
E00;TR0=0;TH0=0x3C;TL00xB0TR0=;?cn50s++
?ifcon0m==20)
?
on50ms=0;
?tiedata[0];++

tmedata[0]=0;

?i(tieaa0>=10

}?

?E0=1


Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务