基于单片机的小型自控飞艇舵控系统设计

发布者:zeta16最新更新时间:2012-01-17 关键字:自控飞艇  舵机控制  串行通讯  PWM波 手机看文章 扫描二维码
随时随地手机看文章

    平流层飞艇是一种利用轻于空气的气体(如氦气等)产生浮力作为升力的飞行于平流层区域的飞行器。它依靠飞艇内部装载的轻于空气的气体产生的静升力,通过控制飞艇上的舵面和动力装置,以较小的能耗实现在平流层的飞行。配备集成化组合导航和自主飞行控制系统的飞艇,可以实现在平流层空间准静止和常驻空自主飞行。它具有高空定点工作时间长、对地观测范围广、维修使用方便以及成本低等特点,因此可以根据任务需要在飞艇上安装相应的载荷,构成对地、对空任务平台。小型自控飞艇是为了验证平流层飞艇飞行特性和控制性能的小型软式试验飞艇,对其控制系统的研究是平流层飞艇研制中一个重要的过渡阶段,具有极其重要的意义。
1 小型自控飞艇舵控系统简介
    舵机是小型自控飞艇执行机构中最主要的执行部件,能否快速、准确地完成对舵机的控制直接关系到飞艇的自主控制效果。因此,舵控系统成为小型飞艇自主飞行控制系统中最重要的组成部分之一,它的主要功能是接收艇载计算机发出的控制指令,实现对控制指令的采集、分析和处理,并根据控制指令向舵机输出连续可调的舵控信号,操纵艇上各舵机完成预定动作。
2 舵控系统硬件设计
    本飞艇舵控系统以多片P89C2051单片机为核心,配合电源模块、驱动芯片及多路转换开关等在一块印制电路板上实现预定功能。舵控系统设计总体框图如图1所示。

 

 


    舵控系统主控芯片(主控单片机1、2)选择P89C51RA2xx型单片机,它具有8KB的并行可编程非易失性FLASH 程序存储器,并可对器件串行在系统编程(ISP)和在应用中编程(IAP)。该型微控制器是80C51微控制器的派生器件,是采用先进的CMOS工艺制造的8位微控制器,指令系统与80C51完全相同。该器件有4组8位I/O口、3个16位定时计数器、多中断源-4中断优先级-嵌套中断结构、1 个增强型UART、片内振荡器及时序电路。舵控单片机采用Atmel公司的89C2051型单片机[2],其具体性能这里不再赘述。
    电源模块采用美国国家半导体公司生产的LM2576系列产品,它是线性三端稳压器件(如78xx系列端稳压集成电路)的替代品。相比而言,它的热损耗更低、工作效率更高、输出电流驱动能力更强,同时对于电源的高频干扰还有较强的抑制作用。利用该器件只需极少的外围器件便可构成高效稳压电路,为MCU稳定可靠的工作提供强有力的保证。
    此外,为增强信号的驱动能力,在输出之前采用74LS245作为信号驱动芯片;串口电平转换采用Max232芯片。
    该系统硬件设计比较简单,值得一提的是其中的安全性设计部分,即当地面检测到艇上自动控制系统已经失效时,为确保飞艇安全返回,需要将控制方式转至遥控方式。如图1所示,当艇载计算机发生故障时,舵控系统通过无线射频接收机接收地面遥控信号,通过其输出的多通道PWM波直接控制艇上舵机,控制飞艇安全返回。此处,控制方式的转换是通过多路转换开关实现的,开关的切换信号由艇载计算机看门狗电路在检测到艇载计算机已不能正常工作时给出。
3 舵控系统软件设计
3.1 软件总体结构
    舵控系统各单片机程序均在Keil C51环境下采用C语言编写。为了保证系统的实时性及快速性,软件编写采用了主程序+任务+中断的结构。
    在三部分程序中,以主单片机1的外部中断最多,包括串口中断、与主单片机2的握手中断以及艇载计算机看门狗的外部中断,这几个中断的优先级排列顺序是:艇载计算机看门狗中断>串口中断>握手中断。主单片机1接收到艇载计算机通过RS232串口发来的信息帧后,首先进行帧识别,提取出前m个字节的数据,加上帧头帧尾后由P1口发送给主单片机2;并将第m+1个字节数据作为开关量通道控制信号由P2口输出,用作系统控制备用。
    主单片机2程序的主要任务是通过其P1口接收上位机传来的数据,提取各控制信息,在相应控制指令的前面加上地址,依次由串口发送给下位舵控单片机。
    舵控单片机的主要任务是识别控制指令和地址指令,并根据收到的控制指令(舵机占空比信号)产生PWM波控制艇上舵机。
    该系统软件设计中的关键问题包括以下几个方面:(1)控制信号流程中数据帧的接收识别;(2)舵控系统中主从单片机之间的多机通信;(3)PWM波舵控信号的软件产生方法。下面对这几个问题进行详细的阐述,并给出相应的解决方案。
3.2 软件设计中的关键问题
    (1)数据帧的串口接收及识别技术
    在舵控系统中,数据以二进制信息帧的格式进行传递。每个信息帧从标题开始都有固定的帧头、帧尾,且长度固定,其基本数据格式如表1所示。

 


    在该舵控系统的设计中,串行通讯占有很重要的地位,如艇载计算机与主单片机1之间的通讯过程。下面以主单片机1的串口接收程序为例,对串行通讯的实现过程加以说明。
    在串行通信中,接收程序的任务是数据接收、帧识别和信息提取。常规的设计方法是设置一个比较大的缓冲区。串行接收中断服务程序负责把接收到的数据压入缓冲区,当缓冲区的数据足够多时,再由主程序调用一个帧识别和解码子程序对缓冲区中的数据进行处理。这种方法的好处是中断服务程序比较短,不足之处为从一帧数据接收完毕到解码时间较长,另外对缓冲区进行管理需要占用大量的的CPU时间,因而实时性较差,此处不宜使用。
    本文采用了中断服务程序就地帧识别技术,即省掉缓冲区,数据接收、帧识别均由中断服务程序完成,之后在主程序的循环中完成数据的提取和处理。就地帧识别技术的实现机理如下:把中断服务程序看作是一个处理机,串行数据逐字节到来,程序先从数据序列中等到第一个帧头,写入该帧的存储数组,同时置标志位 flag1,接收状态推进一步;再判断下一次中断时,来到的数据是否符合第二个帧头的特征。如果符合则存入相应数组,并置相应的标志位flag2,接收状态继续推进;如果帧头两个字节均符合,则将后面来到的数据依次存入指定数组;根据已接收到的字节数判断,当符合该帧的数据部分接收完毕后,判断下一字节是否为帧尾的第一个字节,如果是则置标志位flag3;之后依据同样的方法判断帧尾第二个字节是否来到,如果已接收到,则置该帧数据已完整接收到标志 flag4,同时接收状态归零,重新开始等待帧头字符。在帧头帧尾判断期间,一旦有一项不符合要求,则将接收状态归零,以重新开始等待帧头。主程序每循环一次便对“帧完整接收到”标志进行一次判断,若为真则调用相应的数据提取子程序,并清flag4。
    串行中断服务程序流程如图2所示。采用中断服务程序就地帧识别技术的优点在于数据接收后立即进行帧识别,省去了对缓冲区的管理工作,减少了存取次数,因而节省了大量的时间,极大地提高了接收程序的实时性。同时错帧和断帧被自动丢弃,不再占用资源。

 


    图2中各标志位含义为:
    flag1——接收到帧头Head1标志;
    flag2——接收到完整帧头标志;
    flag3——接收到帧尾End1标志;
    flag4——接收到完整帧标志。
    (2)单片机多机通讯
    在舵控系统设计中,各部分间的通讯是设计的重要内容,其中主要包括单片机与上位PC机间的通讯和单片机与单片机之间的通讯。在舵控系统中,主单片机1与上位PC机通讯是通过单片机自带的一路异步串行通讯接口完成的;而主单片机1通过其P1口向主单片机2传输数据,这里不再赘述,重点介绍主单片机2如何通过其一路串口分别向下位的多个舵控单片机传送指令。
    此系统中,主单片机2作为主机,m个舵控单片机作为从机,在主机与从机的通讯过程中,串口控制寄存器中SCON中的SM2位发挥了重要作用。当其中一个舵控单片机(89C2051)的SM2位为1时,该单片机只接收地址帧,对数据帧不理睬;而当SM2位为0时,该单片机接收所有发来的消息。具体通信过程如下:
    ①首先将主、从单片机工作方式选为模式3,所有从机的SM2位开始置1,处于只接收地址帧状态。
    ②主机接收主单片机1发来的数据帧,从中提出数据部分(m个字节的指令对应m个舵控单片机),根据序号在控制指令字节前加上一个字节的地址信息。然后主机依次通过串口向下发送各舵控单片机的地址字节和数据字节。发送一帧地址信息,包含8位地址,第9位为1,表示发送的帧为地址帧。
    ③从机接收地址帧后,进入中断,将发来的地址与自身比较;地址一致的从机就是被寻址的从机,它清除SM2位,接收主机发来的所有后续帧信息(数据信息)。未寻址的所有其他从机仍维持SM2=1,对主机发来的数据帧不理睬,直到发来新地址帧;之后在下一次中断时被寻址的从机接收主机发来的数据信息(第9位为 0)。
    需要注意的是,如果对已经寻址的从机再发送地址帧,则该从机SM2=1,恢复初始状态,和其他从机竞争。
    (3)舵控信号PWM波的产生
    对飞艇舵机的控制最终是通过舵控单片机产生PWM波来实现的。通常,产生PWM波不外乎硬件和软件两种方法。考虑到舵控单片机计算任务不大,本系统中采用软件产生PWM波的方法。下面以定时器0产生PWM波为例,说明通过软件产生PWM波舵控信号的实现方法。
void timer0(void) interrupt 1 using 1
{
/*PWM波通过单片机P37口输出,定时取反*/
P37=!P37;
/*Length代表一个周期的时间*/
c=Length-c;
/*重新定义计数初值*/
TH0=-(c/256);
TL0=-(c%256);
/*判断脉宽是否在正常范围之内*/
if(c>=border1&&c<=border2)
c=a;
else
c=Length-a;
}
    在程序中,由串口中断接收上位机发送的脉宽指令,继而通过改变入口参数a来调整PWM波的脉宽,并确保脉宽输出在正常范围之内。通过该方法产生PWM波切实可行,简单有效,可以广泛应用于舵机控制信号的产生中。
4 实验结果
    实验中以FUTABA 3003舵机作为被控对象,由计算机模拟向舵控系统发送数据帧,通过示波器观察舵控信号的变化。实验结果表明,该舵控系统工作稳定,输出PWM波脉宽准确可靠,被控舵机转角线性度良好。
    本文给出了小型自控飞艇舵控系统的主要设计方法,并详细阐述了在软件设计中几个关键问题的具体解决方案。实验结果证明,该系统能够很好地完成预定功能,根据上位机发送的指令准确地对艇上舵机进行控制。
参考文献
[1] 甘晓华,郭 颍.飞艇技术概论[M].北京:国防工业出版社,2005.
[2] P89C51RA2/RB2/RC2/RD2xx中文器件手册.
[3] 王明顺.基于LM2576的高可靠MCU电源设计[J].国外电子元器件,2004,11:12-14.
[4] 刘歌群,刘卫国,卢京潮.无人机强实时性串行通讯程序设计[J].计算机应用,2005,25(1):210-212.
[5] 张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:电子工业出版社,2003.

关键字:自控飞艇  舵机控制  串行通讯  PWM波 引用地址:基于单片机的小型自控飞艇舵控系统设计

上一篇:基于RS232及红外接口的多功能通讯实验板的设计
下一篇: 基于单片机和MCP2510的CAN总线通信模块的设计

推荐阅读最新更新时间:2024-03-16 12:51

用DSP56F805 PWM模块输出高频正弦
针对Motorola DSP56F805的PWM模块中不能产生高频正弦波的缺点,根据SPWM原理,由直接面积等效法,计算出对应脉冲的起始点和终点,然后编程实现,经调试发现调制出的正弦波具有良好的特性。 DSP56F805是一种专门用来控制电机的微处理器,内部具有各种功能模块,例如,A/D转换模块、PWM模块、定时器模块等,为开发基于DSP的系统提供了很大便利。针对开发系统,Motorola为我们提供了相应的软件开发工具CodeWarrior及SDK,使得我们开发基于Motorola DSP的系统更加方便快捷。 1 问题的描述 Motorola的嵌入式SDK(Software Development Kit)是一个API、
[嵌入式]
TMS320F240与PC机串行通讯的设计
  1 引言   TMS320F240系列是美国TI公司于1997年推出的,专为数字电机控制和其它控制应用系统而设计的16位定点数字信号处理器。它将数字信号处理的高速运算功能与面向电机的强大控制能力结合在一起,从而成为传统的多微处理器单元和多片设 计系统的理想替代品。F240片内外设包括双10位A/D转换器,带有锁相环PLL时钟模块,带中断的看门狗定时器模块,串行通信接口SCI及串行外设接 口SPI,另外,还集成了一个事件管理模块EVM。因此,TMS320F240不仅具有高速数据处理能力,还具有控制和事件管理能力,可完成人机界面、与 上位机进行串行通信等功能。   2 TMS320F240串行通信接口简介   TMS320F
[测试测量]
RS485总线在智能供电系统中的应用
1 引言   本文介绍的分布式公寓智能供电管理系统以一台主控上位PC机为核心,以RS485协议为基础,通过串口连接多台下位机。下位机以TMS320LF2407 DSP为主控芯片。由于下位机要完成每个房间电压、电流信号的实时采集、电量实时计算与负载实时识别等多项任务,算法中包含FFT,计算量大,算法复杂,下位机采用DSP芯片是合理的选择。考虑到DSP原开发软件提供的数据库函数有限,故该系统将一些实时性要求不高的任务,如参数设定、波形显示、电能报表输出等交由上位机处理。本文重点介绍了系统中上下微机之间的串行通讯设计。 2 串行通信接口硬件电路设计   2.1 RS485串行通信标准及MAX485简介   RS485标准
[嵌入式]
51单片机按键直接控制舵机旋转
#include reg52.h #include math.h typedef unsigned char uchar; typedef unsigned int uint; sbit KEY1=P3^4; sbit KEY2=P3^5; sbit KEY3=P3^6; sbit KEY4=P3^7; void Delay(unsigned int s); uchar flag_0; uchar flag_1; void Delay(unsigned int s) { unsigned int i; for(i=0; i s; i++); for(i=0; i s; i++); } sbit PWM_OUT0=P2^1; sbi
[单片机]
基于PIC16C73的电子束焊机电视监视系统设计
电子束焊机具有能量密度高、加热面积小、电子束穿透深、焊接速度快、工件变形小、电子束控制方便等优点,经过几十年的发展,已经成为精密的焊接设备,从上个世纪80 年代开始,已经从尖端工业领域逐步应用到民用工业,目前已应用到汽车工业、造船、能源等许多领域。在电子束焊机对工件的焊接过程中,必须对焊接室中的工件进行合适的移位、瞄准和实时监控,因此需要电视监视系统完成这些必要的操作,用摄像头对焊接室中工件的实时情况进行摄像,然后将视频信号送到监视器中实时监视。由于工件的待焊点必须精确对准束流的下束点,因此需要对工件进行准确的移位,为此监视器上须有一个参考标记。所以电子束焊机监视系统需要在视频信号中叠加一个可移动的参考信号与焊接室图像同时在监
[单片机]
S3C2440开发板裸机程序系列09—PWM控制舵机
1. Timer1的PWM控制舵机 S3C2440的Timer0、Timer1、Timer2和Timer3具有PWM功能,以前的blog已经叙述过,详见: S3C2440开发板裸机程序系列05—定时器PWM TQ2440开发板的Timer0的TOUT0输出连接了Beep,所以,这次利用Timer1的TOUT1输出来连接舵机的控制信号。 舵机的内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。通过调整控制信号的高电平宽度,即可实现舵机不同转角的控制。 舵机控制原理详见:舵机的原理和控制 程序思路很简单: 设置GPB1为TOUT1的输出格
[单片机]
S3C2440开发板裸机程序系列09—<font color='red'>PWM</font><font color='red'>控制</font><font color='red'>舵机</font>
DSP与PC机串行通讯的设计
  1 引言   DSP 既是Digital Signal Pricessing 的缩写,也是Digital Signal Pricessor 的缩写。前者是指数字信号处理的理论和方法,后者则是指用于数字信号处理的可编程微处理器。TMS320F240 系列是在TMS320F2000TM 平台下的一种定点DSP 芯片,是专为数字电机控制和其他控制应用系统而设计的16位定点运算的DSP。它集合了DSP 的高速运算功能与电机的强大控制能力,为控制系统应用提供了一种理想的解决方案。TMS320F240 片内外设有一个16 位的同步串行外围接口(SPI),一个用于串行通讯接口的SCI 模块,双10 位A/D 转换器,带中断的看门狗定时器
[嵌入式]
并行通讯和串行通讯
在数据传输时,如果一个数据编码字符的所有各位都同时发送、并排传输,又同时被接收,则将这种传送方式称为并行通讯方式。并行通讯使用几条数据线,将数据分段同时进行传输,传输速度快,信息率高,但传送距离较短。并行通讯方式如图1所示。 图1 并行通讯示意图 在数据传输时,如果一个数据编码字符的所有各位不是同时发送,而是按一定顺序,一位接着一位在信道中被发送和接收,则将这种传送方式称为串行通讯方式。在长距离通信中,出于通信线路和中继设备成本的考虑,常常采用串行通信方式,串行通信广泛应用在单片机系统与系统和外围设备之间的数据传输过程中。串行通讯方式如图2所示。 图2 串行通讯示意图
[单片机]
并行通讯和<font color='red'>串行通讯</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved