以PLC单片机为控制核心的无人机舵机控制系统的设计与实现Word文档格式.docx
- 文档编号:16538919
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:12
- 大小:920.25KB
以PLC单片机为控制核心的无人机舵机控制系统的设计与实现Word文档格式.docx
《以PLC单片机为控制核心的无人机舵机控制系统的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《以PLC单片机为控制核心的无人机舵机控制系统的设计与实现Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
飞行器经过近半个多世纪的发展,关键技术渐已成熟,但输出力巨大,响应速度快,控制精度高,体积小,重量轻,高可靠性始终是无人机舵机发展的目标。
PLC单片机的突出特点是体积小,功耗低,、指令集精简,抗干扰性好,有较强的模拟接口,代码保密性好,其兼容的Flash程序储存器,支持低电压快速擦写,程序修改方便。
在一些小型的应用中比传统的51单片机更灵活,外围电路更少,因而得到了广泛应用。
在无人机舵机控制系统的设计中,PLC单片机很好的满足了其小体积限制,抗干扰高,功耗低等要求。
本文介绍以PLC单片机为控制核心的无人机舵机控制系统的设计与实现,并给出了调试结果。
舵机最早出现在航模运动中。
在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的。
举个简单的四通飞机来说,飞机上有以下几个地方需要控制:
1.发动机进气量,来控制发动机的拉力(或推力);
2.副翼舵面(安装在飞机机翼后缘),用来控制飞机的横滚运动;
3.水平尾舵面,用来控制飞机的俯仰角;
4.垂直尾舵面,用来控制飞机的偏航角;
遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。
舵机因此得名:
控制舵面的伺服电机。
不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:
船模上用来控制尾舵,车模中用来转向等等。
由此可见,凡是需要操作性动作时都可以用舵机来实现。
二、结构和控制
一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。
工作原理:
控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。
舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。
舵机的基本结构是这样,但实现起来有很多种。
例如电机就有有刷和无刷之分,齿轮有塑料和金属之分,输出轴有滑动和滚动之分,壳体有塑料和铝合金之分,速度有快速和慢速之分,体积有大中小三种之分等等,组合不同,价格也千差万别。
例如,其中小舵机一般称作微舵,同种材料的条件下是中型的一倍多,金属齿轮是塑料齿轮的一倍多。
需要根据需要选用不同类型。
舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。
电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;
另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。
另外要注意一点,SANWA的某些型号的舵机引线电源线在边上而不是中间,需要辨认。
但记住红色为电源,黑色为地线,一般不会搞错。
舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。
也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。
由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。
比方说机器人的关节、飞机的舵面等。
常见的舵机厂家有:
日本的Futaba、JR、SANWA等,国产的有北京的新幻想、吉林的振华等。
现举FutabaS3003来介绍相关参数,以供大家设计时选用。
之所以用3003是因为这个型号是市场上最常见的,也是价格相对较便宜的一种(以下数据摘自Futaba产品手册)。
尺寸(Dimensions):
40.4×
19.8×
36.0mm
重量(Weight):
37.2g
工作速度(Operatingspeed):
0.23sec/60°
(4.8V)0.19sec/60°
(6.0V)
输出力矩(Outputtorque):
3.2kg.cm(4.8V)4.1kg.cm(6.0V)
由此可见,舵机具有以下一些特点:
>
体积紧凑,便于安装;
输出力矩大,稳定性好;
控制简单,便于和数字系统接口;
正是因为舵机有很多优点,所以,现在不仅仅应用在航模运动中,已经扩展到各种机电产品中来,在机器人控制中应用也越来越广泛。
正是舵机的控制信号是一个脉宽调制信号,所以很方便和数字系统进行接口。
只要能产生标准的控制信号的数字设备都可以用来控制舵机,比方PLC、单片机等。
这里介绍利用51系列单片机产生舵机的控制信号来进行控制的方法,编程语言为C51。
之所以介绍这种方法只是因为笔者用2051实现过,本着负责的态度,所以敢在这里写出来。
程序用的是我的四足步行机器人,有删改。
单片机并不是控制舵机的最好的方法,希望在此能起到抛砖引玉的作用。
2051有两个16位的内部计数器,我们就用它来产生周期20ms的脉冲信号,根据需要,改变输出脉宽。
基本思路如下(请对照下面的程序):
我用的晶振频率为12M,2051一个时钟周期为12个晶振周期,正好是1/1000ms,计数器每隔1/1000ms计一次数。
以计数器1为例,先设定脉宽的初始值,程序中初始为1.5ms,在for循环中可以随时通过改变a值来改变,然后设定计数器计数初始值为a,并置输出p12为高位。
当计数结束时,触发计数器溢出中断函数,就是voidtimer0(void)interrupt1using1,在子函数中,改变输出p12为反相(此时跳为低位),在用20000(代表20ms周期)减去高位用的时间a,就是本周期中低位的时间,c=20000-a,并设定此时的计数器初值为c,直到定时器再次产生溢出中断,重复上一过程。
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
uinta,b,c,d;
/*a为舵机1的脉冲宽度,b为舵机2的脉冲宽度,单位1/1000ms*/
/*c、d为中间变量*/
/*以下定义输出管脚*/
sbitp12=P1^2;
sbitp13=p1^3;
sbitp37=P3^7;
/*以下两个函数为定时器中断函数*/
/*定时器1,控制舵机1,输出引脚为P12,可自定义*/
voidtimer0(void)interrupt1using1
{p12=!
p12;
/*输出取反*/
c=20000-c;
/*20000代表20ms,为一个周期的时间*/
TH0=-(c/256);
TL0=-(c%256);
/*重新定义计数初值*/
if(c>
=500&
&
c<
=2500)c=a;
elsec="
20000-a"
;
/*判断脉宽是否在正常范围之内*/
}
/*定时器2,控制舵机2,输出引脚为P13,可自定义*/
voidtimer1(void)interrupt3using1
{p13=!
p13;
d=20000-d;
TH1=-(d/256);
TL1=-(d%256);
if(d>
d<
=2500)d=b;
elsed="
20000-b"
/*主程序*/
voidmain(void)
{TMOD=0x11;
/*设初值*/
p12=1;
p13=1;
a=1500;
b=1500;
/*数值1500即对应1.5ms,为舵机的中间90度的位置*/
c=a;
d=b;
TH0=-(a/256);
TL0=-(a%256);
TH1=-(b/256);
TL1=-(b%256);
/*设定定时器初始计数值*/
EA=1;
ET0=1;
TR0=1;
EX0=1;
EX1=1;
ET1=1;
TR1=1;
PX0=0;
PX1=0;
PT1=1;
PT0=1;
/*设定中断优先级*/
for(;
)
{
/*在这个for循环中,可以根据程序需要
在任何时间改变a、b值来改变脉宽的输
出时间,从而控制舵机*/
}
因为在脉冲信号的输出是靠定时器的溢出中断函数来处理,时间很短,因此在精度要求不高的场合可以忽略。
因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的,因此,只需要在主程序中按你的要求改变a值,例如让a从500变化到2500,就可以让舵机从0度变化到180度。
另外要记住一点,舵机的转动需要时间的,因此,程序中a值的变化不能太快,不然舵机跟不上程序。
根据需要,选择合适的延时,用一个a递增循环,可以让舵机很流畅的转动,而不会产生像步进电机一样的脉动。
这些还需要实践中具体体会。
舵机的速度决定于你给它的信号脉宽的变化速度。
举个例子,t=0试,脉宽为0.5ms,t=1s时,脉宽为1.0ms,那么,舵机就会从0.5ms对应的位置转到1.0ms对应的位置,那么转动速度如何呢?
一般来讲,3003的最大转动速度在4.8V时为0.23s/60度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;
如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。
当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。
还有一点很重要,就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,这就是舵机会产生像步进电机一样运动的原因。
软件设计是舵机控制器设计的一大难点,它的好坏直接影响整个系统的控制性能。
系统软件部分由三闭环控制算法、数据采集与处理及各保护功能组成。
在结构上采用模块化的设计思想,降低了程
序复杂度,从而提高了控制系统软件的可读性、可靠性和可移植性。
其具体涉及到:
解析给定PWM位置信号,舵面位置信号的采集与处理,舵面速度的计算与处理,电机电流信号的采集与处理,位置环、速度环和电流环控制算法的实现,电机变速换向的实现。
整个控制系统软件体系结构图如图1所示。
图1软件结构整体框图
系统采用三闭环控制策略,其中电流环的循环时间最短,而位置环最慢。
因此在系统的调试过程中,先调试最内的电流环,当性能满足要求后,再调节速度环与位置环,最终实现调节目标,从而减小了
三环调节的耦合性,当电流环和速度环的性能满足要求后,此时可以专注于位置环参数的调整,而不改变其它两环的调节参数。
三环具体算法实现介绍如下。
1、位置环设计
位置环作为最外环,直接决定舵机伺服控制系统的动、静态性能指标。
经典PID算法虽然结构简单且鲁棒性较强,但三个参数固定,很难保证系统有较快的响应速度,同时具有较好的静态性能和小超调量,所以必须对传统PID算法进行改进,尽可能兼顾各项性能指标。
系统的位置环调节选用PID参数模糊自整定算法,由模糊推理机和经典PID控制器组成。
通过计算当前的位置偏差和变化率,找出与PID三个参数之间的模糊关系,并不断检测,根据模糊法则对PID三个参数进行在线调整。
系统采用此算法计算量较小,易于用单片机来实现,提高了位置环的整体调节效果和实时性,具有良好的动静态性能。
将位置偏差统一到一定范围内,规范后为△S,
及PID三个参数的规范公式如下:
△S是设置的一个阈值
模糊法则可由控制经验加以总结,也可从所期望的阶跃特性中进行抽取。
从系统的稳定性、响应速度、超调量和稳态精度各方面考虑,三个参数的调整需考虑其相互之间的作用与关系。
程序流程图如图2所示。
图2位置环流程图
2、速度反馈
速度环与系统硬件没有直接的关联,反馈速度由舵面位置的微分得到,这对反馈的位置信号有较高的要求。
获得较平滑、具有良好实时性的反馈速度信号是较关键的一步,但由于外部干扰的存在,并且相邻两个数据的采样时间间隔很短,若采用直接微分法求速度,则与实际速度会存在较大的差别,所以对位置信号采用不完全微分法求速度,以减小高频干扰。
设舵面速度为v,位置为S,则有:
引入不完全微分得:
式中:
p为微分算子,k为比例系数,
为惯性环节时间常数。
离散化后得:
T为广义采样时间;
不完全微分法是采用一阶低通数字滤波器对位置信号滤波后微分,因此具有一定的延迟。
速度环算法由bangbang控制与积分分离PI算法相结合。
选取bangbang控制点应与刚切入的P控制时的输出量相等,以改善输出的连续性与减小跳跃性。
程序流程图如图3a所示。
3、电流反馈
当电流发生变化时,系统须做出迅速响应,使输出电流快速跟踪给定信号的变化。
由于电流响应速度很快,电流环算法采用积分分离PI算法,以避免微分因子造成电流环震荡。
电流环产生PWM调制信号,控制功率驱动来实现电流调节的目的。
PI控制公式如下:
|E|为积分分离阈值,Iref为电流给定值,
为电流反馈值,
为给定电流与反馈电流之差。
当
即电流误差较小时,采用PI算法以保证电流环精度。
|时,采用P控制来保证电流环的快速性并减小超调。
程序流程图如图3b所示。
图3速度环与电流环流程图
4、试验结果
系统接收飞控计算机发送周期7~20ms,有效占空比0.9~2.1ms的PWM控制信号,输出最高堵转力矩350Nm,无载荷速度180(.)/s,标准设置最大偏转角为+/-65.,堵转电流750mA。
系统工作速度-扭矩、工作电流-扭矩曲线如图4所示。
图4速度、电流与扭矩图
位置环调试结果如图8a所示的方波跟踪响应,表明系统有良好的跟踪效果,但仍需改善硬件结构与进一步优化算法。
图5b、图5c反应了速度环的跟踪效果。
图5b为图5c的局部放大,说明了速度环调节的响应速度,对于无负载3200r/min的给定阶跃能在100ms内达到稳态。
图5d为电流环0.1~0.3A的方波跟踪响应,可看出动态性能良好。
图5三闭环调试结果
本系统电路简单、成本低、控制精度高、小型化的特点可满足小型无人机的要求,现已通过某型无人机的现场联调,试验证明本系统可节约大量联调时间,加速了无人机的研发速度。
同时,本系统对深入了解PIC单片机及直流伺服电机等控制系统也有很好的借鉴作用。
[1]..李月中.电动舵机的集成设计与控制[J].北京:
北京交通大学.2006(12):
5-30.
[2]..MykePredko著.PIC微控制器基础与实践[M].科学出版社.2007.
[3]..吴春英.某型无人机飞控系统控制律设计与实现[D].西北工业大学硕士学位论文,2005.
[4]..李学海.PIC单片机实用教程基础篇[M].北京:
航空航天大学出版社,2007.
[5]..李学海.PIC单片机高级实用教程[M].北京:
航空航天大学出
版社,2007.
[6]刘仁.PIC软硬件系统设计[M].北京:
电子工业出版社,2005.
[7]付丽,刘卫国.单片机控制的多路舵机用PWM波产生方法[J].微特电机,2006,
(2):
28-30.
[8]贺灿花,杨向宇.无刷直流电动机模糊神经网络PI控制方法。
[J]微特电机,2005,(8):
24-27.
[9]..岑汉彬,杨宜民.足球机器人中电动机控制系统的研究[J].微特电机.2005,
(1):
11-13.
[10]..KimJH,OhSJ.AFuzzyPIDControllerfornonlinearanduncer..tainsystems.SoftComputing,2000(4):
123-129.作者简介:
王志远(1983-),男,硕士研究生,研究方向为现代控制理论及应用,从事无人机舵机控制系统研究。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLC 单片机 控制 核心 无人机 舵机 控制系统 设计 实现