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

39度创意研究所 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

相关推荐

英特尔无人机灯光秀在2018年平昌冬季奥运会上打破吉尼斯世界纪录

在2018年冬奥会的开幕式上,1218架英特尔®ShootingStar™无人机打造了奥运会历史上的....

的头像 人间烟火123 发表于 02-23 10:10 次阅读 0条评论
英特尔无人机灯光秀在2018年平昌冬季奥运会上打破吉尼斯世界纪录

解析单片机中断处理过程、中断返回、中断撤除

中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地....

的头像 玩转单片机 发表于 02-23 09:30 次阅读 0条评论
解析单片机中断处理过程、中断返回、中断撤除

无人机的飞行原理设计详解

旋翼和轮子一样,是一项神奇的发明。 四旋翼无人机更是化作了航拍机,满足了许多普通人关于天空的想象。 ....

的头像 电子发烧友网工程师 发表于 02-23 07:57 次阅读 0条评论
无人机的飞行原理设计详解

基于LM35和51单片机的温度采集数码管显示系统

温度采集显示系统电路由温度采集模块、A/D转换模块、单片机控制模块、数码管显示模块和下载模块组成。电....

的头像 电子发烧友网工程师 发表于 02-20 09:50 次阅读 0条评论
基于LM35和51单片机的温度采集数码管显示系统

美大学研究团队拟以无人机来监控羊群

美国维吉尼亚理工大学(Virginia Tech)研究团队,正尝试将无人机技术应用于监控羊群。无人机....

发表于 02-13 08:57 次阅读 0条评论
美大学研究团队拟以无人机来监控羊群

世界上最小无人机诞生,和蜻蜓一起飞翔!

从动物王国获得灵感,并付诸实践,该项目旨在创造最小的无人机。德雷珀的工程师们给蜻蜓打包了一个“迷你背....

的头像 电子发烧友网工程师 发表于 02-20 05:44 次阅读 0条评论
世界上最小无人机诞生,和蜻蜓一起飞翔!

STC12系列单片机冷启动、热启动

stc的程序分引导区和程序区。引导区的代码主要负责ISP在线烧录。而stc的冷启动顺序就是先从引导区....

的头像 beanxyy 发表于 02-12 13:51 次阅读 0条评论
STC12系列单片机冷启动、热启动

单片机复位和冷启动详细介绍

单片机冷启动很简单,关电,再上电,正常复位后,就冷启动成功。单片机冷启动其实是一个技术术语,是指单片....

的头像 beanxyy 发表于 02-12 13:38 次阅读 0条评论
单片机复位和冷启动详细介绍

STM32定时器产生PWM彻底应用

这次学习STM32花了很长时间,一个礼拜多,也有颇多收获,学习过程也有颇多曲折。这次的任务是:用ST....

发表于 02-11 11:26 次阅读 0条评论
STM32定时器产生PWM彻底应用

STC12C5201AD单片机的PWM功能的应用总结

52xxAD系列单片机的内部集成了两路可编程计数阵列模块(PCA),可用于软件定时器、外部脉冲的捕捉....

发表于 02-11 11:14 次阅读 0条评论
STC12C5201AD单片机的PWM功能的应用总结

利用单片机定时器实现信号采样和PWM控制

PWM控制方式广泛应用于各种控制系统中,但对脉冲宽度的调节一般采用硬件来实现。如使用PWM控制器或在....

发表于 02-10 17:16 次阅读 0条评论
利用单片机定时器实现信号采样和PWM控制

STM32基础PWM输出

目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控....

发表于 02-10 16:47 次阅读 0条评论
STM32基础PWM输出

人工智能对物流行业的改造成果与未来展望

今天,快递物流公司进入了一个全新的转型阶段,引领物流行业这场爆发式裂变的不仅仅是模式和资本,更是人工....

的头像 OFweek工控 发表于 02-10 00:25 次阅读 0条评论
人工智能对物流行业的改造成果与未来展望

c8051f单片机ad采样程序(附详细注释)

C8051F系列单片机已有6种产品选型,高度集成的小封装C8051F系列单片机经过优化,专门应用于消....

发表于 02-09 15:27 次阅读 0条评论
c8051f单片机ad采样程序(附详细注释)

单片机AD采样程序及其寄存器讲解

一般来说,AD有积分型的和逐次逼近型的,后都更多的被使用,所以我们一般也都是使用的这一种。说的简单点....

发表于 02-09 15:22 次阅读 0条评论
单片机AD采样程序及其寄存器讲解

pic单片机的ad转换(实例解析)

A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、....

的头像 beanxyy 发表于 02-09 14:44 次阅读 0条评论
pic单片机的ad转换(实例解析)

详细剖析单片机定时器的寄存器

标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写,现在很多 5....

的头像 电子工程技术 发表于 02-09 13:47 次阅读 0条评论
详细剖析单片机定时器的寄存器

stm32寄存器版矩阵键盘库函数(附详细注释)

新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合....

发表于 02-09 11:48 次阅读 0条评论
stm32寄存器版矩阵键盘库函数(附详细注释)

stm32矩阵键盘原理图及程序介绍

STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能....

的头像 beanxyy 发表于 02-09 11:30 次阅读 0条评论
stm32矩阵键盘原理图及程序介绍

stc52单片机键盘原理图及程序介绍

STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程....

的头像 beanxyy 发表于 02-09 11:18 次阅读 0条评论
stc52单片机键盘原理图及程序介绍