4舵机控制器软件的设计_第1页
4舵机控制器软件的设计_第2页
4舵机控制器软件的设计_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4舵机控制器软件的设计舵机控制器的控制核心为单片机 AT89C2051文中,程序用C5I编写,工 作方式为前后台工作方式。单片机程序包括系统初始化程序、串口通信程 序、上位机命令解释与PWN脉宽生成程序和多路PWI波形输出程序。串行 通信程序和多路PWM波形输出程序采用中断方式。串口通信格式为渡特率 9600bps、8位数据位、1位停止位、无校验、ASCII码字符通信。串口通 信程序用于接收上位机发送过来的控制命令。控制命令采用自定义文本协 议,即协议内容全部为ASCII码字符。通信协议格式如图7所示。t量数个位 t赛系数十位 f量警位 fs号8038DII图7 通信枷识楮式例如,要控制通道1

2、的PW脉宽,脉宽系数为25,则通信协议内容为 “#”“1”“0”“2”“5”“!”这6个字符。这时通道I的PWM占空比 为25/256=0.098。一个通道号对应一个PW脉冲输出端口。本设计为8 个通道,号码为I8,对应单片机的P1. oP1. 7。起始符和终止符起 到帧同步的作用。串口通信程序流程如图 8所示。图 8 中,CHN存放的是 PWI通道号 ASCII 码,Dutyl00、DutylO、Duoyl 分别存放的是脉宽系数的百位数、十位数和个位数的 ASCII码(注意,若 高位数为0,则该位的字符应为“ 0”,不能省略。如25,完整字符应为 “0'“2”“5”。CharNo为信

3、号量,用于对串口接收的字符顺序以及串 口中断与上位机命令解释程序之间进行同步。6结论本文提出的多路舵机控制器设计方法, 以单片机AT89C205伪核心,由外部振荡 电路提供PWM脉冲的定时基准,控制部分与舵机驱动部分由两个电源供电, 两者 电气隔离。这种设计方案的优点是: PWM波形由外部振荡电路提供定时基准,与单片机内部振荡器的频率无关,不 影响串口通信、定时器等参数的配置。 PWM波形的调整精度可任意确定。 本没计思路可应用于任意多路的 PWM输出,只要单片机能提供足够多的输出端 口,例如将AT89C2051换成AT89S51,就可以提供至少24路的PWM输出(P0、Pl、 P2)。 控制

4、参数由SCI串口输入,适应面广,上位机可以是 PC机、单片机或是PLG 本方法具有一般性,任何单片机只要能提供SCI中断、外部中断就可以应用本 方法。种右转极限住置1皿莊机巻止Zinstt种左转眼魄位置1 口阳 宽图1舵机的控制要求单片机实现舵机转角控制可以使用FPGA模拟电路、单片机来产生舵机的控制信号,但 FPGA 成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采 用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采 用。5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系 统而言

5、,电源和其他器件的信号噪声都远大于5mV所以滤波电路的精度难以达到舵机的控制精度要求。也可以用单片机作为舵机的控制单元,使 PWM信号的脉冲宽度实现 微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计 算结果转化为PWMH号输出到舵机,由于单片机系统是一个数字系统,其 控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作 可靠。单片机系统实现对舵机输出转角的控制,必须首先完成两个任务: 首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次 是脉宽的调整,即单片机模拟 PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改

6、变单片 机的一个定时器中断的初值,将 20ms分为两次中断执行,一次短定时中 断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制 系统工作效率和控制精度都很高。具体的设计过程: 例如想让舵机转向左极限的角度, 它的正脉冲为 2 ms则负脉冲为20ms-2ms=18m,所以开始时在控制口发送高电平,然后 设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为 低电平,并将中断时间改为18ms再过18ms进入下一次定时中断,再将 控制口改为高电平,并将定时器初值改为 2ms等待下次中断到来,如此 往复实现PWM&号输出到舵机。用修改定时器中断初值的方法巧妙形成了

7、脉冲信号,调整时间段的宽度便可使伺服机灵活运动。为保证软件在定时中断里采集其他信号,并且使发生PW信号的程序不影响中断程序的运行 (如果这些程序所占用时间过长,有可能会发生 中断程序还未结束,下次中断又到来的后果 ),所以需要将采集信号的函 数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程 序,执行的周期还是20ms软件流程如图2所示。洱定时中斷或变定时Ht何 输幽作脚取辰C中斷痺回)如图2产生PWM信号的软件流程如果系统中需要控制几个舵机的准确转动,可以用单片机和计数器 进行脉冲计数产生PWM&号。脉冲计数可以利用51单片机的内部计数器来实现,但是从软件系统的稳定性和

8、程序结构的合理性看,宜使用外部的计数器,还可以提高CPU的工作效率。实验后从精度上考虑,对于 FUTAB;系列的接收机,当采用1 MHZ勺外部晶振时,其控制电压幅值的变化为 0.6mV,而且不会出现误差 积累,可以满足控制舵机的要求。最后(开輪Jferifr化和开中BrT0JR初値C追回图4基于8253产生PWA言号的软件流程当系统的主要工作任务就是控制多舵机的工作,并且使用的舵机工 作周期均为20ms时,要求硬件产生的多路PWM波的周期也相同。使用51 单片机的内部定时器产生脉冲计数,一般工作正脉冲宽度小于周期的1/8, 这样可以在1个周期内分时启动各路PWM波的上升沿,再利用定时器中断 T

9、0确定各路PWM波的输出宽度,定时器中断 T1控制20ms的基准时间。第1次定时器中断T0按20ms的1/8设置初值,并设置输出I/O 口, 第1次T0定时中断响应后,将当前输出I/O 口对应的引脚输出置高电平, 设置该路输出正脉冲宽度,并启动第 2次定时器中断,输出I/O 口指向下 一个输出口。第2次定时器定时时间结束后,将当前输出引脚置低电平, 设置此中断周期为20ms的1/8减去正脉冲的时间,此路PWM&号在该周 期中输出完毕,往复输出。在每次循环的第16次(2 X 8=16)中断实行关定时中断T0的操作,最后就可以实现8路舵机控制信号的输出。也可以采用外部计数器进行多路舵机的控

10、制,但是因为常见的8253、8254芯片都只有3个计数器,所以当系统需要产生多路 PW信号时,使用 上述方法可以减少电路,降低成本,也可以达到较高的精度。调试时注意 到由于程序中脉冲宽度的调整是靠调整定时器的初值,中断程序也被分成 了 8个状态周期,并且需要严格的周期循环,而且运行其他中断程序代码 的时间需要严格把握。在实际应用中,采用51单片机简单方便地实现了舵机控制需要的 P WM言号。对机器人舵机控制的测试表明,舵机控制系统工作稳定,PWM占空比(0.52.5ms的正脉冲宽度)和舵机的转角(-90°90° )线性度较1. 什么是舵机:在机器人机电控制系统中,舵机控制效

11、果是性能的重要影响因素。舵机可以在微机电 系统和航模中作为基本的输出执行机构, 其简单的控制和输出使得单片机系统非常容易与之 接口。舵机是一种位置 (角度) 伺服的驱动器, 适用于那些需要角度不断变化并可以保持的 控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使 用得比较普遍。舵机是一种俗称,其实是一种伺服马达。还是看看具体的实物比较过瘾一点:2. 其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压 比较,获得电压差输出。 最后,电压差的正

12、负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。 就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。3. 舵机的控制:舵机的控制一般需要一个 20ms左右的时基脉冲,该脉冲的高电平部分一般为 0.5ms2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms-0度;1.0ms-45度;1.5ms-90度;2.0ms135度;2.5ms180度;请看下形象描述吧

13、这只是一种参考数值,具体的参数,请参见舵机的技术参数。小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度 或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需 要更快速的反应,就需要更高的转速了。要精确的控制舵机,其实没有那么容易,很多舵机的位置等级有1024个,那么,如果舵机的有效角度范围为 180度的话,其控制的角度精度是可以达到180/1024度约0.18度了,从时间上看其实要求的脉宽控制精度为2000/1024US约2us。如果你拿了个舵机,连控制精度为1度都达不到的话,而且还看到舵机在发抖。 在这种情况下,只要舵机的电压没

14、有抖动, 那抖动的就是你的控制脉冲了。而这个脉冲为什么会抖动呢?当然和你选用的脉冲发生器有关了。一些前辈喜欢用 555来调舵机的驱动脉冲, 如果只是控制几个点位置伺服好像是可以 这么做的,可以多用几个开关引些电阻出来调占空比,这么做简单吗,应该不会啦,调试应该是非常麻烦而且运行也不一定可靠的。其实主要还是他那个年代, 单片机这东西不流行呀,哪里会哟!使用传统单片机控制舵机的方案也有很多,多是利用定时器和中断的方式来完成控制 的,这样的方式控制1个舵机还是相当有效的, 但是随着舵机数量的增加,也许控制起来就没有那么方便而且可以达到约2微秒的脉宽控制精度了。听说AVR也有控制32个舵机的试验板,不

15、过精度能不能达到 2微秒可能还是要泰克才知道了。其实测试起来很简单, 你只需要将其控制信号与示波器连接,然后让试验板输出的舵机控制信号以2微秒的宽度递增。为什么FPPA就可以很方便地将脉宽的精度精确地控制在2微秒甚至2微秒一下呢。主要还是 delay memory这样的具有创造性的指令发挥了功效。该指 令的延时时间为数据单元中的立即数的值加1个指令周期(数据0出外,详情请参见delay指令使用注意事项)因为是8位的数据存储单元,所以 memory中的 数据为(0255),记得前面有提过,舵机的角度级数一般为1024级,所以只用一个存储空间来存储延时参数好像还不够用的,所以我们可以采用2个内存单

16、元来存放舵机的角度伺服参数了。 所以这样一来,我们可以采用这样的软件结构 了:FPP6FPP7- pwrvwFPP7-PWM2FPP7-PWMttFPP7-PWM3FFP7-PWWEFPP7- pwrvnFPP7-PWMB舵机驱动的应用场合:1.高档遥控仿真车,至少得包括左转和右转功能,高精度的角度 控制,必然给你最真实的驾车体验2. 多自由度机器人设计,为什么日本人设计的机器人可以上万RMB的出售,而国内设计的一些两三千块也卖不出去呢,还是一个品质的问题3. 多路伺服航模控制,电动遥控飞机,油动遥控飞机,航海模型等伺服电机的工作原理:伺服电机是一个典型闭环反馈系统,其原理可由下图表示:比例电偉器控制脉冲控制电路*电机比例电压减速齿轮组由电机驱动,其输出端带动一个线性的比例电位器作位置检测, 该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动电机正向或反向地转动,使齿轮 组的输出位置与期望值相符,令纠正脉冲最终趋于为0,从而达到使伺服电机精确定位的目的。标准的伺服电机有三条控制线。分别为:电源、地及控制。电源线与地线 用于提供内部的直流电机及控制电路所需的能源,电压通常介于4 V 6V之间,该电源应尽可能与处理系统的电源隔离 (因为伺服马达会产生噪音)。甚至小伺 服电机在重负载时也会拉低放大器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论