基于单片机的轮式机器人舵机控制.docx
- 文档编号:7924720
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:25
- 大小:1.07MB
基于单片机的轮式机器人舵机控制.docx
《基于单片机的轮式机器人舵机控制.docx》由会员分享,可在线阅读,更多相关《基于单片机的轮式机器人舵机控制.docx(25页珍藏版)》请在冰豆网上搜索。
基于单片机的轮式机器人舵机控制
防灾科技学院
毕业设计
题目
基于单片机的轮式机器人舵机控制
学生姓名
熊涛
学号
095031137
系别
防灾仪器系
专业
电气工程及其自动化
班级
0950311
开题时间
2012年12月25日
答辩时间
2013年06月06日
指导教师
蔡建羡
职称
副教授
基于单片机的轮式机器人舵机控制
作者熊涛
指导教师蔡建羡
摘要在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。
论文设计了一种采用舵机控制技术的轮式机器人,单片机软件程序采用c语言编程,通过使用单片机内部计数器的定时器功能,在中断服务程序中,对I/O口进行操作输出PWM,对舵机的方向及速度进行控制。
将设计的机器人系统在proteus仿真环境中搭建,对整个系统进行仿真,模拟系统的控制。
最后,将仿真调试好的系统应用于实际的轮式机器人中,实验结果表明,本设计方案可以实现机器人的转角控制,速度控制,实现了轮式机器人的智能化运动。
关键词:
单片机;定时器;proteus仿真;舵机控制
WheeledRobotServoControlBasedonMicrocomputer
AuthorXIONGTao
TeacherCAIJian-xian
AbstractInmechanicalandelectricalcontrolsystemoftherobot,thesteeringgearcontroleffectisoneoftheimportantfactorsaffectingperformance.Akindofsteeringgearcontroltechnologyofthewheeledrobotisdesignedinthepaper.Thesingle-chipmicrocomputersoftwareprogramusingclanguageprogrammingandthesinglechipmicrocomputerinternalcountertimerfunctiontomanipulateoutputPWMintheinterruptserviceroutine.I/Oportscontrolthedirectionandspeedofthesteeringgear.Thedesignedrobotsystemissetupintheprotuessimulationenvironmentandsimulatescontrolsystem.Finally,thesimulationdebugginggoodsystemisappliedtotheactualwheeledrobot.Experimentalresultsshowthatthedesignedmechanismcancontrolthecornerangleandspeedofrobotandimplementstheintelligentmovementofwheeledrobots.
Keywords:
singlechipmicrocomputer;timer;protuessimulation;servocontrol
引言
轮式机器人在当今社会中的应用越来越广泛,具有移动速度快,运行平稳的特点。
轮式机器人多应用在地面平坦,需要平稳运行的场合,例如工厂内的自动循迹送货机器人、家庭内使用的清洁机器人。
大多数轮式机器人采用的是直流电机作为驱动电机,但是直流电机的驱动需要有单独的驱动电路,并且对其的控制精度不能保证。
所以本设计采用舵机作为轮式机器人的驱动电机。
舵机在现代生活中越来越重要,尤其是在现代工业生产中。
舵机的应用范围比较广泛。
在船舶工业中,舵机有着十分重要的作用,用来控制船的前进方向。
在航天领域中,舵机控制着飞行器的前进方向,对整个控制系统至关重要。
在机器人中,由于舵机可以精确快速的调整到特定位置,所以舵机在机器人中的应用很广泛。
因此,能准确控制着舵机的速度和方向对现代工业有着重大的意义[1-6]。
现在有些人采用模拟电路来控制舵机,这样控制起来容易受到外界的干扰,运行起来也不太稳定。
为此本设计采用单片机来控制,这样既满足了快速性,又能满足准确性。
单片机在现代控制中占有重要的地位[7,8],采用的AT89S52单片机资源也十分的丰富。
本次设计的目的就是在理论学习的基础上,通过完成一个涉及AT89S52单片机应用并具有综合功能的最小系统目标板的设计与编程应用,使我们能够将理论知识与实际应用结合起来,加深了对理论知识的理解,而且对电气、电子电路、电子元器件、印刷电路板的知识进一步加深了解,在软件编程的同时,布置和调试、焊接技术及相关设备使用技能得到全面的锻炼和提高,为将来能独立一些单片机应用系统的开发设计工作打下一定的基础。
同时在设计之初先采用Proteus进行仿真,加快了设计的进程,使设计出实物的成功率更高[9-11]。
1总体方案设计
本设计的机器人采用的是舵机作为驱动轮,舵机的控制信号是周期为20Ms,脉冲宽度为0.5Ms到2.5Ms的PWM信号。
采用单片机作为控制芯片。
通过接收红外遥控器发出的信号,来遥控机器人的运行。
同时要将舵机的供电与单片机的供电隔离开来,防止舵机运行过程中的电压波动影响到单片机的工作。
PWM波
红外线
+6V
+5V
图1.1系统结构图
2硬件设计
2.1控制模块
考虑到该对舵机控制是由PWM信号完成的,又知道PWM信号的脉冲宽度是由0.5MS到2.5MS变化。
即PWM信号要做到微秒级的变化。
而AT89S52单片机若采用12MHz的晶振,其工作频率为1MHz,可以满足要求,再加上其性能可靠,价格便宜,便于入门。
所以采用AT89S52单片机最为控制芯片。
2.1.1单片机的基本发展概况
从第一台单片机问世至今三十多年以来,我国开始使用单片机是在1982年,短短五年时间里发展极为迅速。
目前单片机产品已达50多个系列,300多种型号,且综合性能、成本、体系结构、开发环境等都取得了显著的进步。
单片机就其字长可分为4位机、8位机、16位机和32位机,其中8位机长期以来都是主流机型,在我国应用尤为广泛,且在今后的很长时间内仍具有相当的活力。
以8位机为例,单片机的发展历史可综合为单片机初级阶段、单片机完善阶段、微控制器形成阶段和微控制器成熟阶段等四个阶段。
单片机也可以称之为微控制器(Microcontroler),是因为它最早的应用领域是工业控制。
起初单片机只是一个只有CPU的芯片,它作为专用的处理器。
在此基础上慢慢发展而来。
单片机最初的设计为了让系统变小,更加容易的被应用集成进更加复杂要求更加严格的控制场合当中,将CPU和大量的外设集成在一个很小的芯片中。
INTEL的Z80处理器就是这种设计思想最早的应用,单片机和专用处理器在此之后便向不同的方向发展。
单片机的结构:
单片机当中包括CPU、RAM、ROM、I/0口等各个主要的部件,并且把这些部件集成在一块小小的芯片上。
但是尽管各个主要器件仅仅集成在一块很的小芯片上,但是它包括了构成一个完整的计算机所需要的绝大部分硬件:
CPU、ROM、RAM、外部总线。
同时还包括定时器、实时时钟、通讯接口等外围设备。
更有甚者甚至可以将复杂的输入输出系统、网络、图像、声音等功能都集成在芯片内部。
2.1.2单片机特点
单片机是一种在线式的实时控制的计算机,在线式就是现场控制,需要有比较好的抗干扰能力,低的成本。
单片机是靠程序的,并且可以修改。
不同的程序以实现不同的功能,对于一些比较特殊的功能,其他器件很难或者是根本就不可能做到。
单片机还具有优异的性价比、集成度很高、体积小、可靠性很高。
单片机的各功能部件都集成在一块芯片当中,内部采用的是总线结构,这样就减化了各部件之间的连接,在很大程度上提高了其抗干扰能力和工作的可靠性。
另外,其体积小,易于屏蔽外界的强磁场干扰,适合在比较恶劣环境下工作。
单片机的指令系统中有非常丰富的转移指令、位处理功能以及I/O口的逻辑操作,这样就满足了工业控制的要求。
其逻辑控制的功能以及其运行速度都比同一档次的微机要高。
单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统总线方式,进一步缩小了体积,简化了结构。
外部总线增加了I2C(Inter-IntegratedCircuit)及SPI(SerialPeripheralInterface)等串行总线。
因为单片机体积小,通常都被放在被控目标的内部。
在全部装置中,它的作用和人脑一样,它出了问题,全部装置就瘫痪了。
目前单片机的应用领域十分广泛,如通讯设备、智能仪表、导航系统、实时工控、家用电器等。
产品一旦使用了单片机,产品就有了能够换代升级的功效,通常在使用了单片机的产品名称之前加上一个形容词——“智能型”,比如智能型电子表等。
现在有些业余电子爱好的开发者或工厂的技术人员制作出来的产品,不是功能太简单且极易被仿制,就是电路太复杂。
这其中的原因,可能就是在产品中没有使用单片机或者是其的它可编程逻辑器件。
2.1.3单片机的应用
在当今的时代单片机的应用扩展到了我们生活的很多领域,很难找到单片机涉及不到的领域。
通信、汽车系统、门禁系统、各种仪器仪表、电视系统、甚至是在军工领域等等。
在自动控制领域的智能仪表、机器人、医疗器械等方面就更加与单片机相关了。
因此,对于单片机的学习是十分有用的这可能造就一批智能化控制与计算机应用的工程师、科学家。
单片机广泛应用于家用电器、仪器仪表、航空航天、医用设备、过程控制[12,13]及专用设备的智能化管理等领域,大盖分如下几个领域:
(1)在家用电器中的应用
现在的家用电器大部分都使用单片机控制,从电子秤量设备、电饭褒、洗衣机、空调机、电冰箱、其他音响视频器材再到彩电,无所不在、五花八门。
(2)在智能仪器仪表上的应用
单片机具有体积小、控制功能强、功耗低、微型化、用方便和扩展灵活使等优点,被广泛应用于仪器仪表的设计中,组合上不同种类型的传感器,可实现诸如频率、电压、硬度、压力、湿度、元素、功率、温度、流量、长度、速度、角度、厚度等物理量的检测。
运用单片机的控制使得仪器仪表微型化、智能化、数字化,且功能更加强大。
比如更加精密的测量设备(示波器,功率计,各种分析仪等)。
(3)单片机在医用设备领域中的应用
单片机在医用设备当中的用途也是相当广泛,例如病床呼叫系统、医用呼吸机,监护仪,各种分析仪及超声诊断设备等等。
此外,单片机在金融、科研、工商、国防航空航天、教育、等领域都有着非常广泛的应用。
(4)在工业控制中的应用
用单片机可以构成多种多样的数据采集系统、控制系统。
例如各种报警系统、电梯智能化控制、计算机联网构成二级控制系统,和工厂流水线的智能化管理等。
(5)在计算机网络和通信领域中的应用
现代的单片机普遍都具备通信的接口,可以很方便地与计算机进行数据的通信与交流,给在计算机网络与需要通信的设备之间的应用提供了非常好的物质条件,现在的通信设备大部分都实现了用单片机智能控制,从小型程控、手机,交换机、电话机、列车无线通信、楼宇自动通信呼叫系统、再到日常工作中随处可见的集群移动通信、移动电话、无线电对讲机等。
2.1.4MCS-51单片机
MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如8031,8051,8751,8032,8052,8752,8952等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机。
MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:
基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951。
52子系列:
增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952。
而本设计就采用AT89S52单片机
MCS-51系列单片机为哈佛结构(而非普林斯顿结构),其基本情况如下:
(1)内ROM:
4KB
(2)内RAM:
128B(52系列为256B)
(3)外ROM:
64KB
(4)外RAM:
64KB
(5)I/O线:
32根(4埠,每埠8根)
(6)定时/计数器:
2个16位可编程定时/计数器(52系列为3个16位定时/计数器)
(7)串行口:
全双工,2根
(8)寄存器区:
工作寄存器区、在内128BRAM中,分4个区
(9)中断源:
5个源中断,2级优先(52系列为6个中断源,2级优先)
(10)堆栈:
最深128B
(11)布尔处理机:
位处理机,某位单独处理
(12)指令系统:
五大类,111条
51系列单片机8031、8051及AT89S52均采用DIP40的封装。
图2.1是它们的引脚配置:
40个引脚中,有一个电源正引脚,一个电源负引脚,两个外置的晶体振荡器引脚,4组8位共32个I/O口,P3口线复用。
图2.151系列单片机引脚图
下面对单片机引脚的功能加以说明:
Pin20:
GND接地脚。
Pin40:
VCC正电源脚,工作时,接正5V电源。
Pin19:
时钟XTAL1引脚,接外部晶振的一端。
它是片内振荡器反相放大器的输入端。
在采用外部时钟时,外部时钟振荡信号直接送入此引脚作为驱动端,其频率为0~33MHz。
Pin18:
时钟XTAL2引脚,接外部晶振的另一端。
它是片内振荡器反相放大器的输出端,振荡电路的频率为晶振振荡频率。
当采用外部时钟电路时,此引脚应悬空不用。
AT89S52的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。
另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2输入。
内部时钟方式外部时钟方式
图2.2单片机时钟电路
Pin39-Pin32:
为P0口引脚。
P0口是一个标准的双向8位并行口,既可以用作通用I/O口,也可以用作地址/数据线。
由特殊功能寄存器P0管理P0口各位的工作状态,其地址为80H,各位地址为80H~87H。
它分时提供低8位地址和8位数据,故这些I/O线有“地址/数据总线”之称,简写为AD0~AD7。
Pin1-Pin8:
为P1口引脚。
P1口是一个准双向的8位并行口,主要作为通用I/O口使用。
由特殊功能寄存器P1管理P1口各位的工作状态,其地址为90H,各位地址为90H~97H。
Pin21-Pin28:
为P2口引脚。
P2口是一个准双向的8位并行口,既可以作为通用I/O口使用,也可以作为高8位地址线使用。
由特殊功能寄存器P2管理P2各位的工作状态,其地址为A0H,各位地址为A0H~A7H。
Pin10-Pin17:
为P3口引脚。
P3口是一个多功能双向8位并行口,它的每一位既可以作为通用I/O口使用,又都具有第二输出功能。
由特殊功能寄存器P3管理P3口各位的工作状态,其地址为B0H,各位地址为B0H~B7H。
Pin9:
RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
AT89S52的复位方式可以是自动复位,也可以是手动复位,见图2.3。
此外,RESET/Vpd还是一复用引脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
上电自动复位电路手动复位电路
图2.38051复位电路
Pin30:
ALE/
为地址锁存允许输出/编程脉冲输入端。
Pin31:
为
内、外程序存储器选择/变成电源输入端。
MCS-51的CPU能处理8位二进制数或代码。
CPU是单片机的主要核心部件,在CPU里面包含了运算器、控制器以及若干寄存器等部件给成。
MCS-51内部有4KB或8KB的只读随机存储空间(51系列一共有4KB,52系列一共有8KB),用来存放程序、原始数据或者是表格。
因此它被称之为程序存储器,简称内部RAM,寻址范围为0000~0FFFH。
MCS-51外部分别有64KB的RAM和64KB的ROM,称为外部数据存储器和外部程序存储器,寻址范围为0000H~FFFFH。
51系列一共有2个16位的定时器/计数器(52系列一共有3个16位的定时器/计数器),通过塔门可以实现计数或定时的功能,并且可以通过它定时或者是计数的结果对单片机进行控制。
定时的功能靠的是内部分频时钟频率计数来实现,当用作计数器时,可以对T0或者是T1端口的低电平脉冲进行计数。
MCS-51一共有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输出和输入。
MCS-51有一个全双工的可编程的串行口,以实现同其它设备进行串行数据接收和发送。
这个串口有很强的功能,既可作为移位器使用作,同时也可做为全双工异步通信收发器使用。
TXD(P3.1)脚为发送端口,RXD(P3.0)脚为接收端口。
MCS-51单片机有很强的中断功能,可以满足不同控制场合应用的要求。
51系列有5个中断源(52系列有6个中断源),即外部中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共二个优先级。
2.2舵机模块
舵机可分为位置伺服舵机,速度伺服舵机,扭矩伺服舵机。
本设计主要作为机器人的驱动轮,可实现机器人的前进、后退、转弯等操作,且对其扭矩的要求不高,所以本设计中采用速度伺服舵机。
舵机是一个闭环控制系统。
其输入信号为周期为20Ms,脉宽变化范围为0.5Ms到2.5Ms的PWM波。
PWM信号经过解调后得到一个直流偏置电压,舵机中的直流电机与一个电位器相连,直流电机的转动带动电位器转动,电位器又可以输出一个电压(这是反馈信号),直流偏置电压与这个电位器得到的电压经过电压比较器后得到的电压差输入控制芯片中,来完成对对舵机的控制。
所以对舵机的控制,即对PWM波形的控制。
图2.4舵机
以上说的是位置伺服舵机的原理,其实速度伺服舵机的原理是大同小异的,只不过随直流电机转动的电位器变成了事先固定好的电位器或电阻,输出一个固定的电压,这个电压对应的就是使舵机停转的PWM信号得到的直流偏置电压值,所以也可以通过调整这个电压的值,来调整舵机停转的PWM脉宽。
当PWM的脉宽为0.5Ms或2.5Ms时,舵机正转或反转的速度最快,当脉宽越接近1.5Ms时转速越慢,当脉宽为1.5Ms时舵机停转。
2.3红外接收模块
红外遥控器采用UPD6422编码方式,一帧码含有一个引导码,8位用户编码,8为用户编码反码,8位键数据码,8位键数据码反码。
引导码由9Ms高电平及4.5Ms低电平组成。
用户编码、键数据码及其反码采用脉冲位置调试方式(PPM)编码。
利用之间的时间间隔来区分“0”和“1”。
图2.5红外波形
红外接收模块采用VS1838B。
VS1838B采用小型设计。
内置专用IC,宽角度及长距离接收,抗干扰能力强,能抵挡环境干扰光线,最低可在2.7V的电压下工作。
图2.6红外接收模块VS1838B
2.4电源设计
由于本设计中有2路舵机,及其他外围器件,采用2节18650电池供电。
舵机部分直接采用18650供电,单片机采用7805芯片稳压后得到的+5V电源供电。
这样就将舵机的供电系统与单片机的供电隔离开来,抑制了舵机转动的时候对单片机的供电产生的扰动。
7805芯片是一个三段正电源稳压芯片,输入电压为+5V~+18V,输出电压为+5V。
其最大输出电流为1.5A。
有热过载保护,短路保护,输出晶体管安全工作区保护功能。
图2.7稳压芯片7805
3软件设计
3.1综合程序设计
程序由舵机驱动程序和红外解码程序组成。
初始化机器人停止。
当红外接收到前进、后退、停止、转向命令时,将舵机状态变量更新为相应值,通过舵机驱动函数来驱动舵机做出相应动作。
3.2舵机驱动程序设计
由于控制舵机需要产生一个周期为20Ms,脉宽变化范围为0.5Ms到2.5Ms的PWM波。
且对PWM波的精度有一定要求,所以采用单片机的定时器1来产生一个基准时钟,在此基础上输出2路PWM波,来分别控制4个舵机。
舵机程序流程图如图3.1所示。
NUM值大于等于最大值
NUM值小于最大值
计数值小于设定值
计数值大于设定值
图3.1舵机程序流程图
定时器1的工作方式为方式1,初值设定为TH1=(65536-100)/256;TL1=(65536-100)%256。
即定时器1每隔0.1Ms产生一次中断。
每当定时器1产生中断时,变量NUM自动加一,当加到200时自动清零,一产生一个20Ms的周期脉冲,在分别设定两个变量PWM_NUM_L,和PWM_NUM_R这两个变量值的范围在5-25之间,通过这两个变量值和NUM值的对比来产生输出的高电平。
通过这两个变量的设置来产生时间长度为0.5Ms到2.5Ms的高电平。
但是考虑到在实际运行时中断函数中还有程序运行,实际的产生中断的时间要长一些,在经过仿真个实际的情况调整相应的参数,以满足实际的需要。
最后经过仿真和实际的运行后,得到了确切的运行参数,NUM变量的最大值为182,即当NUM值达到182时自动清零,能产生20.0733Ms的周期脉冲。
PWM_NUM_L和PWM_NUM_R的变化范围为4到22,产生0.548Ms到2.528Ms的高电平。
在通过分别设置两边舵机的运动速度来达到控制机器人前进后退转弯的目的。
3.3红外程序设计
红外解码由外部中断0口来实现,当接收到红外信号时,进入外部中断0,首先检测9Ms和4.5Ms的引导码,之后通过计算高电平的时长,来识别编码是1还是0,并且将4组编码分别计入4个数组中,舍弃用户码和用户反码。
通过键值反码来校验键值编码是否接收正确。
最后输出键值编码。
舵机控制程序的源代码见附录。
4开发和仿真
4.1程序开发环境介绍和应用
本设计程序采用C语言编写,用的是Keil软件进行开发。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
(1)程序编写和编译
先用Keil软件编写程序,程序编写好后,进行编译。
图4.1编译程序
(2)程序仿真
程序编译通过后点击Debug按钮进入仿真界面,进行程序仿真。
图4.2仿真界面
(3)获得波形
仿真时可以分别得到周期为20Ms的脉冲波形,如图4.3和图4.4得到的是周期为20Ms,当舵机停转时脉宽为1.54Ms的波形。
图4.320Ms周期PWM的波形
图4.41.54Ms舵机停转的PWM波形
(4)得到HEX文件
之后将生成可烧写的HEX文件。
图4.5生成HEX文件
4.2仿真系统的介绍和应用
4.2.1Proteus的介绍
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 轮式 机器人 舵机 控制