简单说,这是一个我自己写的开源的小飞控。全部代码开源,全部代码简单,注释完整。飞控加上配套的四轴机体,就成了我的本科毕业设计,轻松帮我拿到学校的优秀毕业设计。


声明: 这篇小文章曾经在几个论坛发过,自己的博客搭起来后当然也少不了自己 self-plagiarism 一下。不过,如需转载请谨慎,我会追到天涯海角。
只有这几个帖子是本人发的:elecfansRT-Threadamobbs
至于为什么 amobbs 我不想多说,别去就好。

以上


虽然我的毕设题目是:《四轴飞行器的控制》,但飞行器的算法都是用最基本的算法,更复杂的是如何协调好各个任务。

而让我自己感到更加有价值的部分是如何在 RTT 上运行一个飞控并较好的协调各个模块的工。希望能给学习 STM32 和 RT-Thread 的同学一个参考,也希望 RTT 能越做越好。

四轴断断续续做了5个月,因为这几年都做类似的东西,所以做起来难度不大,我的目标是够用就行。而对于飞控,是我一直从大一到大四的学习研究过程,持续做了四年。

主要参数如下:

参数
空机重量390g
起飞重量(11.1V 2200mAh)550g
续航时间20分钟
载重能力200g
悬停力效率>10g/w
电机2206 kv1200
8043
单个电机最大推力290g
传感器型号
陀螺仪MAX21000
加速度计ADXL362
磁阻HMC5983
气压计MS5611

传感器全部使用 SPI 接口,软件利用 RTT 的 SPI 驱动,所以 ODR (Output Data Rate) 非常高。

参数
陀螺仪ODR2kHz
姿态解算更新率1kHz
控制更新率1kHz
电调控制更新率1kHz
CPU 占用率50~70%*

*:取决于是否需要高速记录 log 到 SD 卡。

全机一共9个微控制器,主控芯片为 1 个 STM32F4,其他的为 STM32F1 (电调,电源管理,传感器终端,接收机 PPM 解码器等等),全部运行RTT,全部使用CAN BUS 通信。

飞控本身集成度较高(集成 10轴传感器,GPS,12路PWM输出,1路 PPM 输入,1路 UART,1路CANbus),在没有其他模块的情况下也可以单独完成飞行任务。拓展模块包括电源板,电调板,各个传感器,PWM解码模块等,因为有了CAN Bus,使用很方便,论文内有详细说明。

电调为自制兼容 ESC32的 硬件(感谢开源模型兴趣组的群主提供了 ESC32 的原理图)

软件上在 ESC32 与硬件之间加入 RTT 层,劫持了PWM更新函数,从而实现控制数据流使用双向的
飞控 <-> CANBUS <-> RTT <-> ESC32
代替了传统单向的
飞控 -> PWM -> ESC32
数据沟通速度大幅度提高,信号延迟降低非常多(50Hz 对比 1000Hz),提供了反馈的能力。

论文里面提到几个新的思路,包括虚拟终端,大的PCB机架+电路,单总线在四轴上的应用,都是我在以前的制作中,感觉非常不方便后,提出的解决方案,在实际中也帮我省了很多精力去调试。

之后的文章,将根据论文逐步分析一些代码和思路。如果对你有帮助,请使用页脚的RSS订阅链接RSS订阅链接订阅我的博客,谢谢。

演示视频链接

毕业论文,全部程序,原理图:
百度云链接

放两张图片感受下:

飞控系列文章:
与飞控无关 - 在飞控中记录路径(KML)文件,并在谷歌地球上显示

与飞控无关 - 记刚开始弄飞控那会儿(上)

与飞控无关 - 记刚开始弄飞控那会儿(下)

敬请RSS订阅链接后续文章 :-)