×
嵌入式开发 > 详情

单片机在小型自控飞艇的舵机控制系统中的重要性介绍

发布时间:2020-07-10 发布时间:
|

引言

平流层飞艇是一种利用轻于空气的气体(如氦气等)产生浮力作为升力的飞行于平流层区域的飞行器。它依靠飞艇内部装载的轻于空气的气体产生的静升力,通过控制飞艇上的舵面和动力装置,以较小的能耗实现在平流层的飞行。小型自控飞艇是为了验证平流层飞艇飞行特性和控制性能的小型软式试验飞艇,对其控制系统的研究是平流层飞艇研制中一个重要的过渡阶段,具有极其重要的意义。

1 小型自控飞艇舵控系统简介

舵机是小型自控飞艇执行机构中最主要的执行部件,能否快速、准确地完成对舵机的控制直接关系到飞艇的自主控制效果。因此,舵控系统成为小型飞艇自主飞行控制系统中最重要的组成部分之一,它的主要功能是接收艇载计算机发出的控制指令,实现对控制指令的采集、分析和处理,并根据控制指令向舵机输出连续可调的舵控信号,操纵艇上各舵机完成预定动作。

2 舵控系统硬件设计

本飞艇舵控系统以多片P89C2051单片机为核心,配合电源模块、驱动芯片及多路转换开关等在一块印制电路板上实现预定功能。

舵控系统主控芯片(主控单片机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时间,因而实时性较差,此处不宜使用。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机汇编语言 如何实现点亮熄灭二极管