DIY高大上!用STM32单片机搞定四旋翼无人机飞控

alpha007 2017-08-09 13:52 次阅读

尝试制作这个四旋翼飞控的过程,感触颇多,整理了思绪之后,把重要的点一一记下来;

这个飞控是基于STM32,整合了MPU6050,即陀螺仪和重力加速计,但没有融合电子罗盘;

另外,四旋翼飞行器的运动方式请百度百科,不太复杂,具体不再赘述;

这是飞控程序的控制流程(一个执行周期):

 比较重要的地方:

1.i2c通信方式

因为我不是学电类专业,最开始对i2c这些是没有一点概念,最后通过Google了解了一些原理,然后发现STM32的开发库是带有i2c通信的相关函数的,但是我最后还是没有用这些函数。

我通过GPIO模拟i2c,这样也能获得mpu6050的数据,虽然代码多了一些,但是比较好的理解i2c的原理。

STM32库实现的模拟i2c代码(注释好像因为编码问题跪了):










2.mpu6050;

然后用写好的模拟i2c函数读取mpu6050,根据mpu6050手册的各寄存器地址,读取到了重力加速计和陀螺仪的各分量;

传感器采样率设置为200Hz,这个值是因为我电调频率为200Hz,也就是说,我的程序循环一次0.005s,一般来说,采样率高点没问题,别比执行一次闭环控制的周期长就行了;

陀螺仪量程±2000°/s,加速计量程±2g, 量程越大,取值越不精确;

这里注意,由于我们没有采用磁力计,而陀螺仪存在零偏,所以最终在yaw方向上没有绝对的参考系,不能建立绝对的地理坐标系,这样最好的结果也仅仅是在yaw上存在缓慢漂移。

3.互补滤波;

融合时,陀螺仪的积分运算很大程度上决定了飞行器的瞬时运动情况,而重力加速计通过长时间的累积不断矫正陀螺仪产生的误差,最终得到准确的机体姿态。

这里我们采用Madgwick提供的UpdateIMU算法来得到姿态角所对应的四元数,之后只需要经过简单运算便可转换为实时欧拉角。感谢Madgwick大大为开源做出的贡献。





4.获取期望姿态;

也就是遥控部分了,让用户介入控制。

本着拿来主义的原则,用上”圆点博士开源项目”提供的安卓的开源蓝牙控制端。

圆点博士给出了数据包格式,同过HC-06蓝牙模块接连到STM32串口1,再无线连接到控制端,这样我们就可以获得控制端不断发送的数据包了,并实时更新期望姿态角,这里只需要注意输出的姿态角和实时姿态角方向一致以及数据包的校验就行了。

5.PID控制算法;

由于简单的线性控制不可能满足四轴飞行器这个灵敏的系统,引入PID控制器来更好的纠正系统。

简介:PID实指“比例proportional”、“积分integral”、“微分derivative”,这三项构成PID基本要素。每一项完成不同任务,对系统功能产生不同的影响。

以Pitch为例:

error为期望角减去实时角度得到的误差;

iState为积分i参数对应累积过去时间里的误差总和;

if语句限定iState范围,繁殖修正过度;

微分d参数为当前姿态减去上次姿态,估算当前速度(瞬间速度);

总调整量为p,i,d三者之和;

这样,P代表控制系统的响应速度,越大,响应越快。

I,用来累积过去时间内的误差,修正P无法达到的期望姿态值(静差);

D,加强对机体变化的快速响应,对P有抑制作用。

PID各参数的整定需要综合考虑控制系统的各个方面,才能达到最佳效果。

输出PWM信号:

PID计算完成之后,便可以通过STM32自带的定时资源很容易的调制出四路pwm信号,采用的电调pwm格式为50Hz,高电平持续时间0.5ms-2.5ms;

我以1.0ms-2.0ms为每个电机的油门行程,这样,1ms的宽度均匀的对应电调的从最低到最高转速。

至此,一个用stm32和mpu6050搭建的飞控系统就算实现了。

 

39度创意研究所 技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

HH0214
大佬,求个联系方式啊,我也想搞
01-20 22:42
lfbao
openpilot和你用的硬件一样,可以参考一下
01-05 13:40
Yaphet_ran
重点针对6050部分学习一下
12-12 17:17
elecfans
蓝牙的距离是不是太短了,换个无线模块就完美了
09-21 13:23

相关推荐

介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能

在嵌入式产品中有时候需要实现对外部的模拟量进行采样处理和记录,而这就需要使用到ADC功能,将外部的模....

的头像 贸泽电子设计圈 发表于 01-24 15:41 次阅读 0条评论
介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能

大疆即将推出新款无人机Mavic Air 其性能更加优秀

据悉,大疆即将推出超便携户外旅行无人机Mavic Air,该款无人机相比之前推出的Mavic Pro....

的头像 机器人技术与应用 发表于 01-24 11:39 次阅读 0条评论
大疆即将推出新款无人机Mavic Air 其性能更加优秀

基于STM32F4x9的LCD显示系统架构设计

随着人机界面(GUI)在医疗、工业以及消费电子各应用领域需求的日益增长,高集成度、高性能的TFT液晶....

发表于 01-23 16:13 次阅读 0条评论
基于STM32F4x9的LCD显示系统架构设计

PIC单片机该如何选型?PIC单片机选型参考

本文为大家带来pic单片机的选型参考介绍以及PIC12/PIC168位单片机片机选型列表。希望能对大....

发表于 01-23 15:29 次阅读 0条评论
PIC单片机该如何选型?PIC单片机选型参考

microchip单片机入门基础知识(PIC单片机详细资料)

PIC系列单片机的硬件系统设计简洁,指令系统设计精炼,在所有单片机品种中是最容易学习、最容易应用的单....

发表于 01-23 15:11 次阅读 0条评论
microchip单片机入门基础知识(PIC单片机详细资料)

低侧电流感应用于高性能、成本敏感型应用

需要控制电机的应用通常包含某种类型的电流感应电路。感应通过电机电流的能力可以帮助设计师根据电机电流状....

的头像 人间烟火123 发表于 01-23 14:12 次阅读 0条评论
低侧电流感应用于高性能、成本敏感型应用

基于ATmega8单片机多功能实验仪设计解决方案

提出一种单片机多功能实验仪的设计方法,该方法利用ATmega8单片机的在线自编程Flash和片载外围....

发表于 01-23 11:19 次阅读 0条评论
基于ATmega8单片机多功能实验仪设计解决方案

基于单片机定时/计数器的四种工作方式的结构图解析

当TMOD中的M0=0,M1=0时,为13位计数或定时方式,其中TLi使用低5位。

的头像 MCU开发加油站 发表于 01-23 10:36 次阅读 0条评论
基于单片机定时/计数器的四种工作方式的结构图解析

高集成度编程工具软件STM32代码烧录编程实战

如今ST推出了新的高集成度编程工具软件STM32CubeProgrammer,以后就不用这么麻烦了,....

的头像 ST MCU 信息交流 发表于 01-23 09:22 次阅读 0条评论
高集成度编程工具软件STM32代码烧录编程实战

dht11与单片机连接图

DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。....

发表于 01-22 16:43 次阅读 0条评论
dht11与单片机连接图

51单片机的指令周期详细介绍

指令周期指的是单片机执行一条指令的时间。按指令执行的时间可分为:单周期、双周期和四周期(只有乘法和除....

发表于 01-22 16:18 次阅读 0条评论
51单片机的指令周期详细介绍

单片机定时器周期计算公式

定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。定时器常用作定时时钟,以实现定时检测,....

发表于 01-22 15:59 次阅读 0条评论
单片机定时器周期计算公式

单片机中各种周期的关系与定时器原理

本文介绍了单片机的时钟周期、状态周期、机器周期、指令周期这四个周期,并详细解析了定时器的工作原理。

发表于 01-22 15:46 次阅读 0条评论
单片机中各种周期的关系与定时器原理

基于8位、16位、32位单片机的区别分析

指CPU处理的数据的宽度,参与运算的寄存器的数据长度. 如果总线宽度与CPU一次处理的数据宽度....

的头像 贸泽电子设计圈 发表于 01-22 15:05 次阅读 0条评论
基于8位、16位、32位单片机的区别分析

AT89C51单片机和8051单片机有什么区别

8051单片机是最早也是最典型的产品。而AT89C51是以8051的核心电路为基础后来由ATMEL开....

发表于 01-22 09:19 次阅读 0条评论
AT89C51单片机和8051单片机有什么区别

STM32F407总线存储框架及应用设计

在使用过程中发现DMA1无法把GPIO的IDR数据传输到内存,调试过程中出现DMA1的数据流传输错误....

的头像 STM32单片机 发表于 01-22 09:22 次阅读 0条评论
STM32F407总线存储框架及应用设计

使用STM32快速开发AliOS Things硬件与软件环境

AliOS Things 是 AliOS 家族旗下的、面向 IoT 领域的、轻量级物联网嵌入式操作系....

的头像 STM32单片机 发表于 01-22 09:17 次阅读 0条评论
使用STM32快速开发AliOS Things硬件与软件环境

详细解析单片机控制继电器原理图以及其作用

单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大....

的头像 畅学单片机 发表于 01-21 09:17 次阅读 0条评论
详细解析单片机控制继电器原理图以及其作用

通过实例的3种方法来告诉你使用RTOS的好处

总而言之,适用的就是最好的,不要拒绝RTOS,在它适用的情况下,它工作得很好。

的头像 电子工程师时间 发表于 01-19 15:07 次阅读 0条评论
通过实例的3种方法来告诉你使用RTOS的好处

AT89C52跟AT89S52有什么区别?

AT89C52c系列是早期产品。不带在线编程和看们狗,新的产品为了和早期产品区别改为AT89S52里....

发表于 01-19 10:05 次阅读 0条评论
AT89C52跟AT89S52有什么区别?