基于89C51的电机转速计设计

合集下载

基于STC89C51RC的转速测量系统设计

基于STC89C51RC的转速测量系统设计
12 转速测 量 系统组成 框 图 .
系统 由信号预处理 电路 、 片机 单
8C 系 95、
统 化 L D显示 模 块 、 口数 据 存 储 电 路 等 组 成 . E 串 其
中信号预处理 电路包含信号放大、 波形变换 和波形 整形 . 波形 变换 和波 形 整 形 电路 则 用 来 将 放 大 的信
统 . 8C l 片机 采用 了 C O 95 单 M S工 艺 和 高 密度 非 易失性 存储 器技术 , 而且 其输 入/ 出引脚 和指令 系 输 统都 与 MC 5 兼容 ,I8C l S一 1 S℃ 9 5 的显 著特 点是 具有 IP在 系统 可 编程 ) ( S( / 在应 用 可 编程 )无需 专 用 , 编程器 / 真器 即可通过 串 口(30P .) 接 下载 仿 P ./ 3 1直 用户 程序 ,K程 序 3秒 即可 完成 一 片 , 开发 该 系 8 是 统 的适 合 芯片 .
20 O 7年 l 2月
连云港师范高等专科学校学报
J u a fLa y n a gT a h r C l g o r lo in u g n ec es ol e n e
De e e , 0 7 c mb r 2 0
No. 4
第4 期
文章编号 :09 7o2o ) —08 —0 10 —74 (o 70 04 4 4
1 系统 组成 及工 作原理
1 1 转速 测量 原理 .
式中,为转速信号盘每 转输 出信号数 ; 为信 i j 号盘转 1 圈发动机转 的圈数 ( 信号盘安装在曲轴上 时 j , 在 凸轮 轴上 则 j ) T为单 片机 输 入 捕 =1装 =2 ; 捉所计算出的相邻两个上升沿之间的时间差值 .

基于89C51的步进电机设计

基于89C51的步进电机设计

基于89C51的步进电机设计一、设计背景步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。

单片机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜、卫星天线定位系统等等。

随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。

步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。

1950年后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。

到20世纪60年代后期,在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。

步进电机往后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。

在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。

二、设计方案设计一个51单片机四相步进电机控制系统要求系统具有如下功能:(1)由I/O口产生的时序方波作为电机控制信号;(2)信号经过驱动芯片驱动电机的运转;(3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。

三、设计原理步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。

步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。

从结构上看,步进电机分为双相、三相、四相、五相等类型,本次设计的是四相电机。

四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。

在本次设计中,我们使用的是双相四拍的工作方式。

通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。

运用AT89C51单片机对直流电动机转速的控制设计-大学毕业论文毕业设计学位论文范文模板参考资料

运用AT89C51单片机对直流电动机转速的控制设计-大学毕业论文毕业设计学位论文范文模板参考资料

摘要本次课程设计基于AT89C51单片机为核心,利用天皇教仪三合一实验箱。

应用PWM技术对直流电机的速度进行精确调节,并测量出电动机的转速,通过模数转换系统,使用LCD液晶显示器精确的显示电动机的转速。

本次课程设计的目的是更加熟练掌握单片机的工作原理及实际应用,特别是单片机的编程语言,数模转换系统,PWM调节脉冲及LCD液晶显示器的工作原理。

关键字:51单片机;转速控制;模数转换;LCD液晶显示;目录1前言 (1)2 硬件部分的设计 (2)2.1硬件设计总体思路 (2)2.2单片机控制直流电机部分的硬件设计 (4)3 各硬件部分的连接与接口 (15)3.1 单片机与直流电机接口部分 (15)3.2单片机与LCD显示模块通信接口部分 (17)3.2各部分硬件结合原理及构造 (18)4 软件程序设计 (19)4.1系统软件设计的总体概述 (19)4.2系统各部分软件设计的思路 (22)5 系统的调试与现象分析 (24)6课设总结 (26)参考文献 (27)附录Ⅰ (27)附录Ⅱ (33)1前言近年来,随着科技的飞速发展,单片机的应用正在不断地走向深入。

在仪器仪表、家用电器和专用装备的智能化以及过程控制等方面,单片机都扮演着越来越重要的角色。

将单片机的应用引入实际科技实践必将对微电子控制技术的研究与实践注入强大活力。

本次设计研究的直流电机转速控制及转速的LCD显示实验装置即以单片机作为核心部件,它可完成对直流电机转速、方向的闭环控制,并应用LCD液晶显示装置显示出转速,本文重点论述该实验装置的硬件组成,软件设计以及控制方案的实施。

在早期,电子产品一般是纯硬件电路,没有使用单片机,电路复杂难以设计,也难以检查问题,随着微控制技术的不断完善和发展,集成芯片越来越多,单片机便出来了,换言之,单片机的应用是对传统控制技术的一场革命。

具有划时代的意义。

在电机控制方面也是靠人的感觉,没有侧速和侧距的概念,以前人机界面一般采用LED数码二极管,随着LCD液晶显示器的出现,人机界面更加人性化、智能化,它能显示数字、汉字和图象,控制LCD液晶显示器也很方便,电路设计也比较简单;加上单片机,组合实现的功能也比较强大,还可方便以后电路的升级与扩展。

基于89C51单片机的直流电机控制系统设计

基于89C51单片机的直流电机控制系统设计

目录摘要 (3)关键词: (3)1直流电动机 (3)1.1直流电动机的工作原理 (3)1.1.1直流电动机的运动特性与优点 (4)1.2直流串励电动机 (5)1.2.1串励电动机的特点 (5)1.3直流他励电动机 (5)1.3.1他励电动机的特点 (6)2设计概要 (6)2.1硬件设计概要 (7)2.2程序设计流程图 (7)3硬件设计 (8)3.1.1电机驱动电路 (8)3.1.2单片机及控制电路 (10)3.1.3单片机介绍 (12)3.1.3.3管脚说明 (14)4程序设计 (16)4.1主程序设计 (19)4.1.1定义说明程序 (19)4.1.2执行主程序 (20)4.2子程序设计 (22)4.2.1定义延时程序函数 (22)4.2.2定时器1中断服务程序 (22)4.2.3定时器2中断服务程序 (23)4.3调速原理 (23)4.3.1PWM(脉冲宽度调制)原理 (23)4.3.2PWM(脉冲宽度调制)特点 (24)5调试与仿真 (25)参考文献 (25)附录 (26)摘要通过单片机改变输出脉冲波的宽度井陉调节,以便实现直流电的起动、正反转、加速、减速功能,在这种调速方法下,可以有效的减少其损耗功率。

关键词:单片机;直流电机;调速1直流电动机直流电动机主要由静止的定子和旋转的转子组成。

定子由主磁极、换向极、电刷装置和机座组成。

主磁极铁芯上套有线圈,通入直流励磁电流便会产生磁场,即主磁场。

换向极也由铁芯及套在上面的线圈组成,其作用是产生附加磁场。

以减弱换向片与电刷之间的火花,避免烧蚀。

机座除作电动机的机械支架外,还作为各磁极间磁的通路。

转子由转子铁芯、转子绕组、换向器、轴和风扇组成。

转子铁芯用来安装转子绕组,并作为电动机磁路的一部分。

转子绕组的主要作用是产生感应电动势并通过电流,以产生电磁转矩。

换向器由换向片组成,换向片按一定规律与转子绕组的绕组元件连接。

1.1直流电动机的工作原理直流电动机包括俩个在空间固定的永久磁铁,一个为N极,另一个为S极。

基于AT89C51的电机转速测量仪的设计与实现

基于AT89C51的电机转速测量仪的设计与实现

收稿日期:2009-02-13作者简介:王朕(1979 ),男,山东聊城人,硕士研究生,讲师,主要从事电力电子技术、电路及单片机研究.基于AT89C51的电机转速测量仪的设计与实现王 朕1,刘学锋2,刘陵顺1(1.海军航空工程学院控制工程系,山东烟台 264001; 2.鲁东大学物理与电子工程学院,山东烟台 264001)摘要:采用AT89C51单片机和光电编码器设计开发了用于某型装备电机转速测量的转速测量仪,并给出了测量仪的电路图和部分程序,实验结果表明该测量仪测量具有精度高、抗干扰能力强、体积小、性价比高等优点.关键词:单片机;光电编码器;转速测量中图分类号:TP368.1文献标识码:A 文章编号:1006-0707(2009)05-0019-03在某些工业自动控制领域、某些装备应用上,经常会遇到各种需要测量电机转速的场合.传统的电机转速测量方法是采用直流测速机,其原理是由被测电机拖动测速发电机,再对测速发电机产生的电压进行测量,在将电压换算成转速.采用测速发电机测速主要缺点如下:首先,测速发电机作为被测电机的负载,必然对转速产生影响,在一定情况下影响测量精度;其次,测速发电机电压作为模拟量,无法直接与数字控制系统连接,必须经过A/D 转换,增加系统控制的复杂程度;最后,由于制造工艺的限制,测速发电机的性能很难有大的提高,在某些场合测速发电机甚至影响整个系统的性能[1-2].本文中针对这种情况,设计并实现了以AT 89C51单片机为核心的电机转速测量仪,该测量仪已应用于某型装备,实验结果表明该测量仪不仅满足了装备的测速要求,而且相对于直流测速机更具有测量精度高、体积小、性价比高等优点.常用的转速测量方法有T 法、M 法和M/T 法,综合考虑三种方法的优缺点及测量要求,本文采用M 测速法,即:在一定的采样时间内测出光电编码器的脉冲数,脉冲数除以编码盘的孔数再除以定时时间就是电机的转速,即根据公式(2)换算成转速[3].1 硬件电路设计[4-6]由于该测量仪不需要键盘输入,故硬件电路仅由主电路、转速测量电路、显示电路组成,其电路原理图如图1所示.图1 电路原理第30卷 第5期四川兵工学报2009年5月1.1 主电路主电路采用ATMEL 公司生产的AT 89C51单片机.其中,T0和T1都工作在模式1,T0用作定时器,T1用作计数器,当T 1引脚上出现一个1到0的跳变时,计数器加1,直到T0定时时间到,进入中断程序;然后对T1中的数据进行处理,对T0、T1进行重新装载、设置中断后,中断返回.1.2 转速测量电路转速测量电路由光电编码器及脉冲整形电路组成,如图2所示,其中编码盘加在电机转轴上,随电机同步转动.光电编码器由脉冲编码盘、发光二极管和光敏三极管组成.其中,光电编码器有直射式和反射式两种,图2所示即为直射式.发光二极管发出的光通过编码盘的孔射到光敏三极管上后,三极管导通输出一个低电平;当二极管发出的光被编码盘遮住时,三极管截止输出一个高电平.因此,当编码盘转动时,三极管集电极输出一系列脉冲,脉冲经74HC14整形后输入T1脚,故计数器T 1中的数据除以编码盘的孔数再除以定时时间,即得到了电机的转速.光电编码器的特点是输出精度高、抗干扰能力强、受温度变化影响小,因此使得该测量仪测量精度很高.图2 光电编码器原理1.3 显示电路显示电路使用了4个LED 显示器,由4个CD4511BP 芯片驱动,故满足显示转速的范围0~9999r/min 的要求.七段数码管的驱动由CD4511BP 完成,该芯片是一种集成了显示译码、显示码锁存电路的数码管专用驱动芯片.在其输入脚写入B CD 码,在输出脚上就得到与数码管相对应的十进制数据.显示电路原理图如图3所示,根据CD45111及数码管的电气参数,其电阻阻值选为470 .(图中只给出一个CD4511BP 和一个LED 数码管的连接,其余三个与此相同).图3 LED 显示电路原理2 软件设计[4-5]2.1 程序流程图系统上电复位后,首先对单片机自身进行初始化,包括设置堆栈指针、设置定时器和计数器的工作方式及初始值、中断的开启等,然后进入循环显示、脉冲计数、转速计算、数制转换等子程序.软件流程图如图4(虚线框内为中断处理程序流程).其中,脉冲计数由硬件电路通过计数器T1(P3.5)对输入的脉冲进行计数,经计算在定时器T0定时时间内可以满足测速范围0~9999r/min 的要求;其他各模块的具体程序见2.2部分.图4 程序流程2.2 模块程序程序采用汇编语言编写,采用KEIL51软件和TKS 仿真器进行程序调试.各部分功能的程序如下.2.2.1 脉冲计数程序由硬件电路知,AT89C51的T1引脚外接脉冲输入,因此脉冲计数可使用T1作为计数器来实现计数;采样时间可由T0定义.本文中定义T1为16位计数器,T0为16位定时器,定时0.05s.部分程序及注释如下.MOV TMOD,#41H ;定义定时/计数器工作模式和工作方式;T1--16位外部中断计数器,T0--16位定时器MOV TL0,#0AFH ;设置T0的初始值:定时为0.05s,;公式:X=65535-50000=15535D=3CAFHMOV TH0,#3C H20四川兵工学报MOV TL1,#00H;设置T1的计数初始值0MOV TH1,#00HSE TB TR0;开启T0SE TB TR1;开启T1SE TB ET0;允许T0中断SE TB EA;允许单片机响应中断2.2.2 转速计算程序转速计算的公式为n=60mP(r/min)(1)其中,m存在T1的计数寄存器中, =0.05s,P=32,即转速公式为n=75m2(r/min)(2)根据上述计算公式,先取脉冲数,分别置于寄存器R6、R7中,然后清计数器,再重新装载定时初始值以开始下一轮计数.对已经取得的脉冲数按公式(2)进行计算,先进行乘法后进行除法运算,将得到的转速置于寄存器R3、R4中,部分代码如下.MOV R7,TH1;取脉冲数,R7中存高8位,R6中存低8位MOV R6,TL1MOV TH1,#00H;清计数器计数值,使其开始下一轮的计数MOV TL1,#00HMOV TL0,#0AFH;重新开始定时MOV TH0,#03CHMOV A,R6;m*75D=m*4BHMOV B,#04B HMUL ABMOV R3,A..MOV A,R4RRC A;除法到此做完,转速存在R3、R4组成的16位存储单元中,此时为2进制数.2.2.3 数制转换程序上节中已求出十六进制的转速,需将其转换为十进制数进行编码后再输出显示.该部分程序如下.HB2:CLR AMOV R3,AMOV R4,AMOV R5,AMOV R1,#10H;转换16位,即两字节,需要循环16次,;循环次数存在R1中HB3:MOV A,R7RLC AMOV R3,ADJNZ R1,HB3END2.2.4 显示功能程序由硬件电路,显示驱动芯片连接在P1、P2口上,因此向P1、P2口写数据即可实现数据显示功能.代码如下: DISPLAY:;下面是进行静态显示的代码,寄存器R4中存十进制转速数的千位和百位,R5中存十进制转速数的十位和个位.MOV P1,R4MOV P2,R5SJMP DISPLAY3 结束语本文中采用光电编码器及AT89C51制作的电机转速测量仪已成功用于某型装备,实验结果表明该测速仪不仅测速准确、精度高,而且体积小、性价比高、使用方便,因而具有较高的实用价值和市场前景.参考文献:[1] 刘和平,周小军.一种由单片89C52构成的高精度转速测量仪[C]//重庆市电机工程学会2000年学术会议论文.重庆:重庆市电机工程学会,2000.[2] 赵霞.利用89C52三个定时器实现精密测速[C]//2003年全国单片机及嵌入式系统学术年会论文集(下册).北京:北京航空航天大学出版社,2003. [3] 肖慧.单片机在线测速软件的设计.仪器仪表学报(增刊)[J].2005,26(8):423-424.[4] 张毅刚,彭喜源,谭晓昀.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1997.[5] 徐建军.MC S-51系列单片机应用及接口技术[M].北京:人民邮电出版社,2003.[6] 姚彩虹.基于AT89C52的机车光电转速传感器测控仪设计[J].自动化仪表,2006,27(10):26-27.21王 朕,等:基于AT89C51的电机转速测量仪的设计与实现。

基于89C51的直流电机转速的测量与控制

基于89C51的直流电机转速的测量与控制

目录中文摘要 (1)英文摘要 (2)1 引言 (2)1.1 课题的研究意义 (2)31.2 设计任务 (3)2 系统设计及模块分析 (3)2.1系统平台简介 (3)2.2 PWM模块 (5)2.4 LCD模块 (5)3 系统的软件设计与实现 (8)3.1 系统软件简介 (9)3.2 编程语言简介 (9)3.3 设计流程及分析 (10)4 调试与实验结果 (13)4.1 系统测试结果 (14)4.2 设计心得 (14)结论 (14)谢辞 (14)参考文献 (14)附录 1 系统硬件原理图 (14)基于STC89C51直流电机控制系统的设计与实现摘要:转速是直流电机运行中的一个重要物理量,如何准确、快速而又方便地测量电机转速,极为重要。

本文阐述了基于单片机的直流电动机转速控制系统的特点和优势,介绍了在STC89C51单片机实验开发平台上,对直流电动机进行测速和控制的相关算法及软、硬件实现。

设计中软件设计采用C语言编程,硬件设计采用PWM方式驱动电动机,利用霍尔元器件测量电动机的转速,在液晶显示屏(LCD)上实时显示电机的转速值。

另外还可以通过3×3矩阵键盘输入电动机转速的设定值,在电动机转速的可控范围内控制电动机转速,使电动机的实际转速值等于设定值,并在液晶显示屏(LCD)上同时显示设定值与实际转速值,便于比较。

最后对实验数据进行了分析。

关键词:直流电动机,PWM,液晶显示屏(LCD),转速测量Abstract: Speed is an important physical quantity in the operation of the DC-motor. How to measure the speed of DC-motor exactly, rapidly and conveniently is highly significant. The design expatiates on the advantages of SCM in the DC-motor speed modification system. The algorithm about the measurement and the control of the DC-motor, as well as the software and hardware methods to realize the requirement based on the STC89C51 experiment development platform is introduced. In this design, the PWM manner , while the Hall device is utilized to measure the speed of the motor. The numerical value will have a real-time display on the LCD screen. In addition, the setting value of the speed can be inputted through the 3×3 matrix keyboard. It can control the speed of the DC-motor in its controllable bounds, which makes the actual speed value equal to the setting value. The LCD screen will display the setting value and the actual speed value simultaneously that is convenient for the comparison between the two values. In conclusion, the data got from the experiment have been analyzed.Keywords: DC-motor, PWM, LCD, speed measurement1 引言1.1 课题的研究意义直流电机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动系统中得到了广泛的应用。

基于89c51的测量电动机转速系统

基于89c51的测量电动机转速系统

摘要在测量电动机的转速中,测量转速的方法分为模拟式和数字式两种。

模拟式采用测速发电机为检测元件,得到的信号是模拟量。

数字式通常采用光电编码器,霍尔元件等为检测元件,得到的信号是脉冲信号。

由于微型计算机迅速发展,特别是高性价比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法。

本设计是由增量式光电编码器,89C51单片机,二极管,蜂鸣器以及一些必要的运算放大器组成的电机转速检测系统。

本设计的主要功能是:在电机运行过程中,检测系统对转速进行实时监控,转速如果超过200r/min,则发出报警;如果转速低于200r/min,则正常运行。

本设计的优点是:硬件电路简单,软件编译简单,测量速度快捷,整体价格低廉,电路功耗低等特点。

但由于在硬件系统中的测量误差与计算中不可避免的舍入误差,使得测量系统含有一定的误差。

关键字:光电编码器,单片机,蜂鸣器,T法测速,T0定时器/计数器一、系统方案的选定本设计的设计目的是:设计一个由单片机控制的电机转速检测系统,实时监测电机的转速,达到设定值,声音报警提示。

通过设计,掌握光电编码器的工作原理和控制系统的设计步骤,进一步提高综合运用知识的能力。

设计要求是:选择光电编码器,设计电机转速检测系统,转速超过200r/min,自动报警提示。

所以根据设计目的与功能要求,选择增量式光电编码器,选定光电编码器的INT),或P3.4(T0)引脚把光电编码器输出0~5V的T法测速法;通过P3.2(0方波脉冲序列,引入单片机内;通过单片机内部的TO定时器/计数器的功能,计算出光电编码器每个脉冲的时间间隔Tc;通过公式n=60/Z/Tc=60f/Z·M(Z=倍频系数X编码器光栅数)计算出电动机的实时转速N;通过编好的软件,拿实时转速N与规定转速上限n=200r/min比较,如果实时转速N大于200r/min,系统报警(蜂鸣器发声),红色报警灯亮;如果实时转速N小于200r/min,系统正常工作,不会报警,绿色工作指示灯亮。

基于89C51单片机的电动机转速控制器设计

基于89C51单片机的电动机转速控制器设计

1 引言:在电气时代的今天,电动机一直在现代的生产和生活中扮演着十分重要的作用。

据资料统计,如今有90%的动力源来自于电动机,我国生产的电能大约有60%用于电动机。

电动机与人们的生活密切相关。

步进电机作为机电一体化的关键产品之一,是一种将电脉冲信号转换成直线或角位移的控制电机,广泛应用于工业控制系统中。

其转速和机械角位移分别与输入电机绕组中的脉冲平率和脉冲个数成正比。

通过改变电脉冲频率,可大范围内进行调速【1】。

同时,该电机还能快速起动、制动、反转和自锁。

此外,步进电机易于实现计算机或其它数字元件接口,适用于数字控制系统。

由于具有上述特点,步进电机日益广泛应用于数字控制系统中,如数控机床、绘图机、自动记录仪表和数一模转换等装置。

但步进电机的驱动信号经常还是用一些专用的模拟芯片控制器或者是信号发生器来产生,缺乏灵活性和可靠性。

在一些智能化要求较高的场合,用模拟芯片以及信号发生器来控制步进电机有一定的局限性,可以采用AT89C51 单片机控制步进电机以改善其性能【2】。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在国民经济各个领域都有应用。

2 步进电机的工作原理步进电机本身可以直接接受数字信号,不需要进行数字与模拟量的转换,具有高精度快速启停能力。

如果选用三相六拍,步距1.5°,即进一步,电机转动1.5°,转动一周需要200步【3】。

步进电机直接由数字信号控制,其控制程序可以分为脉冲序列的生成、方向的控制、步进电机变速控制程序3部分。

2.1 步进电机控制的基本原理步进电机的基本控制包括转向控制和速度控制2个方面。

如图2.1.1,从结构上看,步进电机分为三相、四相、五相等类型,常用的则以三相为主。

三相步进电机的工作方式有三相单三拍、三相双三拍和三相六拍3种,下面具体加以阐述。

(1)换相顺序的控制步进电机通电换相这个过程称为脉冲分配。

例如,三相步进电机在单三拍的工作方式下,其各相的通电顺序为A-B-C-A,通电控制脉冲必须按照这一顺序分别控制A、B、C相得通断。

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

单片机系统课程设计成绩评定表设计课题:基于89C51的电机转速计设计学院名称:电气工程学院专业班级:学生姓名:安徽人在河南学号:指导教师:设计地点:31-505设计时间:2018-01-01~2018-01-14单片机系统课程设计课程设计名称:基于89C51的电机转速计设计专业班级:学生姓名:学号:指导教师:课程设计地点:31-505课程设计时间:2018-01-01~2018-01-14单片机系统课程设计任务书目录1 引言 (1)2总体方案设计 (1)3 硬件电路设计 (3)3.1复位电路 (3)3.2振荡电路 (4)3.3驱动电路 (4)3.4键盘电路 (5)3.5显示电路 (6)4 软件设计 (7)4.1 软件总流程图 (7)4.2 中断流程图 (8)5 功能开发调试及硬件仿真 (8)5.1 开发软件介绍 (8)5.2 仿真结果 (9)6 总结 (10)附录A 参考文献 (11)附录B总原理图 (11)附录C部分原程序 (13)1 引言在实际应用中,电动机作为把电能转换为机械能的主要设备,一是要具有较高的能量转换效率;二是应能根据生产工艺的要求调整转速。

电动机的调速性能如何对提高产品质量、提高劳动生产率和节省电能有着直接的决定性影响。

因此,调速技术一直是研究的热点。

本次设计采用了普中科技51单片机开发板,配以AT89C51单片机以及ULN2003D芯片驱动直流电机,并在数码管上显示当前级数。

可以实现按键起动、增减速、停车的功能。

调速方面,通过单片机发送不同占空比的PWM波形,从而改变电机的电枢电压,进而实现对直流电机的调速。

关键词:AT89C51单片机 PWM多级调速数码管显示2总体方案设计硬件方案:以AT89C51单片机为核心的直流电机控制系统控制简图如图2.1直流电机调速方案方框图所示,由单片机输出PWM 信号,并由I/O口输出,经驱动电路输出给电机,从而控制电机得电、断电以及调整电枢电压。

单片机上电后,系统进入准备状态。

当按动启动按钮后,根据预设值电机进入一级转速工作;根据不同需求的按下加减速按钮,调整I/O口的预定值,从而可以控制PWM波形的占空比,进而控制电压的大小。

控制电机的加减速,并在数码管上显示出当前的预设值。

图2.1 直流电机调速方案方框图AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

软件方案:PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。

PWM可以应用在许多方面,比如:电机调速、温度控制、压力控制等等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。

通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。

也正因为如此,PWM又被称为“开关驱动装置”。

单片机由软件来实现PWM 调整:在PWM调速系统中占空比D是一个重要参数在电源电压Ud不变的情况下,电枢端电压的平均值取决于占空比D的大小,改变D的值可以改变电枢端电压的平均值从而达到调速的目的。

改变占空比D的值有三种方法:A、定宽调频法:保持t1不变,只改变t2,这样使周期也随之改变。

B、调宽调频法:保持t2不变,只改变t1,这样使周期也随之改变。

C、定频调宽法:保持周期T(或频率)不变,同时改变t1和t。

前两种方法在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此常采用定频调宽法来改变占空比从而改变直流电动机电枢两端电压。

利用单片机的定时计数器外加软件延时等方式来实现脉宽的自由调整,此种方式可简化硬件电路,操作性强等优点。

本次设计中,采用定时器作为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确。

3 硬件电路设计3.1复位电路复位电路和时钟电路是维持单片机最小系统稳定运行的基本模块和最重要的内部因素之一。

复位电路通常分为两种:上电复位和手动复位,如图3.1,图3.2所示。

图3.1 上电复位电路图3.2 手动复位电路有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,需要经常手动复位。

所以本次设计选用手动复位。

3.2振荡电路振荡电路是单片机系统工作的核心,它提供单片机工作的“动力”,并关系到单片机运行速度的快慢、应用系统稳定性的高低等。

一般可以使用晶体或晶振来搭建,他们的主要区别在于晶体需要外接振荡电路才能够起振,而晶振只需要在相应的引脚上提供电源和地信号既可以发出脉冲信号。

高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能。

但是告诉对系统要求较高,而且功耗大,运行环境苛刻。

考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。

合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。

并联2个30pF陶瓷电容帮助起振。

振荡电路如图3.3所示图3.3 振荡电路3.3驱动电路在实际的直流电机驱动电路应用中,可以使用H桥来驱动直流电机,也可以使用相应的驱动芯片来驱动直流电机。

H桥采用4个功率MOSFET管,两两组成一个桥壁,每个三极管旁边有一个续流二极管,当对角线上两个三极管打开时,电机朝一个方向运转;另一条对角线上的三极管打开时,电机反转。

功率MOSFET管可以将微弱的信号放大成幅值较大的电信号,是单片机系统中最常用的功率驱动器件。

除了使用三极管搭建H桥驱动外,还可以使用达林顿管等驱动芯片来驱动直流电机。

达林顿管又称复合管,原理是将两只三极管适当地连接在一起,组成一只等效的新三极管。

放大倍数是两只三极管放大倍数之积,常常用于驱动较大驱动电流的器件。

常见的达林顿集成芯片有ULN2003和ULN2803。

由于本次设计使用的开发板上自带了ULN2003芯片,所以采用ULN2003驱动芯片驱动直流电机。

驱动电路如图3.4所示。

图3.4 直流电机驱动电路3.4键盘电路起动、停车、加速、减速四个按键分别与单片机的P1.0,P1.1,P1.2,P1.3相连,然后再与地相连。

其电路如图3.5所示。

图3.5 电机起动、停车、加速、减速按键电路3.5显示电路本次设计中,因需要显示调速等级,故使用一位8段数码管用作显示。

数码管是单片机系统常用的一种外围显示器件,可以显示一些简单的数字或字符。

显示电路如图3.6所示图3.6 一位八段数码管显示电路4 软件设计4.1 软件总流程图通电开机后,CPU得电,根据软件定义引脚功能,定时器工作方式等。

并进入键盘扫描子程序。

当检测到键盘动作时,经过延时子程序去抖,确定按键按下后,申请中断。

单片机读取键值,并根据软件调节PWM波形,向外输出;同时根据按键次数计算端码,向数码管发送。

起动默认3级,数码管显示3.如图4.1所示图4.1 软件总流程图4.2 中断流程图中断由键盘申请,当确定键盘有键按下后,根据扫描出的键值进行计算:若是加速按键则在原来基础上加上按键按动的次数,若是减速按键则减去。

计算出此时的等级,根据软件预设调整PWM波形,并向数码管输送新的段码。

如图4.2所示。

图4.2 中断流程图5 功能开发调试及硬件仿真5.1 开发软件介绍程序开发软件:KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

本次设计使用的版本是Keil uVision4。

硬件仿真软件:Proteus软件是一种低投资的电子设计自动化软件,多达30多个元件库。

Proteus软件提供多种现实存在的虚拟仪器仪表。

此外,Proteus 还提供图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来。

这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗,尽可能减少仪器对测量结果的影响,Proteus软件提供丰富的测试信号用于电路的测试。

Proteus在编译方面支持Keil编译器。

当电路设计完成之后,为了减少在电路板上调试时的难度,保证电路设计的正确性,将Keil c51编译生成的*.HEX 文件载入Proteus软件,实现电路仿真。

5.2 仿真结果初始状态,直流电机半速运转。

如图5.1所示图5.1 初始状态下直流电机运行状态按下停止键,直流电机运行状态如图5.2所示图5.2 电机停转按下加速键,直流电机运行状态如图5.3所示图5.3 直流电机加速按下减速按键,直流电机运行状态如图5.4所示图5.4 直流电机减速6 总结这次课程设计让我收获颇多,查资料,同学交流,到最后写论文,每个过程都是对自己的能力的一次提高。

通过这次设计,增长了自己的实践能力,分析问题的能力也提高不少。

这一次的课程设计,还让我学会了独立思考,独立解决问题。

让我也真正领悟到了“细节决定成败”的道理。

在设计过程中,还锻炼了我冷静思考问题的能力。

在我看来,这不仅仅是一次课程设计,更像是人生中的一堂课,让我学会了很多东西,学会了很多人生道理。

附录A 参考文献[1]张毅刚彭喜元彭宇单片机原理及应用(第2版)高等教育出版社[2] 程国刚陈跃琴崔荔蒙51单片机典型模块开发查询手册电子工业出版社[3] 程国刚杨后川 PROTEUS原理图设计与电路仿真电子工业出版社[4] 康华光电子技术基础模拟部分高等教育出版社[5] 夏路易石宗义电路原理图与电路板设计教程Protel 99SE 北京希望电子出版社附录B总原理图本次设计总原理图如图附录B.1所示附录C部分原程序#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar led_code[10] ={0xa0, 0xf9, 0xc4, 0xd0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};//段码 0,1,2,3,4,5, 6, 7, 8, 9uchar led_bit[4] ={1, 2, 4, 8}; //位码uchar led_buf[4]; //显示缓存uchar key_buf[4];int num =50; //显示数据int n = 0; // 当前显示位int i = 4; //位消隐参数int m = 0; //按键次数uchar key_code;sbit MOTOR0=P3^0;sbit MOTOR1=P3^1;int MOTORPORT0=0;uint MOTORPORT1;int MOTORDIR=0;int MOTORSTOP=0;int counter=0;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;sbit p13=P1^3;/**************************************************************** *名称:delayms*说明:延时子程序*功能:产生一定时间的延时*输入:ms 延时时间1ms的倍数****************************************************************/ void delayms(uint ms){uint a, b;for (a = 0; a < ms; a++);{for (b = 0; b < 125; b++);//1ms}}/*************************************************************名称:numToBuf*说明:数据转换*********************************************************/void numToBuf(void){led_buf[0] = led_code[num % 10]; //个位led_buf[1] = led_code[num / 10 % 10]; //十位led_buf[2] = led_code[num / 100 % 10]; //百位led_buf[3] = led_code[num / 1000]; //千位}/****************************************************************名称:keyToNum*说明:数据转换*功能:把键盘缓存转换为数据*输入:无*返回值:无****************************************************************/ void keyToNum(void){num = key_buf[0] + key_buf[1] *10+key_buf[2] *100+key_buf[3] *1000; }/*****************************************************************名称:int_0*说明:定时器0中断服务程序*功能:数码管动态扫描程序*输入:无*返回值:无**************************************************************/void int_0(void)interrupt 1{TH0 = 0xD8;TL0 = 0xf0; //定时器0赋初值/*消隐位*/if (num >= 1000){//数据在于等于10000i = 4; //显示4位}else if (num < 1000 && num >= 100){// 数所小于1000大于100i = 3; //显示3位}else if (num < 100 && num >= 10){//数据小于100大于10i = 2; //显示两位}else if (num < 10){//数据小10i = 1; //显示1位}/*显示输出*/numToBuf();P2 =~ led_bit[n]; //调用位码P0 = ~led_buf[n]; //调用段码n++; //移位n = n % i;}/**************************************************************** *名称:int_1*说明:定时器1中断服务程序*功能:键盘扫描****************************************************************/ void int_1(void)interrupt 3{TH1 = 0xfe;TL1 = 0x0c; //定时器0赋初值if(counter<=num){MOTORPORT1=1;}else if(counter<=100 && counter>num){MOTORPORT1=0;}counter++;counter=counter%100;}/***************************************************************** *名称:Key_Scan*说明:*功能:键盘扫描*返回值:按键对应值(0~15);无键按下返回0x7f*****************************************************************/ unsigned char Key_Scan(void) //{unsigned char i, n;unsigned char key_temp;P1 = 0xf0;if ((P1 &0xf0) != 0xf0){if ((P1 &0xf0) != 0xf0){delayms(100);for (i = 0; i < 4; i++){P1 = ~(1 << i);n = P1;n &= 0xf0;if (n != 0xf0){switch (n){case (0xe0): key_temp = i * 4;break;case (0xd0): key_temp = 1+i * 4;break;case (0xb0): key_temp = 2+i * 4;break;case (0x70): key_temp = 3+i * 4;break;default:key_temp = 0x7f;}return key_temp;}}}}return 0x7f; //如果未按任何键}/***************************************************************** *名称:key_dectde*说明:*功能:按键释放检测*****************************************************************/unsigned char key_dectde(void){unsigned char temp1, temp2;temp1 = Key_Scan();if (temp1 == 0x7f)return 0x7f;do{temp2 = Key_Scan();}while (temp1 == temp2);return temp1;}/*主程序*/void main(){TMOD = 0x11;TH0 = 0xD8; //定时器T0为方式1TL0 = 0xf0; //定时器0的时间常数(10ms,12MHZ) TR0 = 1; //启动定时器0TH1 = 0xff; //定时器T0为方式1TL1 = 0x9c;//启动定时器0TR1=1;IE = 0x8a; //允许定时器0/1中断/* 键盘程序*/while (1)//循环{if(p10==0){delayms(100);if(p10==0)num+=5;}if(p11==0){delayms(100);if(p11==0)num-=5;}if(p12==0){delayms(100);if(p12==0)MOTORDIR=!MOTORDIR;}if(p13==0){delayms(100);if(p13==0)num=0;}if(MOTORDIR==0){ MOTOR0=MOTORPORT0; MOTOR1=MOTORPORT1;}else if(MOTORDIR==1){ MOTOR0=MOTORPORT1; MOTOR1=MOTORPORT0;}}}。

相关文档
最新文档