您当前的位置:五五电子网电子知识单元电路驱动电路及控制电路利用STM32设计的四轴飞行器飞控系统 正文
利用STM32设计的四轴飞行器飞控系统

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

点击数:7458 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   驱动电路及控制电路
      MPU6050作为系统的惯性测量单元,是整个系统正常运行基础。MPU6050的驱动总线为IIC方式,为了程序的方便性本系统选用PB10和PB11模拟IIC来驱动。IMU读取出来的数据只是最简单的加速度、陀螺仪角速度的原始数据,需要通过进一步的处理才能得到本系统想要的姿态角度。飞控板姿态结算流程图如图10所示。
根据处理过后的MPU数据来获得当前的姿态,具体的姿态获取理论上是根据各个角度的积分得到当前的系统姿态欧拉角。本系统的设计实现是采用四元数算法对MPU6050最滤波后的数据进行计算得到最终的欧拉角。
      整个飞控系统的运行动作是通过调整飞控姿态来实现的,本系统设计在当前姿态的基础上,根据接收到的遥控器的目标姿态对空心杯电机进行基于PID算法的PWM控制调速,从而实现飞控系统的各种基本运动。飞控板会对系统惯性测量单元传感器的原始数据进行滤波,然后对滤波后的数据进行实时结算,最后根据遥控板发送来的目标信息进行计算出电机的控制增量,最后根据PID控制算法对电机进行控制输出,飞控姿态控制流程图如图11所示。                       

图10 飞控板姿态结算流程图

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


图12 遥控板软件流程图
        本系统采用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);          //将控制信号发给四轴
  
  4、结论
  
  本文描述了一个简易四轴飞行器系统的设计实现,整个方案分为遥控控制板各飞行控制板两部分,通过2.4G无线模块进行控制通信,飞控系统采用IMU系统获取姿态信息根据反馈控制算法进行电机控制从而实现飞行控制。本系统飞控板采用一体设计使得系统简单、紧凑,遥控板采用摇杆输入使系统控制体验良好,最终实现飞行器的基本运动。实践证明该四轴飞行器飞行稳定、可靠,取得了较好效果。
  
  参考文献
  
  [1]        李尧. 四旋翼飞行器控制系统设计[D]. 大连:大连理工大学, 2013.
  
  [2]        谭浩强. C程序设计教程[M]. 北京:清华大学出版社, 2010.
  
  [3]        刘火良. STM32库开发实战指南[M]. 北京:机械工业出版社, 2013.
  
  [4]        白志刚. 自动调节系统解析与PID整定[M]. 北京:化学工业出版社, 2012.
  
  [5]        朱君. 四旋翼无人飞行器控制系统设计及控制方法研究[D]. 内蒙古:内蒙古科技大学, 2012.
  
  [6]        曾勇. 四旋翼飞行器容错控制系统设计与实现[D]. 成都:电子科技大学, 2013.
  
  [7]        宋佳佳. 小型四旋翼飞行器实验平台设计[D]. 武汉:华中科技大学, 2013.
  
  [8]        刘军. 例说STM32[M]. 北京:北京航空航天大学出版社, 2011.
  
  [9]        张瑾等. 电路设计与制板Protel 99SE入门与提高[M]. 北京:人民邮电出版社, 2007.
  
  [10]        蒙博宇. STM3自学笔记[M]. 北京:北京航空航天大学出版社, 2012.
  
  [11]        刘金琨. 先进PID控制MATLAB仿真[M]. 第3版. 北京:电子工业出版社, 2011.
  
  [12]        霍罡等. 可编程序控制器模拟量及PID算法应用案例[M]. 北京:高等教育出版社, 2013.



上一页  [1] [2] 


本文关键字:飞行器  驱动电路及控制电路单元电路 - 驱动电路及控制电路