YMFC开源小四轴
简介
非常简单易学的小四轴,只用到了两个芯片和700行代码。
简介:非常简单易学的小四轴,只用到了两个芯片和700行代码。开源协议
:GPL 3.0
描述
本项目优点
对于已经会购买飞控板、电调、电机等零件自己组装无人机的朋友来说,可以帮你更进一步,学习到飞控的核心技术。
对于研究软件无线电的朋友,这个小四轴也可以作为你研究各类无线电通信信号的基础。
工程描述
这原本是一个用于大四轴的飞控项目,由荷兰开发者Joop Brokking公布。后来我为了学习和调试更加安全,才改为了小四轴。但小四轴上也引出了引脚,可以当作大四轴飞控使用(需对飞控软件代码稍作修改)。
开发环境IDE是Arduino。
该项目主控芯片早期是Atmega328p,后期是STM32F103C8T6,目前开源的小四轴用的是后者。
姿态传感器是MPU6050。
遥控:使用航模遥控接收机实现,只要可以买到支持PPM输出的遥控器和接收机,插上去就能用。
图传:直接绑上一个模拟摄像头+发射机模块就行。图传接收机可以是直接买商用模块,或者参考视频教程第六集用软件无线电实现。
配套系列教学视频
公告 https://www.bilibili.com/video/BV1LD4y1s7Pv/
第一集(项目历史和原理图)https://www.bilibili.com/video/BV1f24y1y7oi
第二集(深入代码)https://www.bilibili.com/video/BV1cd4y1b7sd
第三集(无人机组装和测试)https://www.bilibili.com/video/BV1Td4y147aW
第四集(控制无刷电机)https://www.bilibili.com/video/BV1g14y1T7gv
第五集(从无人机到软件无线电)https://www.bilibili.com/video/BV1j24y1Q7KV
第六集(面向未来的实验)https://www.bilibili.com/video/BV1Sv4y1q75N
第七集(彩蛋——用SDR与无人机交互)https://www.bilibili.com/video/BV18P4y1e77x
更基础的原理视频
第一集 (内容介绍) https://www.bilibili.com/video/BV1Wo4y1L7Lg
第二集 (陀螺仪) https://www.bilibili.com/video/BV18h4y1n7pD
第三集 (遥控信号)https://www.bilibili.com/video/BV14X4y127wk
第四集 (电调输出) https://www.bilibili.com/video/BV1sc411P7ig
第五集 (负反馈) https://www.bilibili.com/video/BV1tk4y1s7hE
第六集 (合并代码) https://www.bilibili.com/video/BV17a4y1g7Qd
第七集 (其它无线电信号)https://www.bilibili.com/video/BV1v24y1P75L
第八集 (外场试飞)https://www.bilibili.com/video/BV1yz4y1q7yf
配套的飞控代码:
https://github.com/jamesshao8/ymfc-mini-drone
其它视频里提到的开源项目地址请参考各视频下方描述。
原理图讲解
(与原项目的原理图对比介绍可以看视频教程第一集)
上图是主控芯片STM32,它与电路的其它部分都有联系,由LDO供电,通过IIC接收MPU6050的姿态信息,接收PA0口上的遥控PPM信号,输出控制4个电机的PWM信号。除此之外,它也用模拟引脚实现了电池电压检测功能,也可以控制LED灯来显示状态,还可以通过串口与电脑相连。J1接口是下载固件时用的,下载模式时J1需要短接,正常模式下J1需要开路。
以上是MPU6050,它通过IIC接口与STM32相连,提供姿态信息。
以上是其中一个电动机的驱动电路,PWM4_LF_CW是表示这是第四个电机信号,它可以直接输出给外部的电调模块用来控制大四轴的无刷电机,也可以送到上图中的MOSFET上,用来控制接在LF这个2pin口上的有刷电机。但是控制两种不同的电机,需要对代码做一些修改,具体请看视频教程第二集。如果要控制无刷电机,硬件组装请参考视频教程第四集。
这是一个3pin的接口,用来把航模遥控器的PPM信号输送给主控,你也可以用软件无线电来自己实现遥控,可参考视频教程第五、六、七集。
这是一个4pin接口,可以用它往主控里烧写固件,也可以在正常使用过程中向电脑发送调试数据。
这是一个分压电路,可以获得与电池电压成正比的信号,然后给到主控的模拟输入口上,检测电池剩余电量。
这是两个LED状态指示灯,可以由主控的两个引脚控制。飞机在飞行过程中,用LED来显示状态非常方便。
上图从左到右是电池接口、开关、线性稳压芯片(用来给电路其余部分输出稳定的3.3V电压)。
虽然这部分放在后面,但是供电部分是最重要的,在画PCB过程中,电池口的正极先连接到了开关正极上(网络名称是VBAT),它与4个电动机对应的MOSFET相连,这几条连线必须要足够粗,否则电流不够。电池负极一般都与铺铜区相连,也就是说电路上的所有部分都有一根很粗的导线连到了负极,所以负极不会是问题,主要是正极要足够粗。
如果正极不够粗,可能会导致STM32的供电电压不够,程序跑飞。当你看到蓝色LED灯开始闪烁,代表飞控重启了,很有可能就是这个原因。我提供的资料里线宽是足够的,但是如果你要二次开发,要注意这个问题。
最后,当你根据我的资料打样生产了板子,如果不知道要下载哪个固件代码,或者在组装过程中碰到了困难,可以观看视频教程第三集。
对于飞控来说,其实主要难点还是在软件代码上,目前我的教学视频第二集虽然也是在讲飞控软件代码,但主要还是在讲我怎样做减法,删除了原项目的多余部分。将来,我还会出一集深入讲飞控原理和怎样写出对应代码的视频,如大家感兴趣,请多多点赞支持我。
评论