《毕业设计(论文)基于单片机的电机测速系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的电机测速系统.doc(24页珍藏版)》请在三一办公上搜索。
1、基于单片机的电机测速系统摘要:在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。本文介绍了一种基于STC89C52单片机的电机测速系统,该系统利用霍尔传感器采集脉冲信号,通过定时计数算法程序,将转速结果实时显示出来。C语言具有开放性和灵活性强的特点,编写起来比较易于上手,不像汇编语言那样局限。所以本次采用的是C语言编程来实现。关键词:单片机,电机测速系统,霍尔传感器,定时Abstract:In engineering practi
2、ce often need to measure speed encounter various occasions. For example, At the engines, motors, machine tool spindles and other rotating equipments operation and control of the pilot often need frequent time-sharing or continuous measurements show its speed and instantaneous velocity. In order to a
3、ccurately measure speed, ensure the real-time measurements and require instantaneous speed can be measured. This paper introduces a microcomputer-based STC89C52 motor speed system, the system uses Hall sensor pulse signal collected through the timer counting algorithm programs, will speed the result
4、s of real-time display. C programming language has the openness and flexibility, strong features, and its difficult to write easy to fly. It is unlike the assembly language as limitations. So, this is the C programming language used to implementKeyword:Single-chip,Motor Speed System,Hall sensor,Timi
5、ng目录1 前言12总体方案设计22.1方案论证22.2方案比较22.3 方案选择33.硬件部分设计43.1速度检测电路43.1.1开关型霍尔传感器介绍43.1.2 传感检测电路53.2单片机最小系统电路63.2.1 主控器STC89C52的介绍73.2.2 时钟电路83.2.3 复位电路93.3 数码显示电路103.4 RS-232串行通信接口电路113.4.1 MAX232介绍113.4.2串行通信接口电路124. 软件设计144.1主程序设计144.2 T0定时中断程序设计15设计总结17参考文献18附录19附录1:电机测速系统总电路图19附录2:电机测速系统总程序代码201 前言随着科
6、技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。单片机又称单片微控制器,就是把一个计算机系统集成到一个芯片上。它完整地包含了计算机内部的CPU(运算器、控制器)、程序存储器(相当于计算机的硬盘)、数据存储器(相当于计算机的内存)、输入输出端口等。虽然它的运算速度无法和计算机相比,但在一些实际的控制应用场合已经足够使用了。对于高等院校电子类和计算机类的学生,学习单片机是很重要的,而进行应用单片机的课程设计更是重中之重,将所学理论知识应用到实际,使更加全面的了解和掌握单片机的应用。在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动
7、机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。本文提出一种基于STC89C52单片机实施电机转速测量的方法,利用霍尔传感器采集脉冲信号,通过定时计数算法程序,将转速结果实时显示出来。在本次设计中也用到了一些常用的数字电子单元元件,如霍尔传感器,霍尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿命长、安装方便等优点,。在实际的使用中,一般需要一个铁质的测速齿轮,齿厚大于2 mm即可,将之固定在待测转速的轴上。2总体方案设计2.1方案论证 在工程实践中,经常会遇到各种需要测量
8、转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。本次课程设计主要是利用STC89C52单片机和传感器来设计电机测速系统。利用传感器采集脉冲信号,通过定时计数算法程序,将转速结果实时显示出来。在本次设计中是利用单片机进行信号处理,信号的采集是使用传感器。对于选择何种传感器来采集信号是对测量的精度是有很大影响的。所以在本次方案比较中主要讨论传感器的选择。2.2方案比较电机光敏三极管 信号转换LED显示单片机处理光敏二极管图2.1方案一方框图方案一包括传感器、处理器和显
9、示3个部分。其方框图如图2.1所示。在该方案中传感器是由红外发光二极管,和红外光敏三极管构成。测速的过程为:在电机的转轴上安装一个圆盘,并在圆盘的边缘处开一个孔让二极管发出的红外光刚好可以通过。在圆盘的上下方分别安装好发光二极管和光敏三极管,当电机转动时就可以通过圆盘来改变光敏三极管接收的光线,从而产生点位信号的变化,这样就构成了一个收发检测系统,可以检测电机的转速。运用的原理和光电耦合器是相同的。电机霍尔传感器 信号转换 LED显示单片机处理图2.2方案二方框图方案二也由传感器、处理器和显示3个部分几部分组成,但所选择的传感器类型不同,其方框图如图2.2所示。此方案的测速系统主要是由开关型霍
10、尔传感器A3144E以及磁钢构成,由它们来检测电机的转速。工作方式为:将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。这样通过高低电平的转换,将其送入单片机后就可以测量它的转速。2.3 方案选择两个方案的主体电路相同,只是传感的的选择不同。而选择开关型霍尔传感器则具有多种优点:精度高:在工作温度区内精度优于1%。过载能力强:当原边电流超负荷,模块达到饱和,可自动保护,即使过载电流是额定值的20倍时,模块也不会损坏。模块的高灵敏度,
11、使之能够区分在“高分量”上的弱信号,例如:在几百安的直流分量上区分出几毫安的交流分量。还可以通过使用多块磁钢来倍频,以增加测量的精度。鉴于以上考虑,最终选定方案二为本次课程设计方案。3.硬件部分设计3.1速度检测电路3.1.1开关型霍尔传感器介绍霍尔传感器是利用霍尔效应原理制成的一种磁敏传感器。它是近年来为适应信息采集的需要而迅速发展起来的一种新型传感器,这类传感器具有工作频带宽,响应快、面积小、灵敏度高、无缺点、便于集成化、多功能化等优点,且易与计算机和其它数字仪表接口,因此被广泛用于自动监测、自动测量、自动报警、自动控制、信息传递、生物医学等各个领域。此处主要介绍开关型霍尔传感器。开关型霍
12、尔传感器由稳压器A、硅霍尔片B、差分放大器C、施密特触发器D和OC门输出E五部分组成,如图3.11所示从输入端1输入电压Vcc,经稳压器A稳压后加在硅霍尔片B的两端,以提供恒定不变的工作电流在垂直于霍尔片的感应面方向施加磁场,产生霍尔电势差Vw,该n信号经差分放大器c放大后送至施密特触发器D整形当磁场达到“工作点”(即B。)时,触发器D输出高电压(相对于地电位),使三极管E导通,输出端V。输出低电位,此状态称为“开”。当施加的磁场达到“释放点”(即B。)时,触发器D输出低电压,使三极管E截止,输出端y。输出高电位,此状态称为“关”。这样2次高低电位变换,使霍尔传感器完成了1次开关动作。开关型霍
13、尔传感器构成图如图3.1所示:图3.1 开关型霍尔传感器构成图开关型霍尔集成传感器(以下简称开关型霍尔传感器)主要被应用于周期和频率的测量、转速的测量、液位控制等方面。常用的开关型霍尔传感器有美国sPRAG1 公司的UGN3000系列如UGN3020、UGN3O3O等。它没有输入端,因磁场是由空间输入的。规定用磁铁的S极接近开关型霍尔传感器正面时形成的B为正值,从图4.2曲线看:当B =0时, 0为高;B=Bop时, 0立即变低,这点称为“工作点”。继续升高B, 0不变。降低B到BRp时,Vo又回升。这点称为“释放点”。如图3.2所示,B 一 B 称为磁滞。在此差值内,输出电位 。保持高电位或
14、低电位不变,因而输出稳定可靠。 图3.2 开关型霍尔传感器输出电压与外加磁感应强度关系3.1.2 传感检测电路速度检测电路是由开关型霍尔传感器和磁钢组成。其电路图如图3.3所示。测量电机转速的第一步就是要将电机地转速表示为单片机可以识别的脉冲信号,从而进行脉冲计数。霍尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿命长、安装方便等优点,当电机转动时,带动传感器,产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲计数装置,进行转速的测量。在实际的使用中,一般需要一个铁质的测速齿轮,齿厚大于2 mm即可,将之固定在待测转速的轴上。所谓磁钢,就是磁钢就是一种有磁性的钢
15、铁。在传感检测电路中将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。这样通过高低电平的转换,将其送入单片机后就可以测量它的转速。其电路如图3.3所示。图3.3 传感器部分3.2单片机最小系统电路单片机最小系统电路如图3.4所示,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。
16、图3.4 单片机最小系统3.2.1 主控器STC89C52的介绍本系统采用单片机STC8952作为主控制器,使用霍尔传感器测量电机的转速,最终在LED上显示测试结果。此外,还可以根据需要调整制电机的转速,硬件组成由图3.5所示。单片机(Micro Controller Unit),又称为微控制器,是指在一块芯片上集成了中央处理器CPU、随机存储器RAM、程序存储器ROM、定时器/计数器、中断控制器以及串行和并行I/0 接口等部件,构成一个完整的微型计算机。目前,新型单片机内还有A/D(D/A)转换器、高速输入输出部件、DMA 通道、浮点运算等特殊功能部件。由于它的结构和指令功能都是按工业控制要
17、求设计的,特别适用于工业控制及其数据处理场合。STC89C52是拥有256字节的RAM,8K的片内ROM,3个16位定时器,6个中断源的微处理器,也就是俗称的单片机。89系列单片机的内核是8031,所以其指令与Intel 8051 系列单片机完全兼容,并且具有以下优点:(1)内部含有Flash 存储器(STC89C52 有8k)。因此在系统的开发过程中可以十分容易进行程序的修改,这就大大缩短了系统的开发周期。同时,在系统工作过程中,能有效地保存一些数据信息,即使外界电源损坏也不影响到信息的保存。(2)插座与80C51兼容。89系列单片机的引脚和80C51是一样的,当用89系列单片机取代80C5
18、1时,可以直接进行代换。(3)静态时钟方式。89系列单片机采用静态时钟方式,可以节省电能,这对于降低便携式产品的功耗十分有用。(4)错误编程亦无废品产生。因为89系列单片机内部采用了Flash 存储器,所以,错误编程之后仍可以重新编程,直到正确为止,故不存在废品。(5)可反复进行系统试验。用89系列单片机设计的系统,可以反复进行系统试验,每次试验可以编入不同的程序,这样可以保证用户的系统设计达到最优。而且随着用户的需要和发展,还可以进行修改,使系统不断能追随用户的最新要求。图3.5 STC89C52单片机引脚图STC8952引脚图如图3.5所示,此芯片共40引脚,每个引脚的功能如下:18脚:
19、通用I/O接口p1.0p1.7 9脚: rst复位键 10 .11脚:RXD串口输入 TXD串口输出 1219:I/O p3接口 (12,13脚 INT0中断0;INT1中断1;14,15 : 计数脉冲T0 T1;16,17: WR写控制 RD读控制输出端) 18,19: 晶振谐振器 20: 地线 2128:p2 接口 高8位地址总线29: psen 片外rom选通端 单片机对片外rom操作时 29脚(psen)输出低电平 30:ALE/PROG 地址锁存器 31:EA rom取指令控制器 高电平片内取 低电平片外取 3239:p0.0p0.7(注意此接口的顺序与其他I/O接口不同 与引脚号的
20、排列顺序相反) 40:电源+5V3.2.2 时钟电路STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19脚(XTAL1)为振荡器。反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大器的输出端。在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。晶振频率为6MHz,电容大小为1530pF,电容的大小可以起到频率微调的作用,时钟电路如图3.6所示。 图3.6 时钟电路(晶振)3.2.3 复位电路STC89C52的复位是由外部的复位电路来实现的,复位电路通常采用上电复
21、位和按钮复位两种方式,本设计采用的是最简单的上电自动复位电路,其电路图如图3.7所示。上电自动复位是通过外部复位电路的电容充电实现的,当电源接通时只要VCC的上升时间不超过1毫秒,就可以实现自动上电复位。本设计时钟频率选用6MHZ,电容取22微法,电阻取1千欧。 图3.7 复位电路3.3 数码显示电路LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示ag为数字和字符显示段,h段为小数点显示,通过ag为7个发光段的不同组合,可以显示09和AF共16个数字和字母。LED可以分为共阴极和共阳极两种结构。共阴极结构即把8个发光二极管阴极连在一起。这种装入数码管中显示字形的数据称字形码,
22、又称段选码。点亮LED显示器有两种方式:一是静态显示:二是动态显示。所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通或截止。如图3.8所示为4位静态LED显示电路。该电路每一位可单独显示。只要在要显示的那位段选线上保持段选电平,该位就能保持显示相应的显示字符。这种电路的优点是:在同一瞬间可以显示不同的字符;但缺点就是占用端口资源较多。从下图可以看出,每位LED显示器需要单独占用8根端口线,因而,在数据较多时不采用此中设计,而是采用动态显示方式。本设计采用静态显示。图3.8静态显示电路所谓动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描方式一
23、位一位地轮流点亮各位显示器。如下图3.9所示为4位LED动态显示电路。 +5VP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2AT89C51P2.3图3.94位动态LED显示器电路本设计用到的是LED显示器静态显示方式,其电路如图3.10所示是发光二极管显示器(LED)的结构、工作原理及接口电路。图3.10 LED显示部分3.4 RS-232串行通信接口电路单片机的串行口是非常有用的,通过它我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作。微控制器有许多标准的通信方法,但在主/从嵌入式系统中,最常用的是RS23 2串行接口、
24、SPI和I2C。52单片机有一个全双工的串行通信口,非常适合与电脑进行通信,本次课程设计,采用的是RS232出行接口方式。3.4.1 MAX232介绍MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口rs232电平是-10v +10v,而一般的单片机应用系统的信号电压是TTL电平0 +5v,max232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。MAX232引脚图如图3.11所示。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电
25、平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。其主要特点为: 1、单5V电源工作2、LinBiCMOSTM工艺技术3、两个驱动器及两个接收器4、30V输入电平5、低电源电流:典型值是8mA6、符合甚至优于ANSI标准 EIA/TIA-232-E及ITU推荐标准V.287、ESD保护大于MIL-STD-883(方 法3015)标准的2000V图3.11 MAX232引脚图3.4.2串行通信接口电路串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windo
26、ws环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。本次课程设计串行通信接口电路如图3.12所示。图3.12串行通信接口电路 4. 软件设计对于电机转速的测定,一般有两种方法:一种是测频率,就是在给定时间内测电机转了几圈,这种方法适合于高速旋转的电机;另一种则是测周期,就是测电机转一圈的时间,这种方法适合于测低速的电机。而我们这次使用的电机是一个高速的直流电机,所以就选用测频法来编程。4.1主程序设计本系统采用STC89C52中的T
27、0定时器和T1计数器配合使用对转速脉冲定时计数。计数器T1工作于计数状态对外部脉冲进行计数;T0工作为定时器方式每次定时10ms。本设计程序编程的思想就是在给定的10ms之内,用单片机自带的计数器T1对外部脉冲进行计数。主程序的流程图如图4.1所示。Y平显示数据关闭计数器T1处理TH1,TH0 数据buf_min=100等待50ms 开启计数器T1开启定时T0N平初始化T0,T1开始图4.1 主程序流程图主程序部分程序如下:#include#define uint unsigned intsbit CNPN0=P00;sbit CNPN1=P01;sbit CNPN2=P02;sbit CNP
28、N3=P03;uint buf_min=0x1,flag;void delay(uint x)/x=1000表示4ms while(-x); void main() uint num10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uint i,j,temp; uint sum=0x0,disnum4=0; TMOD=0x51; /TO工作为定时方式,T1工作为计数方式 TH0=-10236/256; TL0=-10236%256; TH1=0; TL1=0; EA=1; /启动外部中断04.2 T0定时中断程序设计T0定时中断程序主要
29、是完成10ms的定时任务,并且对变量buf_min进行加一处理,其中在对T0进行赋初值时,选择为10236而不是10000。主要是c语言在经过反汇编后,一条c语句将会编译成几条语句,这样就增加了指令执行的时间,使定时产生误差,而在经过多次调试后,选择10236为T0初值是最接近10ms的。Y进入定时中断关闭定时器T0开启定时器T0buf_min加1TH0,TL0赋值退出中断图4.2 T0定时中断流程图T0 定时中断部分程序:void time0() interrupt 1 /定时10ms EA=0; ET0=0; TR0=0; TH0=-10236/256; TL0=-10236%256; b
30、uf_min+; EA=1; ET0=1; TR0=1; 设计总结在本次课程设计中,介绍了一种基于STC89C52单片机的电机测速系统,该测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强等特点。霍尔传感器的输出信号经信号调理后,通过单片机对连续脉冲记数来实现转速测控,并且充分利用了单片机的内部资源,有很高的性价比。经过测试并对误差进行分析发现,该系统的测量误差在5以内,并且在测量范围内转速越高测量精度越高。所以该系统在一般的转速检测和控制中均可应用。通过本次课程设计,我对单片机的工作原理和应用有了深入的理解,掌握了单片机系统软硬件设计的基本方法,对一个课题如何画流程图,编写
31、程序等有了一定的认识。使我深刻体会到单片机技术应用领域的广泛,也让我了解到单片机技术对当今人们生活的重要性。虽然本次课程设计不要求做出实物,而且只是针对微机控制的一个领域进行研究和查找有关的单片机控制的资料。但是已经让我了解到了做一个课程设计不仅要全面的分析和解决在设计时出现的问题。也通过查阅资料了解到微机控制的重要性和其应用的广泛性。在这不断发展的社会,微机控制的自动化已经占据了很大的地位,而且其发展的速度是很快的,所以对于我们学习这个专业的学生来说,就要求我们应该不断的去了解最新的设计和理论知识,那样才能让我们在本领域有一立足之地。参考文献1 彭介华编.电子技术课程设计指导M.北京:高等教
32、育出版社,19972 谢自美.电子线路设计实验测试M.第2版.武汉:华中理工大学出版社, 20003 康华光主编.电子技术基础数字部分M.第4版.北京:高等教育出版社,2000.74 陈汝全主编.电子技术常用器件手册M.第2版.北京:机械工业出版社,20005 毕满清主编.电子技术实验与课程设计M.第2版.北京:机械工业出版社,20016 张建华主编.数字电子技术M.第2版.北京:机械工业出版社,20007 陈大钦主编.电子技术基础实验电子电路实验设计仿真M.北京:高等教育出版社,20008 常健生主编.检测与转换技术M.第3版.北京:机械工业出版社,20039 张毅刚主编.单片机原理及应用M
33、.北京:高等教育出版社,200310 欧阳文主编.ATMEL89系列单片机的原理与开发实践M.北京:中国电力出版社,2007附录附录1:电机测速系统总电路图附录2:电机测速系统总程序代码#include#define uint unsigned intsbit CNPN0=P00;sbit CNPN1=P01;sbit CNPN2=P02;sbit CNPN3=P03;uint buf_min=0x1,flag;void delay(uint x)/x=1000表示4ms while(-x); void time0() interrupt 1 /定时10ms EA=0; ET0=0; TR0=
34、0; TH0=-10236/256; TL0=-10236%256; buf_min+; EA=1; ET0=1; TR0=1; void main() uint num10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uint i,j,temp; uint sum=0x0,disnum4=0; TMOD=0x51; /TO工作为定时方式,T1工作为计数方式 TH0=-10236/256; TL0=-10236%256; TH1=0; TL1=0; EA=1; /启动外部中断0 ET0=1; TR0=1; while(1) if(buf
35、_min= =5) /等待50ms,在重新计时 EA=0; ET0=0; TR0=0; buf_min=0;EA=1; ET1=1;TR1=1; ET0=1; TR0=1;break; while(1) if(buf_min= =100) /到达1s后关闭定时T0和计数器T1 EA=0; ET0=0; TR0=0;ET1=0; TR1=0;buf_min=0;break; temp=(TH1*0x100+TL1)*30; disnum3=temp/1000; disnum2=(temp%1000)/100; disnum0=(temp%100)/10; disnum1=(temp%100)%10; while(1) for(i=0;i4;i+) for(j=0;j10;j+) if(disnumi=j) switch(i) /选通哪一个数码管显示 case 0 :CNPN0=0;break; case 1 :CNPN1=0;break; case 2 :CNPN2=0;break; case 3 :CNPN3=0;break; P2=numj; delay(10); switch(i) case 0 :CNPN0=1;break; case 1 :CNPN1=1;break; case 2 :CNPN2=1;break; case 3 :CNPN3=1;break;