微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 采用STM32设计的四轴飞行器飞控系统

采用STM32设计的四轴飞行器飞控系统

时间:10-29 来源:互联网 点击:

动蜂鸣器提示。遥控板的核心设计是摇杆模拟数据进行采集模块、NRF2401无线模块等设计。

采用STM32单片机ADC1的通道4、通道5、通道6和通道7进行摇杆模拟数据进行采集并转换为数字量,分别连接到PA4、PA5、PA6和PA7引脚,并且加入滤波电容减少杂质信号的影响。

遥控板采用NRF2.4G模块的驱动采用STM32的自带外设SPI2进行驱动,各个功能引脚的连接如表2所示。

NRF2.4G模块采用3.3V供电,在供电端口外加0.1UF滤波存储电容确保无线系统的稳定性。

4、四轴飞行器的软件设计

四轴飞行器的软件设计主要包括飞控板软件的设计和遥控板软件的设计。整体软件在MDK环境下采用C语言编写,采用ST-LINK仿真器对程序进行调试与下载。

3.1飞控板系统软件设计

飞控程序的主要设计思想是开机对无线模块的初始化、MPU6050的初始化、PWM电机初始化。随后对整个系统IMU继续零偏处理,随后等待进入解锁信息的传入。飞控采用定时器中断的方式,在中断中进行对时间的处理,每次中断计次标志就会自增,根据不同的中断积累即不同时间的间隔分别处理优先级不同的任务。

飞控系统每0.5毫秒中断一次,每次中断就会检查一次无线模块数据的接收,确保飞控系统的控制信息的实时性。每两次中断即1毫秒读取一次IMU单元的数据,通过滤波算法获得较为准确的系统加速度、角速度的原始数据。每四次中断即2毫秒通过IMU的原始数据计算下当前飞控板系统的姿态,然后结合遥控端的目标姿态,根据两者的差值通过PID控制算法进行对各个电机的调速控制。每200次中断即100毫秒,飞控系统会采集一次电池电压,然后把电池电压发送给遥控板,用来高速操作人员当前电压的大小。

MPU6050作为系统的惯性测量单元,是整个系统正常运行基础。MPU6050的驱动总线为IIC方式,为了程序的方便性本系统选用PB10和PB11模拟IIC来驱动。IMU读取出来的数据只是最简单的加速度、陀螺仪角速度的原始数据,需要通过进一步的处理才能得到本系统想要的姿态角度。

根据处理过后的MPU数据来获得当前的姿态,具体的姿态获取理论上是根据各个角度的积分得到当前的系统姿态欧拉角。本系统的设计实现是采用四元数算法对MPU6050最滤波后的数据进行计算得到最终的欧拉角。

整个飞控系统的运行动作是通过调整飞控姿态来实现的,本系统设计在当前姿态的基础上,根据接收到的遥控器的目标姿态对空心杯电机进行基于PID算法的PWM控制调速,从而实现飞控系统的各种基本运动。飞控板会对系统惯性测量单元传感器的原始数据进行滤波,然后对滤波后的数据进行实时结算,最后根据遥控板发送来的目标信息进行计算出电机的控制增量,最后根据PID控制算法对电机进行控制输出。

3.2遥控板系统软件设计

遥控板的作用就是把操作人员的操作动作转化成信号传给飞行控制板,同时将一些控制信息和飞控板传回来的信息进行实时的显示和处理。飞控板摇杆数据的采集用到了STM32的ADC功能STM32F103xx增强型产品内嵌2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,可以实现单次或扫描转换。而且STM32的ADC可以采用DMA通道,这样可以进一步的节省硬件资源,加快系统实时性。采用SPI1驱动NRF无线模块,进行与飞控板的数据通信。

本系统采用STM32的ADC1的通道4、通道5、通道6和通道7进行摇杆模拟数据进行采集,ADC和DMA的配置代码如下:

ADC_Configuration(); //ADC 功能配置

DMA_Configuration(); //DMA 功能配置

下面是ADC和DMA的启动和时能代码如下:

ADC_SoftwareStartConvCmd(ADC1, ENABLE); //启动 ADC1 转换

DMA_Cmd(DMA1_Channel1, ENABLE); //启动 DMA 通道

采用STM32外设SPI1驱动NRF2.4G模块,SPI初始化代码如下:

Spi1_Init();

采用无线模块的通道40进行通信,2401初始化函数如下:

Nrf24l01_Init(MODEL_RX2,40); //通道40

2.4G无线模块NRF2401的接收函数如下:

Nrf_Check_Event(); //读取NRF2401数据

通过2401将控制信号发送,发送函数如下:

NRF_TxPacket_AP(NRF24L01_TXDATA_RC,32); //将控制信号发给四轴

5、结论

本文描述了一个简易四轴飞行器系统的设计实现,整个方案分为遥控控制板各飞行控制板两部分,通过2.4G无线模块进行控制通信,飞控系统采用IMU系统获取姿态信息根据反馈控制算法进行电机控制从而实现飞行控制。本系统飞控板采用一体设计使得系统简单、紧凑,遥控板采用摇杆输入使系统控制体验良好,最终实现飞行器的基本运动。实践证明该四轴飞行器飞行稳定、可靠,取得了较好效果。

  • STM32单片机中文官网
  • STM32单片机官方开

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top