简单说,这是一个我自己写的开源的小飞控。全部代码开源,全部代码简单,注释完整。飞控加上配套的四轴机体,就成了我的本科毕业设计,轻松帮我拿到学校的优秀毕业设计。
声明: 这篇小文章曾经在几个论坛发过,自己的博客搭起来后当然也少不了自己 self-plagiarism 一下。不过,如需转载请谨慎,我会追到天涯海角。
只有这几个帖子是本人发的:elecfans,RT-Thread, amobbs
至于为什么 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) 非常高。
参数 | 值 |
---|---|
陀螺仪ODR | 2kHz |
姿态解算更新率 | 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订阅链接订阅我的博客,谢谢。
毕业论文,全部程序,原理图:
百度云链接
GitHub 链接
https://github.com/majianjia/DeepBlue
放两张图片感受下:
飞控系列文章:
与飞控无关 - 在飞控中记录路径(KML)文件,并在谷歌地球上显示
敬请RSS订阅链接后续文章 :-)
问一句,记录这些费时间吗?