基于AT89C2051的多路舵机控制器设计.docx

上传人:lao****ou 文档编号:741170 上传时间:2024-05-04 格式:DOCX 页数:8 大小:244.23KB
下载 相关 举报
基于AT89C2051的多路舵机控制器设计.docx_第1页
第1页 / 共8页
基于AT89C2051的多路舵机控制器设计.docx_第2页
第2页 / 共8页
基于AT89C2051的多路舵机控制器设计.docx_第3页
第3页 / 共8页
基于AT89C2051的多路舵机控制器设计.docx_第4页
第4页 / 共8页
基于AT89C2051的多路舵机控制器设计.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于AT89C2051的多路舵机控制器设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C2051的多路舵机控制器设计.docx(8页珍藏版)》请在第一文库网上搜索。

1、基于AT89C2051的多路舵机控制器设计2007-08-0913:28舵机是一种位置伺服的驱动器。它接收一定的控制信号,输出一定的角度,适用于那些需要角度不断变化并可以保持的控制系统。在微机电系统和航模中,它是一个基本的输出执行机构。1舵机的工作原理以日本FUTABA-S3003型舵机为例,图1是FUFABA-S3003型舵机的内部电路。图1FUTABA-S3003型舟它机的内部电路舵机的工作原理是:PWM信号由接收通道进入信号解调电路BA66881。的12脚进行解调,获得一个直流偏置电压。该直流偏置电压与电位器的电压比较,获得电压差由BA6688的3脚输出。该输出送人电机驱动集成电路BA6

2、686,以驱动电机正反转。当电机转速一定时,通过级联减速齿轮带动电位器R。,旋转,直到电压差为0,电机停止转动。舵机的控制信号是PwM信号,利用占空比的变化改变舵机的位置。2舵机的控制方法标准的舵机有3条导线,分别是:电源线、地线、控制线,如图2所示。输出转轴图2标准舵机电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源.电压通常介于46V,一般取5V。注意,给舵机供电电源应能提供足够的功率。控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20ms(即频率为50Hz)O当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。某型舵机的输出轴转

3、角与输入信号的脉冲宽度之间的关系可用围3来表示。舵机输出轴转角输入信号脉冲宽度(周期为20ms)2505094-49白s-tG图3舵机输出转角与输入信号脉冲宽度的关系3舵机控制器的设计(1)舵机控制器硬件电路设计从上述舵机转角的控制方法可看出,舵机的控制信号实质是一个可嗣宽度的方波信号(PW)O该方波信号可由FPGA、模拟电路或单片机来产生。采用FPGA成本较高,用模拟电路来实现则电路较复杂,不适合作多路输出。一般采用单片机作舵机的控制器。目前采用单片机做舵机控制器的方案比较多,可以利用单片机的定时器中断实现PWM。该方案将20ms的周期信号分为两次定时中断来完成:一次定时实现高电平定时Th;

4、一次定时实现低电平定时T1。Th、T1的时间值随脉冲宽度的变换而变化,但,Th+T1=20ms.该方法的优点是,PwM信号完全由单片机内部定时器的中断来实现,不需要添加外围硬件。缺点是一个周期中的PwM信号要分两次中断来完成,两次中断的定时值计算较麻烦;为了满足20ms的周期,单片机晶振的频率要降低;不能实现多路输出。也可以采用单片机+8253计数器的实现方案。该方案由单片机产生计数脉冲(或外部电路产生计数脉冲)提供给8253进行计数,由单片机给出8253的计数比较值来改变输出脉宽。该方案的优点是可以实现多路输出,软件设计较简单;缺点是要添加1片8253计数器,增加了硬件成本。本文在综合上述两

5、个单片机舵机控制方案基础上,提出了一个新的设计方案,如图4所示。该方案的舵机控制器以AT89C2051单片机为核心,555构成的振荡器作为定时基准,单片机通过对555振荡器产生的脉冲信号进行计数来产生PWM信号。该控制器中单片机可以产生8个通道的PWM信号,分别由AT89C2051的P1.OP1.7(1219引脚)端口输出。输出的8路PWM信号通过光耦隔离传送到下一级电路中。因为信号通过光耦传送过程中进行了反相,因此从光耦出来的信号必须再经过反相器进行反相。方波信号经过光耦传输后,前沿和后沿会发生畸变,因此反相器采用CD40106施密特反相器对光耦传输过来的信号进行整形,产生标准的PWM方波信

6、号。笔者在实验过程中发现,舵机在运行过程中要从电源吸纳较大的电流,若舵机与单片机控制器共用一个电源,则舵机会对单片机产生较大的干扰。因此,舵机与单片机控制器采用两个电源供电,两者不共地,通过光耦来隔离,并且给舵机供电的电源最好采用输出功率较大的开关电源。该舵机控制器占用单片机的个Se1串口。串口用于接收上位机传送过来的控制命令,以调节每一个通道输出信号的脉冲宽度。MAX232为电平转换器,将上位机的RS232电平转换成TT1电平。(2)实现多路PwM信号的原理在模拟电路中,PWM脉冲信号可以通过直流电平与锯齿波信号比较来得到。在单片机中,锯齿波可以通过对整型变量加1操作来实现,如图5所示。假定

7、单片机程序中设置一整型变量SawVa1其值变化范围为0N。555振荡电路产生的外部计数时钟信号输入到AT89C2051的INTO脚。每当在外部计数时钟脉冲的下降沿,单片机产生外部中断,执行外部中断INTO的中断服务程序。每产生一次外部中断,对SawVa1执行一次加1操作,若SaWVaI已达到最大值N,则对SaWVaI清0。SawVa1值的变化规律相当于锯齿波,如图5所示。若在单片机程序中设置另一整型变量DUtyVa1,其值的变化范围为0N.每当在SawVaI清0时,DUIyVaI从上位机发送的控制命令中读入脉冲宽度系数值,例如为H(0HN)o若DUtyVaI2SawVa1,则对应端口输出高电平

8、;若DUtyVaI设外部计数时钟周期为T1NT0,锯齿波周期(PwM脉冲周期)为TPWM,PWM脉冲宽度占空比为D,由图5可得出如下关系:TPWM=(N+1)T1NTo(1)D=H(2)由式(D可九.NTINTO=TPWMN+1(3)TINTo_1(4)?TpwmN+1由式(3)可知,PWM波形的周期TPwM一旦确定下来,只须选定计数最大值N,就可以确定外部时钟脉冲所需周期(频率)。外部时钟脉冲周期TINTO显然是PWM脉冲宽度变换的最小步距,即调节精度。由式(4)可知,N越大,步距所占PWM周期的百分比越小,精度越高。例如,若采用8位整型变量,最大值N=28T=255,则精度为1/(255+

9、1)=1/255;若采用16位整型变量,最大值N=216T=65535,则精度为1/65536。文中计数变量SaWVa1采用8位整型变量,因此N=255对于一般应用,其精度已足够。就舵机而言,要求TPwM=20ms,则可算得外部时钟周期为:八NTo=券著=78125ms因此,设计555振荡电路时,其输出脉冲的频率应为:/into=1Tinto=12.8kHz(6)当有多个变量与SaWVaI比较,将比较结果输出到多个端口时。就形成了多路PWM波形。各个变量的值可以独立变化,因此各路PWM波形的占空比也可以独立调节,互不相干。多路PWM波形的产生如图6所示。图中以3路PWM波形为例。PWM(CH1

10、)PWM(CH2)图6多路PWM波形的产生PWM(CH3)4舵机控制器软件的设计舵机控制器的控制核心为单片机AT89C2051。文中,程序用C51编写,工作方式为前后台工作方式。单片机程序包括系统初始化程序、串口通信程序、上位机命令解释与PWM脉宽生成程序和多路PWM波形输出程序。串行通信程序和多路PWM波形输出程序采用中断方式。串口通信格式为渡特率9600bps、8位数据位、1位停止位、无校验、ASCI1码字符通信。串口通信程序用于接收上位机发送过来的控制命令。控制命令采用自定义文本协议,即协议内容全部为ASC11码字符。通信协议格式如图7所示。#ICHXID3ID2ID1n终止符t脉宽系数

11、个位t脉宽系数十位t脉宽系数百位t通道号T起始符图7通信协议格式例如,要控制通道1的PWM脉宽,脉宽系数为25,则通信协议内容为“1”“0”“2”“5”“!”这6个字符。这时通道1的PWM占空比为25/256=0.098O一个通道号对应一个PWM脉冲输出端口。本设计为8个通道,号码为18,对应单片机的P1.。PI.7。起始符和终止符起到帧同步的作用。串口通信程序流程如图8所示。图8串口通信程序流程图8中,CHNO存放的是PWM通道号ASCn码,Duty100Duty1ODUOyI分别存放的是脉宽系数的百位数、十位数和个位数的ASCn码(注意,若高位数为0,则该位的字符应为“0”,不能省略。如2

12、5,完整字符应为“0”“2”“5”。CharNo为信号量,用于对串口接收的字符顺序以及串口中断与上位机命令解释程序之间进行同步。5舵机控制器实验图9为舵机控制板输出的其中一路PWM波形(带舵机负载)。从图9中可看出,舵机控制器输出的PWM波形稳定、干净,符合设计要求。图9其中一路PWM波形6结论本文提出的多路舵机控制器设计方法,以单片机AT89C2051为核心,由外部振荡电路提供PWM脉冲的定时基准,控制部分与舵机驱动部分由两个电源供电,两者电气隔离。这种设计方案的优点是:PWM波形由外部振荡电路提供定时基准,与单片机内部振荡器的频率无关,不影响串口通信、定时器等参数的配置。PWM波形的调整精度可任意确定。本没计思路可应用于任意多路的PWM输出,只要单片机能提供足够多的输出端口,例如将AT89C2051换成AT89S51就可以提供至少24路的PWM输出(PO、P1、P2)。控制参数由SC1串口输入,适应面广,上位机可以是PC机、单片机或是P1C。本方法具有一般性,任何单片机只要能提供SC1中断、外部中断就可以应用本方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服