以STM32F4为控制核心的四轴航拍飞行器的设计与实现

日期: 2024-05-06 01:19:14 |   作者: nba体育吧直播

  本设计是基于STM32F4的四轴航拍平台。以STM32F407为控制核心,四轴飞行器为载体,辅以云台的航拍系统。硬件上由飞控电路,电源管理,通信模块,动力系统,机架,云台伺服系统组成。算法上采用简洁稳定的四元数加互补滤波作为姿态解算算法,PID作为控制器,实现飞行,云台增稳等功能。具有灵活轻盈,延展性,适应性强好等特点。

  四轴飞行器是一种利用四个旋翼作为飞行引擎来进行空中飞行的飞行器。进入20世纪以来,电子技术快速的提升四轴飞行器开始走向小型化,并融入了人工智能,使其发展趋于无人机,智能机器人。

  四轴飞行器不但实现了直升机的垂直升降的飞行性能,同时也在某些特定的程度上降低了飞行器机械结构的设计难度。四轴飞行器的平衡控制管理系统由各类惯性传感器组成。在制作的步骤中,对整体机身的中心、对称性以及电机性能要求较低,这也正是制作四轴飞行器的优势所在,而且相较于固定翼飞机,四轴也有着可垂直起降,更加灵活,易维护等优点。

  在实际应用方面,四轴飞行器可以在复杂、危险的环境下能够实现特定的飞行任务,也能够适用于监控交通,环境等。比如,在四轴飞行器上安装甲烷等有害化学气体的检测装置,则可以在高空定点地检测有害化学气体;进入辐射区检查;做军事侦察;甚至搬运材料,搭建房屋等等。本设计利用四轴搭载云台实现航拍任务,当然通过改装也可以执行其他任务。

  本设计主要研究了四轴飞行器的姿态结算和飞行控制,并设计制作了一架四轴飞行器,对关键传感器做了标定,并利用用matlab分析数据,设计算法,还进行了单通道平衡试验调试,进行试飞实验取得了一定的效果。

  本设计采用STM32F4作为核心处理器,该处理器内核架构ARM Cortex-M4,具有高性能、低成本、低功耗等特点。

  主控板包括传感器MPU6050电路模块、无线蓝牙模块、电机启动模块,电源管理模块等;遥控使用商品遥控及接收机。控制芯片捕获接收机的PPM命令信号,传感器与控制芯片之间采用IIC总线连接,MCU与电调之间用PWM传递控制信号。

  软件算法才用基于四元数的互补滤波解算姿态叫,控制算法才用经典PID控制器控制云台舵机和四轴电机。如图2-1为本设计总体框图。

  针对前面提出的整体设计的具体方案,本设计采取模块化策略,将各个功能部分开来设计,最后组合起来。

  四轴飞行器要求整体设计质量较轻,体积较小,因此在电池的选取方面,采用体积小、质量轻、容量大的锂电池供电最合适。系统的核心芯片为STM32F103,常用工作电压为3.3V,同时惯性测量传感器,蓝牙通信模块的常规供电电压也为3.3V,锂电池的电压为11.4V,要使系统正常工作,需要将11.4V的锂电池电压稳压到3.3V。常用的78系列稳压芯片已不再适用,一定要选择性能更好的稳压芯片。

  经综合考虑,本电路采取LM1117-3.3和LM2940-5电源部分的核心芯片。电池电源经过LM2940-5降到5V后在输入LM1117-3.3稳压为3.3V。由于电机部分电流比较大,故在飞控电路部分加入了过流保护,使用500mA的保险丝。电路图如下。

  软件设计上由控制核心STM32F4读取传感器信息,解算姿态角,以姿态角为被控制量融合遥控信息后,输出到四个电机及两个舵机以完成四轴飞行控制和云台的稳定补偿。下图是软件流程:

  根据前面给出的姿态解算方程与四元数,即可得到姿态计算系统的计算原理如下图(4-1)

  本设计基于互补滤波的思想上完成的四元素算法,其核心思路为利用加速度测得的重力向量与估计姿态得到重力向量的误差来矫正陀螺仪积分误差,然后利用矫正后的陀螺仪积分得到姿态角。

  首先不妨设处理后的加速度数据为:ax,ay,az,单位m/s^2。加速度计的向量为 (ax,ay,az)陀螺仪数据为:gx,gy,gz,单位rad/s。陀螺仪向量 (gx,gy,gz),由式(4-5)可得由载体到导航坐标系的四元数形式转换矩阵为:

  根据余弦矩阵和欧拉角的定义,地理坐标系的重力向量,转到机体坐标系,是 中的第三列的三个元素,即

  然后利用向量的叉积, 可视为误差向量,这个叉积向量仍旧是位于机体坐标系上的,而陀螺积分误差也是在机体坐标系,而且叉积的大小与陀螺积分误差成正比,正好拿来纠正陀螺。由于陀螺是对机体直接积分,所以对陀螺的纠正量会直接体现在对机体坐标系的纠正。用上面得到的结果校正陀螺仪:

  再利用二阶毕卡法解四元数微分方程(4-6),更新四元数为下一次计算做准备。毕卡二阶算法为:

  通过以上算法我成功得出了飞行器的姿态角,在开启电机的情况下,角度误差在+/-2°以内,满足了控制要求。姿态计算效果如下图所示,其中红色和蓝色是直接由加速度计算出的俯仰角和横滚角,青色和黄色为姿态结算后的俯仰角和横滚角。由图中数据可看出,解算的姿态角不仅能即时的反应角度变化切曲线平滑,说明姿态解算算法有效。4.2.控制设计

  由于四轴飞行器独特的机械结构,即结构上的对称设计,使得四轴在俯仰角的控制欲横滚角的控制上有这近乎相同的控制特性,且两者相对独立。四轴飞行器的俯仰,横滚,偏航,升降能够最终靠四个输入量来控制。通过设定一个期望角度,调整电机转速,使得测得的姿态角稳定在期望角。控制律的设计主要是采用是闭环控制。以姿态角做为被控制量,采用经典的PID控制算法。

  四轴飞行器系统是一个时变且非线性的系统,采用传统PID算法的单一的反馈控制会使系统存在不同程度的超调和振荡现象,没办法得到理想的控制效果。本文将前馈控制引入到了四轴飞行器系统的控制中,有效地改善了系统的实时性,提高了系统的反应速度;并且根据四轴飞行器系统的特点,对数字PID算法进行了改进,引入了微分先行环节,改善了系统的动态特性;使得控制器能够更好地适应四轴飞行器系统的实际情况。

  在姿态角的控制中,本设计将控制器捕获到的遥控器信号转换为一个角度,作为期望角,与解算出来的测量角作差,得到偏差error。将error乘以一个比例系数kp。在只有kp作用下,系统会有静差所以考虑利用积分ki控制消除稳态误差。但积分控制会降低系统的动态性能,甚至造成闭环系统不稳定,因此要对积分进行限幅,防止积分过大。

  对于微分,如果采用传统的D方法,在人为操纵四轴时会产生输入的设定值变化频繁且幅度较大,从而造成系统的振荡。对人为控制十分不利,未解决设定值的频繁变化给系统带来的不良影响,本文在姿态角控制上引入了微分先行PID算法,其特点是只对输出量进行微分,即只对陀螺仪角速度测量值进行微分,而不对姿态角的设定值进行微分。这样,在设定值发生明显的变化时,输出量并不会改变,而被控量的变化相对是比较缓和的,这就很好地避免了设定值的频繁变化给系统造成的振荡,明显地改善了系统的动态性能。控制周期定为4ms,姿态控制系统示意图如下:

  通过前面一章的介绍我们已的达到了俯仰,横滚,航向三个控制量,然后将它们分别输入三个独立的如上图所示的PID控制器,我们大家可以得到三个PID输出:pid_roll,pid_pitch,pid_yaw将这三个输出量做简单的线性运算输出给电机。部分代码如下:

  PID参数的整定是PID控制的关键环节,直接影响到控制的效果。故一个PID设计的好不好往往要看其参数能否调节好,本设计的PID参数调节采用凑试法。凑试法是通过实际的闭环系统,通过观察系统的响应曲线,在本设计中通过观察被调量,PID输出,设定值三条曲线,判断出kp,ki,kd对系统响应的影响,反复尝试,最终达到满意响应,进而达到确定控制参数的kp,ki,kd的目的。在参数调节过程总遵循以下原则[17]:

  确定比例增益P时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。

  比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的 Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。

  积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。

  (5)最终调试好的标准应该是,PID输出曲线在有一个阶跃响应来是,响应一大一小两个波,小波是的四分之一。

  四轴飞行器的PID整定,我们第一步四轴固定在单轴平衡平台上,让飞行器完成单轴平衡,主要观察姿态角的(1)稳定性,能否平衡在期望角度;(2)响应性,当操纵命令改变时,四轴能否即时的响应期望的变化;(3)操纵性,由操纵员感受四轴的姿态是否已与操纵,会不会产生响应过冲。

  在参数调整时,先调P,将I,D给0,先给一个小值P1,如果飞行器不能稳定在一个角度,则P1给小了,下一次给一个较大值P2,如果飞行器产生震荡则证明P2给大了,那么合适的P在P1-P2之间,反复试验几次可找到P震荡的临界点P0,然后保持P0不变按照调P的方法来调D,D是用来消除误差的,当抖动差不多被消除时,此时我们有较合适的P0,D0,在这两个值附近再试几组参数,观察效果得到最优参数。调好P,D后此时四轴的稳定状态与期望状态间也学会有静差,接下来加入I,参数有小到大,当静差差不多被消除时,我们再对P,I,D三组参数在小范围内联调。最后确定恰当的积分限幅值,完成整个PID参数的整定。5.系统创新

  采用STM32F407这样一款高性能芯片作为控制核心,计算快速,扩展空间大。

  姿态算法采用基于四元数的互补滤波,姿态角无奇点,比起卡尔曼李春波等高端算法有着计算量小的特点且能投入到正常的使用中,大大节约了cpu计算时间,也降低了对cpu的性能要求。

  利用四轴作为云台载体有着灵活机动,可让摄像头获得比较好的视野,且云台能消除四轴机体抖动。

  在完成控制器底层的硬件驱动后,开始姿态角算法的调试。利用蓝牙模块将解算出的姿态角数据发回上位机,摇动四轴机体,观察上位机数据曲线与姿态演示立方块。

  图6-1 姿态角数据对比曲线中黄色和蓝色为直接由加速度计算出的俯仰与横滚角,红色和青色为姿态解算后的姿态角,可明显看出直接由加速度计算出的姿态角噪声大,不平滑,不能真实反映姿态角的变化。而由四元数算法解算后的姿态角反应快,噪声小,足以满足控制要求。光观察曲线并不直观,还可以观察上位机中的立方块,当小立方块的姿态与四轴机体能够保持一致变化时说明姿态解算良好。通过以上手段可知姿态角解算满足需求。

  在第五章,已经针对四轴飞行器进行了PID的控制设计,但为得到实际使用的PID控制参数我们还一定要通过反复试验来整定出最优参数。为了方便参数的调试,在本设计过程中才用了先调平衡一个方向,再调另一个方向,最后联达到平衡的效果。为此设计了如下图所示试试验平台:

  在调试过程中,为了尽最大可能避免频繁的下载程序带来的不变,采用串口蓝牙发送参数的做法,大幅度的提升了调试效率。当俯仰与横滚两个轴都能够独立的平衡时,可以脱离单轴平台开始在空中进行航向角的稳定性调试。

  6.2.四轴飞行器的试飞当前面的各项调试都完成了之后,就准备要进行试飞实验。飞行试验是对控制管理系统的功能和技术指标做验证的最终手段,也是衡量四轴设计是否成功的重要标志。

  试飞前要确保系统各部分工作正常,稳定。检查各个接口连接是不是正确,各部件安装是否牢固,电池的电量是否充足。打开电源前检查遥控器油门是否在最低位置,起飞前先轻门确保电机工作正常。一切准备就绪,即可进行试飞。将四种飞行器放在水平地面上,开始启动姿态初始化程序,听到电调提示音后,缓慢增加油门,螺旋桨转速上升,将飞机拉离地面。由真实的情况可看出当姿态发生倾斜时,姿态解算及PID控制能够及时作出调整电机转速,稳定飞行姿态。飞行器还能根据遥控指令的变化完成相应的动作。本此设计的四轴飞行器可实现垂直升降的要求,能保持姿态的稳定,机体晃动小,在微风的干扰下能自动调整姿态,确保平稳飞行,且系统响应快,航时大概在8分钟。因此本次的设计是有效的。

  关键字:引用地址:以STM32F4为控制核心的四轴航拍飞行器的设计与实现

  下一篇:采用DSP与STM32的智能型伺服控制器的软硬件设计及性能测试分析

  备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数 void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF) * This GPIO_AF can be one of the following values: * @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset) * @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0

  工程代码:,密码:fhh2 (一)概述 STM32F407有三种类型的定时器,分别是基本定时器、通用定时器、高级定时器。定时器的PWM波输出是通用定时器、高级定时器才有的功能,PWM波的输出驱动,是在基本定时器的基础功能上,把定时器的计数器与一个比较值作比较,输出高电平或者低电平的过程。 (二)通用定时器框架 通过图中能够准确的看出,图中上半部分是基本计数器的功能(通用定时器与基本定时器的计数器功能差别在于多了几种时钟输入的方式),图中下半部分是通过定时器的”捕获输入/比较输出通道“(TIMx_CH1或TIMx_CH2),通过

  07ZGT6学习之定时器PWM波输出 /

  买了块STM32F429I-DISC1准备搞点稍微复杂点东西,比如LCD驱动,摄像头驱动,DSP之类。 先搞得是LCD驱动,F429提供了LTDC接口,就应该直接可以用RGB的方式驱动屏幕,而用RGB方式就需要有比较大的RAM,但一般MCU的板载RAM都是很小的,都是通过外接SDRAM的方式来进行的,而SDRAM就是跟电脑外接DDR内存的原理是一样的。F429板载了一颗8Mbyte的SDRAM。 关于了解SDRAM的一些常识,看了一篇doc,“高手进阶,终极内存技术指南——完整.doc”,里面讲了很多SDRAM的时序和参数。 SDRAM原理:有行地址,列地址,地址线等等。还有读取每个区块就是Bank的时候先定位行地址然后定位

  随着现代通信技术的发展,通信测试仪器不断推陈出新。各种新型设备对系统的实时响应能力的要求慢慢的升高,一种通信测试仪器的实时响应性能,就成为系统设计能不能成功的重要的条件之一。笔者曾在多个通信测试仪器项目中,成功地应用ARM处理器、C51单片机等为主控芯片的嵌入式系统,实现了对仪器相关模块的实时控制功能。因此提出一种在某通信测试仪器中使用C51单片机来实现实时控制的设计的具体方案。 1 硬件设计与实现 1.1 总体方案设计 在该通信测试仪器中,实时控制模块主要实现对射频接收频综、射频发生频综、滤波器组件、射频输入模块、射频输出模块等实时控制作用。对射频检波信号进行A/D转换以获取数据。与上位计算机进行通信等功能。 根据待实现的系统功能要

  设计 /

  之前挖了图解freeRTOS的坑,挖了坑就得填。今天就从使用开始,先把freeRTOS用起来。先聊一聊在STM32F407上的如何电灯,如果只用freeRTOS点灯,无疑有点杀鸡用牛刀的感觉。但是想用freeRTOS做产品,先照类似步骤则可以验证最小系统,验证freeRTOS是否能正确跑起来,再在此基础上开始做应用开发,就把任务分解了。本文主要梳理一下如何利用官方移植例子,创建一个自己demo工程,对于没用过的有点参考价值。 注:本文基于IAR for ARM 8.22.1(个人喜欢IAR),硬件采用正点原子的STM32F407探索者开发板,STLink V2。 准备工作去官网

  上跑freeRTOS /

  前言 最近一段时间在玩极海的APM32F407系列的MCU,在研究一段时间后发现其资源和意法半导体的STM32F407不相上下。通过对比两者的数据手册和参考手册,我发现APM32F407替代STM32F407绰绰有余。我拿出了我吃灰已久的一块开发板“启明欣欣 IMT407 V5.1”(淘宝搜索“启明欣欣”)。预计将开发板上的STM32F407芯片替换成APM32F407的芯片,看看会发生什么样的事情。 本文记录一下我使用APM32F407替代STM32F407制作的一个小demo(使用SPI外设读取W25Q128)。该demo使用原开发板电路,看看将主控换成APM32F407后看看能不能够做到pin对pin的完美替代。 本文使用环境

  07记录 /

  最近一年多开始使用STM32F4系列芯片,在使用开发板、评估板的时候一切正常,但当自己做板子的时候事故频发,最典型的就是无法启动、无法刷机,现将遇到的几个无法启动的缘由分析如下: 1、芯片引脚短路 这是最典型的现象,也是最常见的原因,一般不工作的时候第一反应就是检查是不是发生短路,短路引发芯片无法正常工作。 2、芯片VCAP引脚没有接电容 有一次自己做的板子,忘记在VCAP引脚引出电容,导致一直无法工作,经查Datasheet,发现VCAP引脚是专为芯片内部1.2V区域供电所用,若没有引出电容,1.2V区域将无法正常工作。 3、芯片VDDA(VREF)引脚没有供电 一次做AD转换,为求精确,将VDDA(VREF)引脚接上一个

  系列芯片几个无法启动的原因 /

  利用和控制六足机器人 六足机器人又叫蜘蛛机器人,是多足机器人的一种。仿生式六足机器人,顾名思义,六足机器人在我们理想架构中,我们借鉴了自然界。

  原理 (胥布工)

  有奖直播:Keysight World Tech Day 2024 汽车分论坛|汽车无人驾驶与新能源

  嵌入式工程师AI挑战营(初阶):基于RV1106,动手部署手写数字识别落地

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  SECTION 2先说TC。即Transmission Complete。发送一个字节后才进入中断,这里称为“发送后中断”。和原来8051的TI方式一样,都是发送后才 ...

  问题描述通过 uint16_t ConvData[8]保存DMA搬运的ADC转换数值,但是这个数组数值的顺序总是和ADC不是顺序对应的。比如用7个通道的ADC,当 ...

  硬件平台:STM32F4 DISCOVERY开发板 型号:MB997A或MB997C主芯片型号:STM32F405xx,STM32F407xx, STM32F415xx, 或 STM32F417xx主要参 ...

  总线舵机是什么?基于STM32的单线总线舵机的介绍总线伺服舵机即串行总线智能舵机,实际上能够理解为数字舵机的衍生品,数字舵机与模拟舵机相比而言是控制管理系统设计上的颠覆 ...

  在初始化配置的情况下,RTC 日历时间我们默认设置一个时间点,此时备份区设置一个默认参数,表示已经设置过,后期只需要更新读取RTC-CNT ...

  综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

上一篇: 厂家直销凸轮分割器厂家
下一篇: 【48812】最新发布!各地车辆通行收费规范→

推荐阅读