基于单片机的汽车速度测量系统设计说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业技能实训报告
题目基于单片机的汽车速度测量系统设计
学院信息科学与工程学院__________
专业________________ 通信工程 ____________
班级_______________ 通信0902 __________
学生__________________ 彭元 ______________
学号20091221 _________________
指导教师__________________________________
二◦一二年一月三日
1前言 (2)
2总体设计 (3)
2.1 设计方案 (3)
22主要容 (3)
3单片机速度测量系统 (4)
3.1单片机速度测量原理 (4)
3.2单片机速度测量系统结构框图 (4)
4 系统硬件设计 (5)
4.1传感器的选用 (5)
4.1.1 霍尔传感器的基本工作原理 (5)
4.1.2 CS3020 霍尔传感器 (6)
4.1.3 霍尔传感器的硬件连接 (7)
4.2 MCU控制系统设计 (8)
4.2.1 CPU 的选用 (8)
4.2.2 AT89S51 主要特性和引脚说明 (8)
4.2.3 MCU 最小系统设计 (10)
4.3 LED数码管显示器 (11)
4.4 单片机测速系统总原理图 (11)
5系统软件设计 (12)
5.1 程序流程图 (12)
5.2 程序功能 (14)
结语 (15)
参考文献 (16)
附录 (16)
1前言
随着信息技术的不断发展,单片机在测量系统中得到了广泛的应用。

速度是一个系统经常需要测量、控制和保持的量。

速度的测量方法有许多种,但在不同的应用环境下,相应的测量方法有它自己的特点和误差。

因此对单片机速度测量系统的研究有着重要的目的和意义。

本设计采用AT89S51单片机作为主要控制核心,应用霍尔传感感器采集信号,经过单片机定时计数并运用一个算法测量出汽车行驶速度,最终用4位位的在以上建的系统的基础上LED数码管显示其测量结果,具有较高的实用价值。

2总体设计
2.1设计方案
现在测量速度的方法有很多,可以采用不同的器件做出多种测速器。

在这里用磁电式脉冲发生器的方案。

磁电式脉冲发生器。

将导磁材料的齿轮固定在转轴上,对着齿轮端面固定一块磁钢,霍尔元件贴在磁钢的一个端面上,随着齿轮转动,元件的输出呈周期性变化,经整形和放大后输出方波脉冲。

霍尔传感器输出频率与转速成正比,此信号经单片机处理后,即可得出车辆的速度。

本设计测量要求稳定性好,灵敏度高和精度高,而且对汽车速度的测量要求传感器能够适应各种各样的环境。

所以这里选择该方案。

其原因还有三点:其一是霍尔传感器输出信号电压幅值不受转速的影响;其二是频率响应高,其响应频率高达20kHz,相当于车速为1000km/h时所检测的信号频率;其三是抗电磁波干扰能力强。

根据脉冲计数来实现转速测量的方法主要有M法(测频法)、T法(测周期法)和
M/T法(频率周期法)。

测频法一般用于高速测量,在转速较低时,测量误差较大;而测周期法一般用于低速测量,速度越低测量精度越高,但在测量高转速时,误差较大;频率周期法结合了上面两种方法的优点,但是此种方法要求单片机有3个定时/计数器。

考虑上面三种因素,该系统选择测频法。

2.2主要容
根据上面选择的方案,设计主要容由以下三大部分组成:
一、信号的采集。

这部分主要是用霍尔转速传感器采集车轮转速的信号,并将采集的信号传给单片机。

二、单片机数据处理。

这部分主要是使用51系列单片机采用适当的算法来编程快速准确地对采集的数据进行相关运算并得出结果。

三、L ED数字显示。

这部分主要是对测得的结果通过4位LED数码管显示给用户
用单片机AT89S51作为控制核心,通过霍尔传感器来检测汽车的运转情况进而实现汽车速度的测量,最后用4位LED数码管直观的将速度显示给用户,保留一位小数位。

该测量方法是数字式测量方法,代替了传统的机械式或模拟式结构,测量精度有了很大的提高,具有很大的实用价值。

3单片机速度测量系统
3.1单片机速度测量原理
根据霍尔效应原理,将一块永久磁钢固定在车轮转轴上的转盘边沿(如果要提高测量精度,可以在转盘边沿多固定2到3个磁钢),转盘随着轴旋转,磁钢也将跟着同步旋转。

在转盘附近安装一个霍尔器件,转盘随轴旋转一周时,受磁钢所产生的磁场的影响,霍尔器件输出一个脉冲信号,转盘转了多少转霍尔器件就输出多少个脉冲信号,将输出的脉冲信号送到单片机的计数口,利用单片机的定时/计数器进行定时和计数,测出脉冲的周期或频率即可计算出车轮转速。

通过单片机软件设计,把转速转换成线速度。

转速即是角速度,线速度=角速度*周长。

3.2单片机速度测量系统结构框图
根据霍尔转速测量原理,可以画出单片机速度测量系统的结构框图。

结构框图如图所示。

了尔传感器=卓片机------------------ 呀LED显示
图1单片机速度测量系统结构框图
由霍尔传感器采集车轮转速的信号,并将采集的信号传给单片机,利用单片机的定时计数器功能和编写的程序将采集的信号转换成数据,通过数码管将数据显示出来。

4系统硬件设计
4.1传感器的选用
传感器是能够感受规定的被测量并按照一定的规律转换成可用输出信号的器件或装置。

在电子技术领域,常把能感受信号的电子元件称为敏感元件,如热敏元件、磁敏元件、光敏元件等。

通常,传感器由敏感元件和转换元件组成,如图所示。

其中敏感元件是指传感器
中能直接感受或响应被测量的部分;转换元件是指传感器中能将敏感元件感受或响应的被测量转换成适合于传输或测量的电信号部分。

由于传感器输出信号一般都很
微弱,需要有信号调理与转换电路,进行放大、运算调制等,此外信号调理转换电
路以及传感器的工作必须有辅助的电源,因此信号调理转换电路以及所需的电源都
应作为传感器组成的一部分。

随着半导体器件与集成技术在传感器中的应用,传感器的信号调理转换电路与敏感元件一起集成在同一芯片上,安装在传感器的壳体里。

图2传感器组成方框图
4.1.1霍尔传感器的基本工作原理
霍尔传感器是利用霍尔效应原理,通过磁场、电流对被测量的控制,使包含有被测量变化信息的霍尔电压发生变化,在利用后继的信号检索和信号放大电路,就可以
得到被测量的信息。

正因为霍尔传感器的基本原理霍尔效应只包含了磁场、电流、
电压三个常用物理量,使得采用霍尔传感器对被测量的测量简单易行,而磁场强度、电流、电压是磁场、电场的基本物理量,所以霍尔传感器可以进行精确的非接触测量。

1.霍尔效应
在一块半导体薄片上,当它被置于磁感应强度为B的磁场中,如果在它相对的两边通以控制电流I,且磁场方向与电流方向正交,则在半导体另外两边将产生一个大小与控制电流I和磁感应强度B乘积成正比的电势UH,即UH=KhlB,其中Kh为霍尔元件的灵敏度,Kh 值越大,灵敏度就越高,该电势称为霍尔电势。

在片子上作四个电极,其中C1、C2间通以工作电流I,C1、C2称为电流电极,C3、C4间取出霍尔电压UH,C3 C4称为敏感电极。

将各个电极焊上引线,并将片子用塑料封装起来,就形成了一个完整的霍尔元件。

2.工作原理
霍尔开关集成电路由稳压器、霍尔元件、差分放大器、斯密特触发器和输出级组成。

在外磁场的作用下,当磁感应强度超过导通阈值BOP时,霍尔电路输出管导通,输出低电平。

之后,磁感应强度再增加,仍保持导通态。

若外加磁场的磁感应强度值降低到BRP时,输出管截止,输出高电平。

通常称BOP为工作点,BRP为释放点,BOP- BRP=BH称为回差。

回差的存在使开关电路的抗干扰能力增强。

集成电路中的信号放大器将霍尔元件产生的幅值随磁场强度变化的霍尔电压UH放大后再经
过斯密特触发器进行整形、放大后输出脉冲方波信号。

霍尔传感器部结构如图所示。

图3霍尔传感器部结构方框图
4.1.2 CS3020霍尔传感器
霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020 CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极CS3020霍尔传感器,该系列霍尔开关电路传感器广泛用于汽车工业和军事开路门输出,工作电压围宽,使用非常方便。

考虑到用于汽车速度测量这种特殊环境下,在本设计中选择了工程中。

如图所示是CS3020的外形图。

将有字
面对准自己,三根引脚从左向右分别是Vcc ,地,输出。

图4 CS3020的外形图
CS3020是由电压调整器,霍尔电压发生器,差分放大器,史密特触发器和集电极开路的输出级组成的磁敏传感电路,它是一种单磁极工作的磁敏电路,适合于矩形或者
柱形磁体下工作。

当磁钢随车轮轴旋转时,霍尔传感器受磁场的影响,霍尔器件输出一个脉冲信号。

感受到磁场的时候输出一个低电平,没感受到磁场的时候输出高电平。

工作特点如下:
a. 电源电压围宽
b. 开关速度快,无瞬间抖动
c. 工作频率宽
d. 寿命长、体积小、安装方便
e. 能直接和晶体管及TTL、MOS等逻辑电路接口
4.1.3霍尔传感器的硬件连接
霍尔传感器的标志面对着自己,从左至有右分别是接5V电压,接地,脉冲输出。

如图所示是霍尔传感器的硬件连接图。

图中R1是限流电阻,C1、R2起滤高频的作用。

当霍尔元件感受到磁场的时候引脚3输出低电平,三极管导通,单片机P3 .5 口接收到高电平脉冲;当霍尔元件没有感受到磁场的时候引脚3输出高电平,三极管截止,单片机
P3 .5 口接收到低电平脉冲。

图5霍尔传感器的硬件连接图
4.2 MCU控制系统设计
4.2.1 CPU的选用
AT89S51是一个低功耗,高性能CMOS8位单片机,片含4k Bytes的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash 片程序存储器,128 bytes
的随机存取数据存储器(RAM, 32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗电路,片
时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为OHz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,
外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

4.2.2 AT89S51主要特性和引脚说明
AT89S51有PDIP、PLCC TQFP三种封装方式,以适应不同产品的需求。

其中最常见的就是采用40Pin封装的双列直接PDIP封装,其引脚排列见如图所示。

图6 AT89S51芯片引脚排列图1 •主要特性:
与MCS-51产品指令系统完全兼容
4K字节可编程FLASH存储器
1000次擦写周期
全静态工作:0Hz-24KHz
128*8 位部RAM
32个可编程I/O 口线
两个16位定时/计数器
6个中断源
可编程串行通道
低功耗的闲置和掉电模式
片振荡器和时钟电路
423 MCU最小系统设计
单片机最小系统就是能使单片机工作的最少的器件构成的系统,是大多数控制系统所必不可少的部分。

AT89S51部已经包含了一定数量的程序存储器,在外部只要增加时钟电路和复位电路就可以构成单片机最小系统。

1. 时钟电路
所有单片机都需要时钟电路,时钟电路的作用是控制单片机的工作节奏。

利用芯片部的振荡器然后在引脚XTAL1和XTAL2两端跨接晶体振荡器(简称晶振),就构成了稳定的自激振荡器,发出的脉冲直接送入部时钟电路。

夕卜接晶振时,C1和C2 的值通常选择为30pF左右,C1、C2对频率有微调作用,为了减小寄生电容,更好地保证振荡器稳定、可靠的工作,振荡器和电容应尽可能安装得与单片机引脚XTAL1 和XTAL2靠近。

2. 复位电路
复位是单片机的初始化操作,所有单片机在启动运行时都需要复位,以使CPU和系统中的其他部件处于一个确定的初始状态,并从这个状态开始工作,因而,复位是一个很重要的操作方式。

但单片机本身是不能自动进行复位的,必须配合相应的外部复位电路才能实现。

单片机第40引脚正极接上5V电源,负极(地)接20引脚。

单片机部已集成了振荡器,使用晶体振荡器时,接18、19脚,再接上电容。

EA引脚接到正电源端就可以了。

4.3 LED数码管显示器
由于LED数码管具有亮度高、使用电压低、寿命长等特点,所以在工业测控系统中常用LED数码管作为显示输出。

本系统也采用LED数码管作显示输出。

LED显示器是由发光二极管显示字段的显示器件。

单片机系统中通常使用8段LED 数码显示器,
LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称为共阴极LED显示器。

本设计采用LED动态扫描显示,这样能分时轮流选通数码管的公共端,使得数码管轮流导通,在选通相应LED后,即在显示字段上得到字形码。

究竟是哪个数码管亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。

这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。

在动态方式中,逐个地循环地点亮各位显示器。

这样虽然在任一时刻只有一 位显
示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点
亮效果
完全一样。

在单片机P0的8个输出口分别连接上一个150Q 的电阻是为了保证数码管显示的 时候每段亮度都一样。

采用共阳极驱动,当位选口
P2.0~ P2.3输出一个低电 平的时
候三极管导通,这就决定了哪一位数码管被点亮。

三极管前面的 1K Q 电阻 起限流的
作用,防止电流过大烧坏三极管。

这样P2.0~ P2.3分别控制百位, 十位,个位
和小数位。

4.4单片机测速系统总原理图
图7单片机测速系统总原理图
从系统原来图中可以看到本设计结构和线路布局相对比较简单, 也具有较强的实
用性。

将永久磁钢固定在转盘上,转盘随轴旋转一周,磁钢也旋转一周,霍 尔传感 器感受到一次磁场。

当霍尔传感器感受永久磁钢产生的磁场时,传感器的
引脚3输
出低电平,此时三极管导通,单片机 P3 .5 口接收到高电平脉冲;当传感 器没有感 受到磁场的时候引脚3输出高电平,此时三极管截止,单片机 P3 .5 口接 收到低电 平脉冲。

转盘转了多少转单片机就接收到多少个脉冲, 利用单片机的定 时/计数器进 行定时和计数,测出脉冲的周期或频率即可计算出车轮转速。

通过单片机软件设计,
把转速转换成线速度。

转速即是角速度, 线速度=角速度*周长。




5.1程序流程图
主程序流程图和中断服务程序流程图分别见图8和图9
图8主程序流程图
系统要开始工作就要对单片机进行初始化,系统初始化部分程序如下:
#in clude<reg52.h>
#i nclude<stdio.h>
#defi ne SYSCLK 11.059200
#defi ne uchar un sig ned char
#defi ne uint un sig ned int
#defi ne ulong un sig ned long
#defi ne R 4
#defi ne PI 314
接下来是定时/计数器初始化,设置工作方式控制寄存器TMOD
TMOD=0x51
TL1=0x00; TH1=0x00;
TL0=0x00; TH0=0x4c;
单片机跳中断处理,处理后返回主程序,最后用数码管显示数据,
次,结束程序
5系统软件设计
1秒钟更新
图9中断服务程序流程图
当单片机执行中断程序的时候要重新设置定时计数器的初值,每次从传感器传来一个脉冲的时候,单片机计数器加“ 1”。

如果每50ms中断一次,那么当k=20的时候(即定时器每到1秒钟),程序跳出中断返回到主程序,执行显示程序。

5.2程序功能
该程序的功能是利用单片机将霍尔传感器采集到的信号进行处理,将处理后得
到的数据通过P0 口送到LED数码管显示出来。

系统初始化:
TMOD=0x51;〃初始化,工作方式控制寄存器TMOD十六进制51转化成二进制为01010001。

T1计数工作方式,工作在方式1;T0定时工作方式,工作在方式1。

TL1=0x00; TH1=0x00; //T1 计数初值为0。

TL0=0x00; TH0=0x4c; // 每50ms=50000us 中断一次。

由公式
(65536-x)*12/11.0592=50000
得定时初值(65536-50000*11.0592/12)/256=76 转换为16 进制,得高位为4C (65536-50000*11.0592/12)%256=0 得低位。

IE=0x82; // 中断控制IE,EA=1, CPU开放中断;ET0=1,允许定时
器中断。

TR0=1; // 定时开始。

中断函数程序如下:
void timer0(void) interrupt 1 {
TLO=OxOO; TH0=0x4c; k++; if(k>=20)
//
就是
{ js=TH1*256+TL1;TH1=0;TL1=0;k=0; } js=0;TR0=1; }
TR1=0;TR0=0; TFO=O;
//
// 启动计数/定时器 中断标志位
每50ms 中断一次,那么当K>=20的 时 候
,每1s 钟计算一次转速js 。

1s
本次专业技能实训是一次和生活息息相关的实验,在我们平时的生活中,不管走到哪里都能和汽车联系起来,但是关于汽车速度的测量却不了解。

而通过该实验系统详细的学习,使得对于上述问题有了更加明确的了解,不再是困扰我们的生活的一些常识性问题。

在该实验之中,由于自己专业能力的限制,做实验的时候十分困难,但是时间是充足的,所以在这段时间不断查阅资料和阅读教科书的过程中,进一步的加深了自己对专业知识的了解和认识,更加的巩固了自己以往所学习的知识,正所谓“温故而知新”,在这段学习的过程中也让自己学到了更多新的知识。

参考文献
1念强,等单片机原理及应用[M],北京:机械工业,2007.
2振江,等流行单片机实用子程序及应用实例[M],:电子科技大学出版,
3何立民,单片机应用系统设计[M],北京:北京航天航空大学,1989. 4小忠,单片机接口技术实用子程序[M],北京:人民邮电,2005.
5彭军等,数字电路设计与制作[M],北京:科学,2007.
6常建等,传感器原理与工程应用[M],:电子科技大学,2007.
7蔡萍,现代检测技术与系统[M],北京:高等教育,2005.
附录
单片机测速测量系统程序如下:
#in clude<reg52.h>
#i nclude<stdio.h>
#define SYSCLK 11.059200 // 时钟脉冲,单位MHz
#defi ne uchar un sig ned char
#defi ne uint un sig ned int
#defi ne ulong un sig ned long
#define R 5 // 半径0.5m
#define PI 314 〃pi=3.14
//段选定义
sbit P0_0 = POP;
sbit P0_1 = P0A1;
sbit P0_2 = P0A2;
sbit P0_3 = P0A3;
sbit P0_4 =卩0八4;
sbit P0_5 =卩0八5;
sbit P0_6 = P0A6;
sbit P0_7 =卩0八7;
//位选定义
sbit P2_0 = P2A0;
sbit P2_1 = P2A1;
sbit P2_2 = P2A2;
SbitP2_3=P2A3; 2002.
code
uchar
SEG_TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar SEG_TAB1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//0.-9.
数字dp 点亮
void Delay(void); ulong js; uchar k=0; void mai n() {
TMOD=0x51;
// 初始化,每 50ms=50000us 中断一次
(65536-x)*12/11.0592=50000
TL1=0x00; TH1=0x00; TL0=0x00; TH0=0x4c; // 定时初值(65536-50000*11.0592/12)/256=76
转换为16
进制,得高位为 4C (65536-50000*11.0592/12)%256=0
得低位
IE=0x82; TR0=1; // 定时开始
while(1) {
P0 = SEG_TAB[js*2*PI*R/100000 ]; // 显示百位 单位:米每秒
要除以100
Delay();
P0 = SEG_TAB[(js*2*PI*R%100000)/100 ]; // 显示十位
P2_1 = 0; Delay();
P0 = SEG_TAB1[ (js*2*PI*R%100000)%100/10 ]; // P2_2 = 0; Delay();
P0 = SEG_TAB[ (js*2*PI*R%100000)%100%10 ]; // P2_3 = 0;
// 采用共阳0-9数字dp 不点亮
code P2_0 = 0; // 共阳 // PI*R/100 是因为PI=314所以 显示个位加小数点
显示小数位
Delay();
void timerO(void) interrupt 1 {
TR1=0;TR0=0; TFO=O; //
TL0=0x00; TH0=0x4c; k++;
if(k>=20) //
{
js=TH1*256+TL1;TH1=0;TL1=0;k=0; } js=0;TR0=1; void Delay(void) {
uchari;
for(i=0;i<60;i++);
}
******************
中断子程序
*********************************** 中断标志位
每1s 钟计算一次
}
*******************
延时函数 ***************************************。

相关文档
最新文档