资源描述
电力电子课程设计论文学 院: 自动化学院 专 业: 电气工程与自动化 指导教师: 程安宇 班 级: 学 生: 周会武 学 号: 2011212735 完成日期 2014年 5 月基于单片机的步进电机速度测量系统设计电气工程与自动化 周会武摘 要本文重点介绍了用霍尔开关传感器作为测量元件。霍尔开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、位置重复精度高(可达m级)。取用了各种补偿和保护措施的霍尔器件的工作温度范围宽,可达55150。而它的输出为脉冲信号,可以利用单片机的定时/计数功能进而测得步进电机的转速。此测速系统具有优异的性能价格比、体积小、可靠性高,由单片机直接接收由霍尔开关传感器送来的脉冲信号,经过运算,得出实际转速,然后利用数码管把实际速度显示出来,并利用发光二极管实现超速或低速报警。经过实物论证,此设计方案满足课题要求。关键字霍尔传感器;单片机;数码管;光报警目录1 序言11.1 课题研究的背景及意义11.2 国内外的研究现状综述12 速度测量方案论证22.1 方案一22.2 方案二32.3 速度测量方案的确定33 开关型霍尔传感器介绍43.1 开关型霍尔传感器工作原理43.2 开关型霍尔传感器的应用44 单元模块电路方案设计54.1 系统硬件电路总体设计54.2 速度检测部分64.3 单片机最小系统64.3.1 主控器STC89C5274.3.2 时钟电路94.3.3 复位电路104.4 数码显示部分104.4.1 LED结构与原理114.4.2 LED显示器显示方式124.5 光报警装置134.6 下载部分144.6.1 RS-232接口与单片机串行通信基本原理144.6.2 RS-232串行通信接口电路145 软件设计155.1 单片机程序设计的特点155.2 程序总体设计流程图166. 速度测量软、硬件调试186.1调试中出现的问题及解决方案19结束语19参考文献20附录一:系统电路原理21附录二:系统仿真图22附录三:源程序22致谢3030 / 35文档可自由编辑打印1 序言1.1 课题研究的背景及意义在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。本文提出一种基于89C52单片机实施电机转速测量的方法,利用霍尔传感器采集脉冲信号,通过定时计数算法程序,将转速结果实时显示出来1。 随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。单片机又称单片微控制器,就是把一个计算机系统集成到一个芯片上。它完整地包含了计算机内部的CPU(运算器、控制器)、程序存储器(相当于计算机的硬盘)、数据存储器(相当于计算机的内存)、输入输出端口等。虽然它的运算速度无法和计算机相比,但在一些实际的控制应用场合已经足够使用了。对于高等院校电子类和计算机类的学生,学习单片机是很重要的,而进行应用单片机的课程设计更是重中之重,将所学理论知识应用到实际,使更加全面的了解和掌握单片机的应用2。在本次设计中也用到了一些常用的数字电子单元元件,如霍尔传感器,霍尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿命长、安装方便等优点。在实际的使用中,一般需要一个铁质的测速齿轮,齿厚大于2 mm即可,将之固定在待测转速的轴上。1.2 国内外的研究现状综述转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,速度测量的精度直接影响系统的控制情况,它是关系测控效果的一个重要因素。不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。在电机的转速测量中,影响测量精度的主要因素有两个:一是采样点的多少,采样点越多,速度测量结果越精确,尤其是对于低转速的测量。二是采样频率,采样频率越高,采样的数据就越准确。常用的数字测量方法电机转动速度的数字检测基本方法是利用与电动机同轴连接的光电脉冲发生器的输出脉冲频率与转速成正比的原理。根据脉冲发生器发出的脉冲速度和序列,测量转速和判别其转动方向。根据脉冲计数来实现转速测量的方法主要有:M法(测频法)、T法(测周期法)和M/T法(频率/周期法)。步进电动机又称脉冲电动机或阶跃电动机,国外一般称为Steppingmotor、Pulse motor或Stepper servo,其应用发展已有约80年的历史。可以说步进电动机天生就是一种离散运动的装置,是纯粹的数字控制电动机,步迸电机驱动器通过外加控制脉冲,控制步进电动机各相绕组的导通或截止,从而使电动机产生步进运动。就是说给一个电脉冲信号,电动机就转过一个角度或者前进一步,其输出转角、转速与输入脉冲的个数、频率有着严格的比例关系。这些关系在负载能力范围内不随电源电压、负载大小、环境条件等的变化而变化。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,同时步进电机只有周期性的误差而无累积误差,精度高。步进电动机可以在宽广的频率范围内通过改变脉冲频率来实现调速、快速起停、正反转控制等,这是步进电动机最突出的优点。正是由于步进电机具有突出的优点,所以成了机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。比如在数控系统中就得到广泛的应用。目前世界各国都在大力发展数控技术,我国的数控系统也取得了很大的发展,我国已经能够自行研制开发适合我国数控机床发展需要的各种档次的数控系统。其中华中数控系统解决了“五轴联动”,为“神州”系列飞船顺列升空立下了汗马功劳。虽然与发达国家相比,我们我国的数控技术方面整体发展水平还比较低,但已经在我国占有非常重要的地位,并起了很大的作用。我国数控系统在初期就是以单板机或单片机为数控核心,以步进电机为执行元件,由于其结构简单,价格便宜,很适合我国中小型企业使用。2 速度测量方案论证2.1 方案一此方案包括传感器、处理器和显示3个部分。其方框图如图2.1所示。在该方案中传感器是由红外发光二极管,和红外光敏三极管构成。测速的过程为:在电机的转轴上安装一个圆盘,并在圆盘的边缘处开一个孔让二极管发出的红外光刚好可以通过。在圆盘的上下方分别安装好发光二极管和光敏三极管,当电机转动时就可以通过圆盘来改变光敏三极管接收的光线,从而产生点位信号的变化,这样就构成了一个收发检测系统,可以检测电机的转速。运用的原理和光电耦合器是相同的3。电机光敏三极管 信号转换LED显示单片机处理光敏二极管图2.1方案一方框图2.2 方案二此方案也由传感器、处理器和显示3个部分几部分组成,但所选择的传感器类型不同,其方框图如图2.2所示。此方案的测速系统主要是由开关型霍尔传感器AH44E以及磁钢构成,由它们来检测电机的转速。工作方式为:将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。这样通过高低电平的转换,将其送入单片机后就可以测量它的转速4。电机霍尔传感器 LED显示单片机处理图2.2方案二方框图2.3 速度测量方案的确定两个方案的主体电路相同,只是传感器的的选择不同。而选择开关型霍尔传感器则具有多种优点:1.精度高:在工作温度区内精度优于1%。2.过载能力强:当原边电流超负荷,模块达到饱和,可自动保护,即使过载电流是额定值的20倍时,模块也不会损坏。3.模块的高灵敏度,使之能够区分在“高分量”上的弱信号,例如:在几百安的直流分量上区分出几毫安的交流分量。4.还可以通过使用多块磁钢来倍频,以增加测量的精度。鉴于以上考虑,最终选定方案二为本次课程设计方案。3 开关型霍尔传感器介绍3.1 开关型霍尔传感器工作原理霍尔传感器是利用霍尔效应原理制成的一种磁敏传感器。它是近年来为适应信息采集的需要而迅速发展起来的一种新型传感器,这类传感器具有工作频带宽,响应快、面积小、灵敏度高、无缺点、便于集成化、多功能化等优点,且易与计算机和其它数字仪表接口,因此被广泛用于自动监测、自动测量、自动报警、自动控制、信息传递、生物医学等各个领域。此处主要介绍开关型霍尔传感器。开关型霍尔传感器由稳压器A、硅霍尔片B、差分放大器C、施密特触发器D和OC门输出E五部分组成,如图3.1所示:从输入端1输入电压Vcc,经稳压器A稳压后加在硅霍尔片B的两端,以提供恒定不变的工作电流在垂直于霍尔片的感应面方向施加磁场,产生霍尔电势差Vw,该n信号经差分放大器C放大后送至施密特触发器D整形。当磁场达到“工作点”(即B0)时,触发器D输出高电压(相对于地电位),使三极管E导通,输出端V0输出低电位,此状态称为“开”。当施加的磁场达到“释放点”(即B0)时,触发器D输出低电压,使三极管E截止,输出端V0输出高电位,此状态称为“关”。这样2次高低电位变换,使霍尔传感器完成了1次开关动作5。开关型霍尔传感器构成图如图3.1所示: 图3.1 开关型霍尔传感器构成图3.2 开关型霍尔传感器的应用开关型霍尔集成传感器(以下简称开关型霍尔传感器)主要被应用于周期和频率的测量、转速的测量、液位控制等方面。常用的开关型霍尔传感器有美国sPRAG1公司的UGN3000系列如UGN3020、UGN3O3O等。它没有输入端,因磁场是由空间输入的。规定用磁铁的S极接近开关型霍尔传感器正面时形成的B为正值,从图3.2曲线看:当B =0时, V0为高;B=Bop时, V0立即变低,这点称为“工作点”。继续升高B, V0不变。降低B到Brp时,V0又回升。这点称为“释放点”。如图3.2所示,Brp 一 Bop称为磁滞。在此差值内,输出电位保持高电位或低电位不变,因而输出稳定可靠。 图3.2 开关型霍尔传感器输出电压与外加磁感应强度关系4 单元模块电路方案设计4.1 系统硬件电路总体设计转速测量电路STC89C52单片机键盘电路复位电路电源及时钟电路数码显示状态显示电路路ULN2003A 驱动电路步进电机转速测量电路超速报警装置 图4.1 电路总体设计4.2 速度检测部分速度检测部分是由开关型霍尔传感器和磁钢组成。其电路图如图4.2所示。测量电机转速的第一步就是要将电机地转速表示为单片机可以识别的脉冲信号,从而进行脉冲计数。霍尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿命长、安装方便等优点,当电机转动时,带动安装在电机上的磁铁,产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲计数装置,进行转速的测量。在实际的使用中,一般需要两个磁钢,将之固定在待测转速的轴上6。所谓磁钢,就是磁钢就是一种有磁性的钢铁。在传感检测电路中将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。这样通过高低电平的转换,将其送入单片机后就可以测量它的转速7。其电路如下图4.2图4.2 传感器部分4.3 单片机最小系统单片机最小系统设计:本设计单片机最小系统如图4.3所示,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作8。图4.3 单片机最小系统4.3.1 主控器STC89C52本系统采用单片机STC8952作为主控制器,使用霍尔传感器测量电机的转速,最终在LED上显示测试结果。此外,还可以根据需要调整制电机的转速,硬件组成由图4.4所示。单片机(Micro Controller Unit),又称为微控制器,是指在一块芯片上集成了中央处理器CPU、随机存储器RAM、程序存储器ROM、定时器/计数器、中断控制器以及串行和并行I/0 接口等部件,构成一个完整的微型计算机。目前,新型单片机内还有A/D(D/A)转换器、高速输入输出部件、DMA 通道、浮点运算等特殊功能部件。由于它的结构和指令功能都是按工业控制要求设计的,特别适用于工业控制及其数据处理场合。STC89C52是拥有256字节的RAM,8K的片内ROM,3个16位定时器,6个中断源的微处理器,也就是俗称的单片机。89系列单片机的内核是8031,所以其指令与Intel 8051 系列单片机完全兼容,并且具有以下优点:(1)内部含有Flash 存储器(STC89C52 有8k)。因此在系统的开发过程中可以十分容易进行程序的修改,这就大大缩短了系统的开发周期。同时,在系统工作过程中,能有效地保存一些数据信息,即使外界电源损坏也不影响到信息的保存。(2)插座与80C51兼容。89系列单片机的引脚和80C51是一样的,当用89系列单片机取代80C51时,可以直接进行代换。(3)静态时钟方式。89系列单片机采用静态时钟方式,可以节省电能,这对于降低便携式产品的功耗十分有用。(4)错误编程亦无废品产生。因为89系列单片机内部采用了Flash 存储器,所以,错误编程之后仍可以重新编程,直到正确为止,故不存在废品。(5)可反复进行系统试验。用89系列单片机设计的系统,可以反复进行系统试验,每次试验可以编入不同的程序,这样可以保证用户的系统设计达到最优。而且随着用户的需要和发展,还可以进行修改,使系统不断能追随用户的最新要求。STC8952引脚图如图4.4所示:图4.4 STC89C52单片机引脚图STC89C52芯片 共40引脚:18脚: 通用I/O接口P1.0P1.79脚: RET复位键1011脚:RXD串口输入 TXD串口输出1213脚: INT0中断0;INT1中断1;1415 : 计数脉冲T0 T1;1617: WR写控制 RD读控制输出端1819: 晶振谐振器20: 地线2128:P2 接口 高8位地址总线29:PSEN 片外ROM选通端。单片机对片外ROM操作时29脚(PSEN)输出低电平30:ALE/PROG 地址锁存器31:EA 取指令控制器 高电平片内取 低电平片外取3239:P0.0P0.7(注意此接口的顺序与其他I/O接口不同 与引脚号的排列顺序相反)40:电源+5V4.3.2 时钟电路STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19脚(XTAL1)为振荡器。反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大器的输出端。在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。晶振频率为12MHz,电容大小为1530pF,电容的大小可以起到频率微调的作用,时钟电路如图4.5所示。 图4.5时钟电路(晶振)4.3.3 复位电路STC89C52的复位是由外部的复位电路来实现的,复位电路通常采用上电复位和按钮复位两种方式,本设计采用的是最简单的上电自动复位电路,其电路图如图4.6。上电自动复位是通过外部复位电路的电容充电实现的,当电源接通时只要VCC的上升时间不超过1毫秒,就可以实现自动上电复位。本设计时钟频率选用12MHZ,电容取22微法,电阻取1千欧。 图4.6 复位电路4.4 数码显示部分显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种,由于这两种显示器结构简单,价格便宜,接口电路容易实现,因而得到广泛应用。本设计用到的是LED显示器,电路如图4.7所示。下面是发光二极管显示器(LED)的结构、工作原理及接口电路。如图4.7所示图4.7 LED显示部分4.4.1 LED结构与原理LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示ag为数字和字符显示段,dp段为小数点显示,通过ag为7个发光段的不同组合,可以显示09和AF共16个数字和字母。LED可以分为共阴极和共阳极两种结构,如图4.8(a)和图4.8(b) 所示。共阴极结构即把8个发光二极管阴极连在一起。这种装入数码管中显示字形的数据称字形码,又称段选码。数码管管脚分配图 a共阴极 b共阳极图4.87段LED数码管表4-17段LED的段选码表显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03fHC0H87fH80H106HF9H96fH90H25bHA4HA77H88H34fHB0HB7fH83H466H99HC39HC6H56dH92HD3fHA1H67dH82HE79H86H707HF8HF71H8EH如下图所示是一个共阴极数码管经反相器后接至单片机的电路,要想显示数字“7”须a、b、c这3个显示段发光 (即这3个字段为底电平)只要在P1接口输入11111000(07)即可。里07即为数字7的段选码。字形与段选码的关系见表4-1所示。图4.9 显示电路4.4.2 LED显示器显示方式 点亮LED显示器有两种方式:一是静态显示:二是动态显示。所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通或截止。如图4.10(a)所示为4位静态LED显示电路。该电路每一位可单独显示。只要在要显示的那位段选线上保持段选电平,该位就能保持显示相应的显示字符。这种电路的优点是:在同一瞬间可以显示不同的字符;但缺点就是占用端口资源较多。从下图可以看出,每位LED显示器需要单独占用8根端口线,因而,在数据较多时不采用此中设计,而是采用动态显示方式。本设计采用静态显示。图4.10(a)静态显示电路所谓动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描方式一位一位地轮流点亮各位显示器。如下图4.10(b)所示为4位LED动态显示电路。 +5VP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2AT89C51P2.3图4.10 (b)4位动态LED显示器电路4.5 光报警装置 为了保证步进电机的转速在安全范围内,本设计采用二极管作为超速的报警装置,当其转速超过设定上限时,二极管发光提醒步进电机的转速已超过设定上限。本设计的报警电路如图4.11所示:图4.11 光报警原理图4.6 下载部分单片机的串行口是非常有用的,通过他我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作。微控制器有许多标准的通信方法,但在主/从嵌入式系统中,最常用的是RS232串行接口、SPI和I2C52单片机有一个全双工的串行通信口,非常适合与电脑进行通信,本次课程设计,采用的是RS232出行接口方式。4.6.1 RS-232接口与单片机串行通信基本原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。4.6.2 RS-232串行通信接口电路本次课程设计串行通信接口电路如图4.12所示:图4.12 串行通信接口电路5 软件设计5.1 单片机程序设计的特点采用单片机C语言编程具有很多的优越性。就算不懂得单片机的指令集,也能够编出完美的单片机程序,无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序,不同函数的数据实行覆盖,有效利用单片机上有限的RAM 空间,程序具有坚固性,数据被破坏是程序运行异常的重要因素,C语言对数据进行了许多工业性的处理,避免了运行中间非异步的破坏,C语言提供复杂的数据类型(数组,结构体,联合,枚举,指针等),极大地增强了程序处理能力和灵活性,提供了多种数据存储类型和专门针对8051的data、idata、pdata、xdata、code等存储类型,自动为变量合理分配地址,提供small,large等编译模式,以适应芯片上存储器的大小,中断服务程序的现场保护和恢复,中断向量的地址是直接跟单片机相关的都由C编译器代办:提供常用的标准函数库,以供用户直接使用,头文件中定义的宏,说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化和产品的开发有严格的句法检查,错误很少且很容易在高级语言的水平上迅速地被排掉,提高运行的安全性。按照可靠性理论,程序设计最主要任务是确保应用程序按照给定的顺序有序地运行。有序地运行的基础是硬件的可靠性,可靠性高的硬件基础可以保证不会出现硬件系统故障:但是,在工业现场使用时,大量的干扰源虽然不会造成单片机系统硬件的破坏,却常常会破坏数字信号的时序,更改单片机寄存器内容,导致程序跑飞或进入死循环.因此在提高硬件可靠性的基础上必须在程序设计中采取措施,提高软件的可靠性,减少软件错误的发生以及在发生软件错误的情况下仍然能使系统恢复正常运行。可软件的可靠性问题常常容易被人们忽视。随着单片机测控系统越来越复杂,工作环境干扰越来越严重,软件可靠性问题逐渐为人们所重视。软件的可靠性问题虽然和硬件的可靠性问题不尽相同,在基于单片机的测控系统中软件的重要性与硬件是处于相同等重要的地位。单片机测控系统本身对程序设计的要求除了可靠,易理解,易维护,准确和可测试外,温度采集系统在软件设计时还提出了以下要求:1、容错性 :在工业控制中,由于单片机测控系统所处的环境比较恶劣,常存在于干扰源如环境温度,电场,磁场等。使数据采集不可靠控制失灵或程序运行失常,当发生这些错误或故障时,测控软件要能够不受影响,从错误或故障中恢复,保证系统的正常工作。2、实时性:实时性是测控系统的普遍要求,即要求系统及时响应外部事件的发生并及时给出处理结果。随着电子技术的飞速发展,硬件的集成度与速度却不断提高。因此这就要编写相应的测控软件来满足实时性要求.在工程应用程序设计中,采用汇编语言比高级语言更具有实时性。3、足够的时序裕度:时序是程序设计中必须考虑的问题。系统在中心控制下,实现分时操作,在非握手控制下,程序运行完全依靠时序调度,切换控制,这就要求在编写程序时,不仅要时序正确,而且要有足够的时序裕度9。5.2 程序总体设计流程图T0中断出口返回速度值计算速度脉冲计数装入定时器初值T0中断入口 系统初始化装入初值开定时器T1等待中断 开始T1中断出口显示测量速度打开T0 显示转速是否测速?反转脉冲正转脉冲 正转? 启动? 扫描键盘定时器装入初值T1中断入口5.1 程序总体设计流程图系统总体框图如图(5-1)所示,程序由键盘扫描处理模块、数码管显示模块、转速检测模块组成。并且将键盘扫描处理、显示写进定时器中断服务程序,以提高程序的执行效率。本系统采用STC89C52中的T0定时器和T1计数器配合使用对转速脉冲定时计数。计数器T1工作于计数状态对外部脉冲进行计数;T0工作为定时器方式每次定时50ms,并记到20次后中断,总计时为1s。 该程序的流程图如图5.2:图5.2 主程序流程图 图5.3 T0测速流程图该程序编程的思想就是在给定的1s之内,用单片机自带的计数器T1对外部脉冲进行计数。图5.3是定时服务程序,改程序主要是完成1s的定时任务,并且对变量buf_min进行加一处理,其中在对T0进行赋初值时,选择为50000,这样记到20次最接近1s。6. 速度测量软、硬件调试在这次设计过程中,大部分的时间都用在了调试上,调试又包括硬件调试和软件调试。下面首先介绍软件调试。在对程序进行调试前,首先是用编写程序代码,对于设计好了程序结构图来说,编写代码是很快的,基本上是花了半天的时间就完成。对于程序的编译调试,我们使用的keil软件,而影响本次设计的关键因素之一就是程序的定时问题,因为程序采用的是在给定时间内测定电机转动次数,所以在调试过程中主要就是针对中断定时程序初值的设定问题进行调试。调试时就是写一个空的main函数,然后在写一个定时函数,通过设置断点,全速运行一次程序将停在断点处,此时可查看寄存器窗口sec中的值,在全速运行一次,再看sec中的值,就出两次sec中的差值即为中断定时器的时间。这样经过多次的修改最终得到50000是最为接近50ms的初值,而程序的其它地方没有什么大的问题很容易解决。将软件调试好后接着就是焊接电路图。在焊接过程中也是一部分一部分的焊接,首先就是将单片机最小系统焊好,然后在焊接数码管显示电路,在焊好这部分电路后,就用一个简单的显示程序对焊好的显示电路进行测试,经过测试能够正常显示数字所以焊接的显示电路正确。接下来就就是焊接传感器电路部分,由于霍尔传感器是要和电机接近,所以霍尔传感器就焊接在另外一块电路上,通过外部连线将其与单片机相连10。6.1调试中出现的问题及解决方案在整个调试过程中,最容易出现的问题就是接触不良或者短路现象,出现这种问题的主要原因就是在焊接过程中不够细心所导致的。这种情况的解决思路也很明确,就是重新检查电路板,如果发现问题所在,就用吸锡的工具把焊接部位吸掉,然后重新焊接。结束语通过本次课程设计,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:交流电机调速、STC89C52单片机等,为本次课程设计提供了一定的资料。在做课程设计的初期阶段,难度很大,没有头绪。通过求助于毛老师、理清了思路。同时,在图书馆里、网上查阅资料,攻克了课程设计中的道道难题。最后经过指导老师的耐心指点和连续的奋战才算基本合格。办事只要有了头绪,就会简单很多。本次设计能完成,算是有了很大的收获。总的感受有以下几方面:1、通过本次设计,我不但对单片机有了更为深入的了解,对一个课题如何画流程图,编程序等有了一定的认识。2、进一步加强了我的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题,以及如何灵活地改变方法去实现设计方案。特别是深刻体会到了软件和硬件结合的重要性,以及两者的联系和配合作用。3、让我了解到单片机技术对当今人们生活的重要性。同时这次做课程设计的经历也使我受益匪浅,让我知道做任何事情都应脚踏实地,刻苦努力地去做,只有这样,才能做好。在设计过程中,得到了我的指导老师的悉心指导与帮助,在此表示衷心的感谢。参考文献1 欧阳文主编.ATMEL89系列单片机的原理与开发实践M.北京:中国电力出版社,2007.2 张毅刚主编.单片机原理及应用M.北京:高等教育出版社,2003. 3 吴霞.利用89C51单片机实现的一种低转速测量方法J.机电工程,2000,17(6):18-20. 4 邵显涛,陈明,李俊.基于霍尔传感器电机转速的单片机测量J.研究与开发,2008,27(10):29-31.5 赵树磊,谢吉华,刘永峰.基于霍尔传感器的电机测速装置J.江苏电器,2008(10):53-56.6 李福进,陈至坤,王汝琳,梁月肖.基于单片机的转速测量方法J.工况自动化,2006(1):54-55.7 常健生主编.检测与转换技术M.第3版.北京:机械工业出版社,2003.8 张毅刚等.单片机原理及应用M.北京:高等教育出版社,2004.9 郭天祥.51单片机C语言教程M.北京:电子工业出版社,2010.10 陈大钦主编.电子技术基础实验电子电路实验设计仿真M.北京:高等教育出版社,2000.附录一:系统电路原理附录二:系统仿真图附录三:源程序#include#define uchar unsigned char#define uint unsigned intuchar code fan=0xfc,0xf9,0xf3,0xf6; /反转控制字uchar code zheng=0xfc,0xf6,0xf3,0xf9; /正转控制字uint code X=55295,46081,39497,34561,30719,27640,25133,23036,21266,19748,18430,17280,16263,15359,14551,13822,13165,12566,12020,11519,11059,10633,10239,9874,9533,9215,8918,8640,8377,8131,7899,7679,7472,7275,7088,6911,6742,6582,6429,6283,6143,6009,5881,5760,5642,5528,5420,5316,5216,5119,5026,4937,4850,4766,4685,4607,4532,4458,4387,4319,4253,4188,4126,4065,4006,3949,3893,3839,3786,3736,3686,3637,3590,3544,3499,3456,3412,3371,3330,3291,3252,3214,3177,3141,3105,3071,3037,3004,2972,2940,2909,2880,2849,2821,2792,2764;/uchar led=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /共阳极码 uchar led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00; /共阴极码/uchar showbit=0xfe,0xfd,0xfb,0xf7,0x7f,0xbf,0xdf,0xef; /位码uint code speed=50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820,830,840,850,860,870,880,890,900,910,920,930,940,950,960,970,980,990,1000;sbit P3_0=P30;sbit P3_1=P31; sbit qidong=P10;sbit tingzhi=P11;sbit zf=P12;sbit xsqh=P13;sbit jiasu=P14;sbit jiansu=P15;sbit jiasu100=P16;sbit jiansu100=P17;sbit P3_4=P34; /个位sbit P3_5=P35; /十位sbit P3_6=P36; /百位sbit P3_7=P37; /千位sbit P3_2=P32;uint L,N,M,K,speednow,Q;uint cesu;uchar T1count,beforecount,aftercount;bit flag;/flag为1正转,flag为0反转bit star_flag;/启动为1,停止为0bit xianshi_flag; /测速为1,设定速度为0bit beforechange;bit afterchange;void delayuln(void) /1ms误差 0us unsigned char a,b,c; for(c=1;c0;c-) for(b=142;b0;b-) for(a=2;a0;a-);void delayled()/1ms unsigned char a,b,c; for(c=1;c0;c-) for(b=142;b0;b-) for(a=2;a0;a-);void delaykey(void) /10ms误差 -0.2us unsigned char a,b; for(b=102;b0;b-) for(a=3;a0;a-);void display(uint s) /显示函数 uint ge,shi,bai,qian; ge=s%10; shi=s/10%10; bai=s/100%10; qian=s/1000%10; P3_4=0; P0=ledge;delayled();P3_4=1;P3_5=0; P0=ledshi;delayled();P3_5=1; P3_6=0; P0=ledbai;delayled();P3_6=1; P3_7=0; P0=ledqian;delayled(); P3_7=1; void motor_zf() /换向程序if(star_flag=0)flag=!flag;P3_0=!P3_0;elsebeforechange=1;P3_2=0;L=N;/beforechange=1;/P3_2=0;/L=N;void speedup() /速度+10 if(N0) N-;void speedup100() /速度+100 if(N9) N=N-10;void key() /键盘扫描程序if(P1&0xff)!=0xff) delaykey();if(zf=0)motor_zf();while(zf=0);if(qidong=0) star_flag=1;while(qidong=0);if(jiasu=0)speedup();while(jiasu=0);if(jiansu=0)speeddown();while(jiansu=0);if(jiasu100=0)speedup100();while(jiasu100=0);if(jiansu100=0)speeddown100();while(jiansu100=0);if(tingzhi=0)star_flag=0;while(tingzhi=0);if(xsqh=0)xianshi_flag=!xianshi_flag; P3_1=!P3_1;while(xsqh=0); /主程序void main() star_flag=0; flag=1; P3_0=0; xianshi_flag=0; P3_1=1; N=0; Q=0; TMOD=0x11; TH1=(65536-15000)/256; TL1=(65536-15000)%256; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; TR1=1; ET1=1; IT1=1; TR0=0; PX1=1; PT0=1; while(1); /定时器T1中断服务程序void time1_int(void) interrupt 3 TH1=(65536-XN)/256; /装入初值TL1=(65536-XN)%256;key(); /扫描键盘if(star_flag=1)/判断是否启动 if(xianshi_flag=1) /判断是否测速,如果测速,打开定时器T0和外部中断允许 ET0=1; TR0=1; EX1=1; else ET0=0; TR0=0; EX1=0; if(flag=1) /判断正反转 P2=zhengM; /输出正转脉冲 delayuln(); M+; if(M=4)M=0; if(beforechange=1) beforecount+; if(beforecount=100) N-; if(N=0) beforechange=0; afterchange=1; P3_0=!P3_0; if(afterchange=1) aftercount+; if(aftercount=100) N+; if(L=N) afterchange=0; flag=!flag; P3_2=1; else P2=fanM; /输出反转脉冲 delayuln(); M+; if(M=4)M=0; if(beforechange=1) beforecount+; if(beforecount=100) N-; if(N=0) beforechange=0; afterchange=1; P3_0=!P3_0; if(afterchange=1) aftercount+; if(aftercount=100) N+; if(L=N) afterchange=0; flag=!flag; P3_2=1; speednow=speedN; else speednow=0; / speed_huoer=1123;if(xianshi_flag=0) /判断是否测速display(speednow); /如果不测速,显示控制转速else display(cesu); /如果测速,显示测量速度/定时器T0中断服务程序void time0_int(void) interrupt 1 TH0=(65536-20000)/256; TL0=(65536-20000)%256; /50ms*10=500ms T1count+; if(T1count=50)/计时1秒钟 EX1=0; cesu=Q*30; /*60/2 /计算电机转速 if(cesu200) P3_2=0; else P3_2=1; Q=0; T1count=0; EX1=1; /外部脉冲计数程序void int0_int() interrupt 2Q+;致谢本设计的完成是在指导老师毛翠丽的细心指导下进行的。在每次设计遇到问题时老师不辞辛苦的讲解才使得我的设计顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了老师很多的宝贵时间和精力,在此向导师表示衷心地感谢!导师严谨的治学态度,开拓进取的精神和高度的责任心都将使学生受益终生!尤其是在此次毕业设计当中一直为我们答疑解惑的中光集团郭泓源经理,在设计过程当中每当遇到困难的时候郭经理都会在百忙之中抽出时间专程来学校为我们悉心讲解,在此也表示最衷心的感谢!同时也非常感谢学校为我们提供这次锻炼的机会。 最后还要感谢和我同一设计小组的几位同学以及次毕业设计当中所有给予过我帮助的人,是你们在我平时设计中和我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我也不可能这样顺利地结稿,还有在学校教授我知识的所有老师,在此一并表示深深的谢意。
展开阅读全文