单片机实现伺服电机转速控制详解
摘要
伺服电机作为一种市面上常见的机电器件,与其他同类型的电机进行控制相比,伺服电机的精度会更加准,因
此我们会在很多的场合中都会应用使用到伺服电机。伴随现代社会工业和科技的发展和进步,伺服电机在工业与生
活中的作用占比也同样越来越重要。伺服电机可精准的控制它的速度,与它的位置,可以把电压信号转变成为转速
以驱动控制对象。并且响应时间快,机电时间常数小、线性度高伺服电机是现代工业发展中不可或缺的一个环节。
该控制系统的核心部件是由单片机和伺服电动机构成,其控制过程简单、精度高、经济性好、人机交互能力
好。本论文以单片机为核心,以伺服电机的速度控制为基础,使其具有完整的功能,使其结构尽可能地简化,操作
简便,并具有较高的可靠性。通过本系统的设计,实现了多项技术的集成融入。
本文首先综述了伺服电动机的概况、国内外发展现阶段状态、工作原理,简要介绍了AT89C51单片机及其他元件
的工作原理及选用,并以AT89C51为核心进行了系统的管理与控制。对整个系统进行了整体的设计,用单片机实现伺
服电机的速度控制、正转反转控制、转矩和位置控制,最后,对电路仿真、功能程序编写、调试等方面进行了详细
介绍。
关键词:伺服电机,单片机,控制系统
1 绪论
1.1课题背景和意义
在国内外,对伺服电机技术的研究都占有很大的比例。从20世纪中期起世界上第一台伺服电机的问世,随着人
们的生产、生活、工作、生活的方方面面,越来越多地依赖于伺服电机。作为一种常用的机电元件——伺服电机,
其基本原理之一是自动装置中的执行元件,其最大特点是具有可控性,只要有控制信号,伺服电机就旋转,而速度
与控制电压成正比例[1]。一旦消除了控制信号电压,伺服电机就会立即停止运转。与其他各类的电动机相比,采用
伺服电机具有转速高、带载能力大,接编码器闭环控制、高精度等特点,伺服电机中先进的高性能的电伺服系统大
多采用永磁同步型的交流伺服电动机,其优点也是很大的,当今全球科技工业大力发展的世界格局下,伺服电机的
特点使得其最具有发展前景。
无刷直流伺服电机作为一种自动执行控制元件,其实现的控制方式主要是用数字信号技术进行控制的,伺服电
机就是一种可以根据输入的指令来完成运动的自由控制,从而达到精准的位置和速度输出的自控系统。无刷直流伺
服电机包括定子线圈、转子铁芯、电机转轴、伺服电机绕组换向器、伺服电机绕组、电机测速绕组、测速电机换向
器,所述的转子铁芯用的是矽钢冲片堆叠固定在电机转轴上构成[2]。
由单片机控制的伺服电机主要有以下几个特点:
1.用单片机设定好的信号可轻易控制伺服电机正反转启动停止。
2.成本更低更加稳定。
3.抵抗被控对象变化能力强。
在这个时代,我们国家的机电类得到了更多的发展,伺服电机的应用是一种很常见的趋势。其身影已经在生活
中随处可应用,比如车间机械中的使用、机床和航天伺服的应用等等,要求精度操控和强大过载能力的地方,都会
采用伺服电机。
随着工业和科学技术的飞速发展,对伺服电动机的需求与日俱增,它的应用范围也越来越广,它的控制方式从
大规模的集成控制变成了小型的、轻型的、可模块化的单片机来操控。解决了许多过去困扰人们的问题,例如:成
本的控制、安装的繁琐、使用复杂、调试频繁、所需元件数目巨大、品种多样等。用单片机实现伺服电机的控制可
以使伺服电机功能展现的更加出色。
在现在的发展中,伺服电机的发展有四个方向:
1.小型化发展方向;
体积和重量越来越小这会是一个必然呈现的趋势,适应机械设备的安装和使用,体积和重量不断变小,安装和
使用都会非常便捷。
2.精度与性能更加高;
使用的编码器精度会更高,精度以及数据位数所采样同样更高。
3.通用化方向;
新型的伺服驱动,能适应各种环境条件,并能驱动各类电机。
4.智能化的发展方向;
在如今的伺服驱动中大多数都具有参数的记录、分析问题和故障自诊断功能,未来的伺服随着科技的进步和研
发,智能化的趋势会更加明显。
采用单片机来对伺服电动机进行编程,以达到自动控制及精确控制操作,解决了伺服电动机工作时出现失步等
精度问题、使用其他控制伺服电机价格昂贵的问题;分配器被采用软件设置取代了,设定好单片机的参数,相同的电
路来对伺服电机进行控制和驱动,使电动机接口电路的通用性和柔性得到了明显的提高。这样可以让单片机和外部
电路有规则的关联,使得用户和系统的交互能力得到极大的提高。
通用单片机对伺服电动机进行控制,使其具有软硬件相结合的特点。有着结构上简单方便,系统精度更高,设
计制造成本低廉,方便快捷,节省能源等。采用单片机实现对伺服电机的控制,是今后伺服电机发展的主要方向。
1.2国内外研究现状
伺服电机国内品牌有:埃斯顿,汇川科技,英威腾,信捷,台达伺服等。
国外品牌有:三菱,西蒙兹,松下,安川等。
国内品牌以台达的AB伺服系列为例,输入电源可以达到单项为200V(小于2KW),点对点八点的单轴操控,有用
自动定位八组定时器定位,定位整定实践能做到1ms。国产的伺服电机转子来料质量是可保障的。台达一般应用于机
床加工,汽车生产线上等。
国外品牌以安川品牌为例,它的各系列从充磁质量、定子加工圆度、绕线匀整度、铁芯垛叠垂直度等,加工工
艺水平限制,导致电磁设计上,各式各样,一致性比较差。不过,比较好的也可以控制在1%左右,特制的可以控制
在1%以内。可以满足一些要求较高的机床应用。电机行业,安川还是稳居前列。
从转矩波动上看:日系和国产优于欧美。由于机床应用,对这个指标要求较高,一般,曲面加工的颗粒度指标决
定于此,特别是机床应用的刀轴,而正常加工,进刀过程中刀轴伺服负载一般为10%左右。另一方面,如果以转矩波
动值除以当前伺服输出转矩,画一条曲线,此值在10%额定负载附近取到峰值。所以,最好以10%额定负载条件,比
较转矩波动值;而不是额定负载。基座号为160的,这个指标做的最好。因为制造工艺水平和来料质量,在这个尺寸
下控制的最好。
安川品牌的伺服电机齿槽转矩一直控制的很好,sigma5比较好的机型能控制在0.5%左右。这与其采用闭口槽结
构关系很大,但国内伺服电机的闭口槽结构,在这做的不是很好。格力凯邦的电机,采用了闭口槽。山羊的伺服电
机,采用斜极斜槽结构,转矩波动控制得也很好,和安川差不多,甚至有些机型优于安川而欧系的,像倍福、西门
子等,转矩波动水平做的相对差。
图 1各品牌性能指标
总之,在伺服电机领域,从20世纪到现在从日系伺服和欧美系的两大系巨头之后,国产伺服不断在崛起不断研
发。随着中国制造2025,自动化控制技术、工业信息技术的应用也越来越普遍,工业智能互联网大潮的到来,国产
伺服也迎来了黄金发展时期,相信我国在未来伺服领域上会达到世界顶端。
1.3本设计的主要内容
伺服电机是指伺服系统中控制机械元件进行运转的发动机。我国的伺服电机使用率逐年升高,国内伺服机在各
个领域都会占有,尤其是在工业这个领域中使用的频率占的最高,它是一种间接的变速装置,它能够将速度和位置
精确到极致。电压信号可以转换成用于驱动被控物体的转矩和旋转速度。
本控制系统硬件设计是以AT89C51单片机为控制中心,以伺服电机为主要受控器件,其主要功能如下:
1.实现伺服电机的正反转控制;
2.伺服电机速度控制的实现;
3.对伺服电机的位置控制;
伺服电机是指在伺服系统中使机械元器件做功和转动受控于发动机的电机。它是一种间接的变速设备,它可以
让速度,位置精度非常的准。通过将所述的电压值转换成所需的力矩和速度来进行驱动[3],从而能够精确地控制所
述的伺服电机。本课题设计在于实现的具有模块化,这使得整个系统的体系结构和操作变得更加容易简单控制。
2 总体系统设计方案
2.1伺服电机的特点和性能
作为执行器的伺服电机,它也是一种电机方面的电气元器件,它的转速和转矩均由模拟量控制,而位置控制则
用脉冲方式进行控制。由于具有小的机械时间常数、线性程度偏高、启动电压小等特征,将所接受的电信号转化为
伺服电机轴线上的角度位移或角速度的输出。然而控制伺服电机转动速度则对外界需要给予伺服电机发送脉冲的频
率来控制速度,脉冲频率越高,速度越快;速度模拟量中,输入的电压越大,转动速度越快。所以对伺服电机控制
是有要求的,由于种类众多可如下分类。
伺服电机大体上可以分为如下:交流伺服电机、直流伺服电机。
直流伺服电机分为有刷电机和无刷电机。
有刷电机的优势:成本较低廉,具有结构简易、起动扭矩大、转速调整灵活等特点。在操作上比较简单。不
利:维修不便、电磁干扰、对使用环境有严格的规定。
无刷电机优点:体积小、质量轻、输出功率大、响应快、转速高、惯性小、旋转平稳、力矩平稳、直流无刷电
动机可以看作是一种直流电动机,它采用了一种电子式换相装置来代替机械的相位变换。永磁直流无刷电动机的主
体,转子位置传感器,电子换向电路组成。
交流伺服电动机也为无刷电动机,可分为同步电动机和异步电动机两种。
在当下,运动控制方面的领域,同步电机已经被广泛的使用,其功率范围较大,能达到较高的输出功率。惯性
较大,旋转速率较小,随着动力增大,旋转速率迅速降低。因此,它适用于低速时的平滑运行。
与其他的交流伺服电动机相比,无刷直流伺服电动机有一定的不同之处,因为交流伺服的控制是用的是正弦
波,因此扭矩的变化比较小。而直流电则是一种阶梯波。但是,从理论上讲,无刷直流的构造更容易一些,更经
济。
永磁无刷直流伺服电机特点——体积小、重量轻,响应快,速度高,惯量小,转动平滑,起动力矩大,调速泛
围大,低速运行平稳,力矩波动小[4]。
它的优点输出功率高,共振和无振动操作,效率高,轻载时可以接近90%,高扭矩惯性比,能迅速加速负载。电机保
持冷却,电流消耗与负载成比例。高速运行时噪音较小。容易实现智能化、电磁辐射小、使用寿命也较长。
其不足之处在于与异步电动机比,其结构复杂、维修不便,且需采用直流供电。由于电机结构的复杂性,使得
电机的体积和质量都受到了一定的限制,特别是电刷与换向器之间的滑动接触会产生机械摩擦和火花,增加了电机
维修和维修工作量。故本设计选择永磁直流无刷伺服电机。
2.2主控芯片选择
控制伺服电机的方式有很多,通过单片机可以控制伺服电机,同样也可以通过PLC来控制伺服电机,以下两种方
案来筛选一个用作伺服电机的控制系统。
2.2.1基于单片机的伺服电机自动控制系统
基于单片机的伺服电机自动控制系统如图2.1所示。用单片机作为一个主控芯片来进行控制整个系统,软件代替了分
配器并与伺服电机等相关的硬件结合进行系统控制。
采用单片机对伺服电机进行控制,可以使繁琐、复杂的自动控制流程变得简单、灵活,从而达到更高的精度要
求,从而避免了由于外部因素的干扰而产生的误差。利用单片机作为微处理器控制伺服电机,使系统的占地面积大
为减少,通过根据单片机的编程设定来对伺服电机的控制,同时还能结合按键电路、 LCD显示电路等其它的外部电
路,使整个系统的可操作性和多样性得到提高。
图 2.1基于单片机的伺服电机控制系统
2.2.2基于PLC的伺服电机自动控制系统
基于PLC的伺服电机自动控制系统组成结构如2.2所示,PLC通过程序来生成方波驱动的信号,并利用方波的脉冲来实现对直流伺服电机的操控。
最常用的方法是对发送的脉冲进行控制,采用PLC的晶体管输出。而中高端PLC,通过通讯方式向伺服驱动器发
送脉冲数目和频率,伺服驱动器与伺服电机是配合使用的。
图 2.2基于PLC的伺服电机控制系统
用PLC 所做的要求太高情况下使用,单片机下更加便捷方便,在上述两种控制方法中,本设计采用单片机控制
是最适合本方案的。
一台单片机与一台驱动器共同控制一台伺服伺服,操作简便,操作简便。单片机输出脉冲的大小取决于单片机
的输入脉冲量,进而控制了伺服电机的驱动,使它经过功率信号对伺服电机的控制做出实现。
2.3单片机选择
单片机是(SCM)一种单片微型控制器(也称作单片微机),单片机并不是用来实现某种逻辑功能的芯片,他是
将一个计算机系统集成在一个芯片中,可堪比一个台小型电脑,单片机系统实际上就是一个微型计算机控制系统,
控制器(Controller)、运算器(Calculator)、存储器一应俱全,虽然没有计算机的外围设施。但单片机有着计
算机通常情况下没有的特点:体积相对小、重量比较轻、价格相对便宜等特点。
单片机分类:
1)总线型/非总线型
2)通用/专用型
3)工控型/家用型
单片机的硬件特性如下:
1、单片机集成度相对更高。单片机包括CPU、ROM与RAM、2个16位的定时/计数器、4个8位并行端、全双工串行端。
2、具有构造简单、简便操作、模块化等优点。
3、处理功能强,速度快。
4、控制功能强大。
5、电压不需要太高。
6、可靠性高,可工作时间可较长。
7、适应能力强。
AT89C51的特点具有这些:4k字节的Flash闪速存储器,256字节片内数据存储器(00H-7FH是一个内部的RAM,而
80H-FFH为特殊功能寄存器SFR),一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路,32个I
/O口线及两个16位定时/计数器。
AT89C51可降至零赫兹的静态逻辑操作,有两款软件均适配了省电模式。空闲的方式停止中央处理器的工作,但
允许随机存储器,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但是振荡器会停止
工作[5],并且在下一硬件重新设置之前,不允许其他的组件工作。
2.4显示电路选择
在显示电路方面上,采用LCD1602显示器作为液晶模块,它属于点阵类,能展示出英文字母,字符号等数据的显
示。显示器LCD1602是一系列点阵符号组成,每个点阵符号都有一排字符,为了彼此之间有一定的间隔和空隙。每一
个字符位和每一个行中间都必须是有一定规律距离间隔的,因为这个因素,使得LCD1602不能非常完美的展示图片形
状和符号。LCD1602屏幕显示的每一行都有着液晶模块,每一块液晶都有着十六个字符号,用来显示数字和符号等。
LCD1602A特点:
1)显示质量好
2)数字模式接口
3)体积小、重量轻便
4)功耗相对低
基于以上特点,在多方面与其它显示模块相比,最终选择了LCD1602A显示屏。
2.5按键电路
独立按键的内部构造及线路更易于理解,并且与各自的输入线路相互连接,电路的设计结构配置灵活,易于编
程,非常方便,但美中不足在于浪费了I/O口,但是在这一设计中,需要的按键数目比较少。为便于操作,简化,本
设计采用独立的按键。
2.6系统总体设计框图
图 2.3系统总体框图
电路的设计:电源电路、按键操控电路、LCD1602显示电路、L298驱动控制电路、设计伺服电机的转速以及正反
转的运行控制;
方案:以AT89C51为核心,以独立的按键电路为辅助,以LCD1602A为显示单元等,构成一套完整的系统。采用独
立驱动的按键控制回路实现对单片机的直接控制,进而给L298驱动信号驱动永磁式直流无刷伺服电机,实现前后两
个方向的自动转动及伺服电机的速度控制。
1)单独的按键能够控制全部的工作线路,其工作功能是:启动、停止、转向、加速、减速;
2)LCD显示运行状态,运行方向、电机转动速度,占空比;
3 系统硬件电路设计
3.1 AT89C51单片机简介
单片机AT89C51的引脚如图3.1所示。

图 3.1 AT89C51单片机引脚图
它的主要端口引脚功能,如表3.1所示。
表 3.1 AT89C51单片机主要引脚功能表
端口引脚 功能
VCC 电源端(电源电压)
GND 接地端
XTAL1 振荡器反向放大器及内部时钟发生器的输入端(外部晶振的输入端)
XTAL2 外部振荡器逆向信号放大器的输出终端(外部晶振器的输出终端)
PSEN 外部程序存储器的读选通信号
ALE 地址锁存允许
EA 外部访问允许端
RST 复位输入端
P0(P0.0~P0.7):P0端是有着一组8位漏极开路型双向的输入输出端口,即地址/数据总线多路传输端口。当
它是输出端使用时,每位能以接受电流的方式来驱动8个_TTL逻辑门电路,对端口写“1”用作为高阻抗的输入端用
[6]。当外部数据存储器和程序存储器时被访问时,这组口线分时转变换地址(低8位)和数据总线复用[7],在访问
期间激活内部上拉电阻。
P1(P1.0~P1.7):P1是一个8位双方向输I/O口,带有内置上拉电阻。P1的输出缓冲区可用来驱动4个_TTL逻辑
门电路比P0少四个。对端口写“1”,通过内置上拉电阻器使之处于高电平,此时可作输入口[8]。当P1为输入口使
用时候,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)[9]。
P2(P2.0~P2.7):功能与文章上述介绍的P1口功能相当,P2有着个带有内置上拉电阻的8位双方向I/O口,P2的输
出缓冲级也与P1一样。但是,区别在于P2也能在用户进行程序的调试和校验时,获得高位的地址。
P3(P3.0~P3.7):P3的端口功能除了具备上述的P1以及P2端口相似的功能之外。P3口更为看重的用途是它的另外一
大功能,如表3.1所示:
表 3.1 P3端口第二功能
端口引脚 第二功能
P3.0 RXD(串行输入口)
P3.1 TXD(串型输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(定时/计数器0)
P3.5 T1(定时/计数器1)
P3.6 (外部数据存储器写选通)
P3.7 (外部数据存储器读选通)
3.2时钟电路与复位电路
如图3.2所示时钟电路和复位电路

图 3.2时钟电路与复位电路
时钟电路:此方案采用1个晶振和2个30_pF电容构成的时钟电路,晶振的两边分别与单片机的_XTAL1引脚和
_XTAL2引脚相连接[10]。AT89C51能把一个振荡器发出的信号按时间次序转换,利用生成的时间序列对微处理器进行
编程的控制。利用时钟信号调改触发器状态,协助单片机C51完成工作。由于本设计中只需要一台单片机,故本设计
中使用的是内部时钟振荡模式。
复位电路:复位处理电路的主要工作作用就是能从整个单片的主机中它会自动提取出来的数据在自动执行之
后,自主地刷新输入的初始数据,作为预设的初始数据复位到整个单片机中。一般的单片机重置复位回路方式可以
分为以下:其中一个属于高电平复位、另外一个属于低电平复位。一般地复位控制电路主要包含:按键式复位控制
电路和常见的进电式复位控制电路。进电自动复位控制电路只适用在一台单片机给电后的自行复位,无法再运作中
强制复位,而按键复位回路,随时可以进行重置操作动作。
综合来看选择最好的,此次设计中主要使用的是对高电平键的复位进行自动重置的控制,要求在按复位键时按
一个比低电平高的触控键,复位端被按键拉至一个新的高电平,用单片机操作即可成功实现按键复位。
3.3伺服电机控制电路的设计
如图3.3示,在单片机中的伺服电机需要通过驱动芯片的连接,采用L298N作为驱动芯片它才能正常的运作,它
有4个输入端IN1IN4,四个输出端OUT1OUT4以及两个使能端。L298N驱动芯片的引脚IN1,IN2依次链接P3.6和P.7。
ENA,ENB(是使能端,输入PWM信号)接VCC和VS相连接电。当使能端为高电平时,输入端IN1为PWM信号,IN2为低电
平信号时,电机正向转动;输入端IN1为低电平信号,IN2为PWM信号时,电机反向转动。当使能端为低电平时,电动
机停止转动[11]。SENSA,SENSB(H桥电流反馈脚)在这里不用,直接与GND连接接地。OUT1,OUT2引脚为输出,与
伺服电机的两端相连,输出驱动控制正转和反转。通过P3.2引脚口连接伺服电机来控制它的转速加速减速。
图 3.3伺服电机及L298驱动芯片
3.4按键电路的设计
如图3.4所示,单片机C51上的P1.0~P1.4五个引脚分别给自连接五个按键,按键的功能按从首到尾的顺序分别为:启
动、停止、换向、加速、减速。
控制电机的正反向旋转(换向)按键:当手动按下一次,伺服电机就会由正方向(R)旋转变成逆方向(L)旋
转;再一次手动按下时,伺服电机又恢复为正转(R)。同时在LCD1602A屏幕上会显示正反转(正转R,反转L)。
控制加速按键:每当按下一次,速度就会加快一次。
控制减速按键:与加速按键一样,只要按一下,速度同时会下降一次。
控制启动按键:启动按键手动按下一次系统就会开始运行,再此同时伺服电机开始转动。同时LCD1602A显示器
显示RUN。
控制停止按键:同启动键一个原理,按键手动按下一次,系统就会停止,同时伺服电机停止转动。同时LCD1602A显
示STOP。
3.5显示电路的设计
如图3.5所示,RS为寄存器选择,RW为读写信号,E为使能端。在此设计中,AT89C51的P0端口针脚与LCD1602的
接口连接,LCD1602屏的D0到D7口脚针需要一一对应连接到AT89C51单片机的I/O端的P0.0~P0.7引脚上,单片机的P0.
0~P0.7引脚作为一组通用的电路输入输出I/O口需要与上拉排阻相连,排阻的脚针1与高电平对应连接好,LCD1602显
示屏的引脚VSS接地,VDD接到高电平。VEE接到偏压电阻上,RW接与VSS共接到偏压电阻另一端上接地,单片机的引
脚P2.0、P2.1两个引脚分别连接LCD1602屏上的RS和E脚针,并控制它们的高低电平,这样就能进行控制LCD1602A屏
幕显示的进行读和写的指令,以及读取和写入数据等操控。
3.6转矩对速度影响
转速对转矩的关系n=f(T)
图 3.6关系图
调节电枢电压:
,这是一种动态响应快、适用于需要 这种控制方式可以通过改变电枢电压,从而使直流永磁电机转速发生变化
大范围的无级变速系统的恒转矩控制[12]。
转矩越大转速越低,转矩越小,转速越高,只要明白这个道理同样能控制转速。
3.7对伺服电机的位置控制
一般情况下,位置控制是利用外部输入的脉冲频率来决定旋转速度的幅度。通过脉冲的个数来确定转动的角
度,也有些伺服可以通过通讯方式直接对脉冲个数来确定转动的角度,也有些伺服用过通讯方式直接对速度和位置
进行赋值[13]。可以这么来理解为伺服电机接到一个脉冲,就可以转动一个脉冲所对照的角度来实现位移。让伺服
驱动工作在位置模式CP脉冲或者DIR方向接口,单片机只要能用定时器产生一定脉冲就可以了,硬件上用光耦,集电
机开路输出给伺服驱动器。
4 系统软件
4.1Keil简介
Keil软件在美国的keil-software公司诞生,是程序员们自主设计研发的一款在单片机应用领域的控制编程技术
开放的开发平台,同样Keil软件在国内给专业从事单片微型控制技术开发提供了很大的方便,也是单片机业余爱好
者的首选软件。属于一种单片式电机设计原理的语言,即使它用的是汇编语言,但人们常常认为,这种汇编语言通常都是以应用性为基础的结构式系统设计的应用语言,可移植性弱,代码组合复杂,最重要的是容易被使用者们所
理解。当我们进行大规模的应用程序开发时,我们更需要这样的特性来输出高级的编程语言。
Keil 5于2013年发布推广使用,Keil5 中增添了一套操作性比上一代更高模块窗口化系统,更加好用。开发者
能够于不同的环境场合下更加流畅地使用多监控。Keil5的使用者界面可以更流畅的使用显示空间和多个窗口进行编
辑,使得更高效。还有修复了历代漏洞、新的特性一并添加到这一代版本中。keil4和keil5的区别如下:keil4是将
所有的库文件都放在了一个安装文件中,keil5只是安装了一个简单的软件,没有任何关于设备的文档,只需要安装
相应的文件包就可以了。
所以本设计选用Keil5进行程序编写。
4.2单片机实现伺服电机控制主程序
主程序包含:LCD1602初始化过程程序、按键程序、电机旋转方向显示程序、电机速度显示程序、运行状态显示
程序和占空比显示。
图 4.1主程序流程图
系统开始运行后,屏幕显示初始化,按键之后系统开始运作受控制,在此同时LCD显示屏上同时会实时显示伺服
电机转动的先转方向、转速显示、占空比及伺服电机运行状态。
4.3控制伺服电机程序
4.3.1转动方向控制
启动按键K1按下,按下启动后,LCD显示开始工作,同时伺服电机开始转动。按下K3,电机反转;再次手动按下
K3,恢复电机正转,LCD显示屏有R和L显示。
图 4.2转动方向控制流程图
1方向部分:
uchar fang=0;//方向
if(!k3)//换向
{
delay(1000);
if(!k3)
{
fang=!fang;
}
while(!k3);
}
2.屏幕显示部分:
if(fang)//方向显示
xian2[0]=‘L’;
else
xian2[0]=‘R’
4.3.2伺服电机速度控制
启动键K1按下后,显示器开始显示,首次按下K4,电机加速,再次按下K4,电机由刚才的转速再继续提高速度;按
下K5,电机减速一次。LCD显示屏实时显示伺服电机速度和占空比。

图 4.4伺服电机速度控制流程图
uint speed=0;//速度
if(!k4)//加速
{
delay(1000);
if(!k4)
{
if(pwm<99)
pwm++;
}
while(!k4);
}
if(!k5)//减速
{
delay(1000);
if(!k5)
{
if(pwm>0)
pwm--;
}
while(!k5);
屏幕显示速度:
EX0=0;//速度计算
xian1[5]=speed/1000+0x30;
xian1[6]=speed%1000/100+0x30;
xian1[7]=speed%100/10+0x30;
xian1[8]=speed%10+0x30;
write_string(1,6,xian1);
speed=0;
EX0=1;
5 系统仿真、制作与调试
5.1系统电路仿真
本部分主要由电路图绘制,程序编程,调试构成
5.1.1Proteus绘图
由于Proteus软件不仅能够进行元件绘制,而且还具有许多其它的功能[14],如电路模拟和其它一些工具,能够与51系列单片机联合工作,与本设计所选择的单片机基本符合。因此,选择了Proteus8代软件来绘制电路图。
1.首先用proteus8新建一个工程
图 5.1新建工程
2.然后在proteus里对元器件进行选择,点开“P”进行所需元件添加,所需元件如表5.1所示[14-16]。
图 5.2打开元器件库
表 5.1元件在Proteus中对应的名称
元件名称 Protues中对应名称
AT89C51单片机 AT89C51
独立按键 BUTTON
电容 CAP
电解电容 CAP-ELEC
晶振 CRYSTAL
LCD1602A显示屏 LM016L
伺服电机 MOTOR-SERVO
电阻 RES
排阻 RESPACK-8
驱动芯片 L298
可变电阻 POT-HG
3.对元件进行连接,连接好的电路图,如图5.3示
图 5.3连接电路图
5.2软件程序设计
5.2.1程序的调试
1.打开Keil5软件,点开项目新建一个工程,选择好51系列,如图5.4示
图 5.4新建项目
2.然后新建一个C语言文件,如图5.5示
图 5.5新建C语言
3.然后进行编程,装载,对编译中出现的错误进行修正,直到软件不报错。

图 5.5程序编写
5.编程没有错误之后,点击目标选项窗口,鼠标左键单机Output项目栏,将其转换成HEX文件格式并输出,并保存好
如图5.6所示。
图 5.6生成HEX文件
5.3调试
用Proteus设计绘制好仿真电路之后,并检查了模拟仿真电路图没有任何连接错误情况下,调用事先用Keil编写
而成所存的Hex文件,按照步骤依次加入到软件Proteus所设计的仿真图中的AT89C51上。具体步骤如下:鼠标左键双
击点开ATC89C51单片机,然后单机勾选Program File这一项,并且打开文件夹,找到事先用保存的Hex文件,然后打
开并确定。如图5.7所示

图 5.7 Proteus仿真中插入HEX文件
5.3.1系统仿真
1.仿真总图,如5.8示
图 5.8仿真总图
当系统仿真接电之后,显示器启动工作,按下启动按键之后,图5.9示

图 5.9启动
按下加速键之后,转速显示,如图5.10
图 5.10加速
按下转向键,电机转动方向改变,屏幕显示由R变L,如图5.11示
图 5.11改变转动方向
按下减速按键,转动速度减小,如图5.12示
图 5.12速度减小
按下停止按钮,电机停止转动,屏幕显示由Run变成Stop,如图5.13示

图 5.13停止运转
总结
通过这次的毕业设计,使我充分的理解并掌握了伺服电机和别的电机区别,了解伺服电机的工作原理和实际应
用,总是巩固并熟练的掌握Proteus和Keil软件的使用、在实际操作的关联和作用。在设计中,不断实践,使我更加
熟练对Keil编程和Proteus仿真设计。在最开始的仿真设计到后期的调试,我发现自己缺乏的是调试的经验和处理问
题的步骤方式,不过在后面我不断整改,调试,出现一处错误就改一处,渐渐的自己经验越来越多,操作越来越熟
练流畅,有条不紊。通过理论和实践的相互结合,使得自己学以致用,增加了自己的自信心与思考能力,通过实践
使得自己具有更强的创造能力和动手能力。
本次系统设计采用AT89C51作为单片机的主要控制模块,永磁式无刷直流伺服电机作为主要的被控对象。使用了
独立按键来控制伺服电机,通过LCD显示屏来显示当前被控对象的状态,Keil编程,Proteus仿真,最后调试。
单片机被用来当作一个控制系统的核心而对其进行操纵,这样就可以在最大程度地减少系统的重量和体积,控
制性能更加方便完美,结构较现有的一些系统更加简单,使用更加轻便,性价比相对高些,系统灵敏度更高反应更
快,人机交互更加灵敏。用单片机控制伺服电机更能将多学科的知识进行应用实践。相信未来更轻便高精密的单片
机会被研发。这也让自己对单片机仿真充满了兴趣。
作者:QQ1694456187