U1S1,2022写这个也没有意思了,但是猛然之间看到源码了,还是感觉很棒,想分享一下。
首先代码量不是很大,但是功能完善,而且是arduino编译,减少了很多底层的抽象问题。比较专注在逻辑上面。
里面的ino是没有文件的,看前面的同名文件
这个地方是驱动部分要的硬件
config文件里面是要打开的功能,具体看下面的一些常用的功能
可以搜定义,不看行数
PWM控制
航模部分使用PPM,或是PWM控制
接下来的引脚是电源和姿态。
上个图。
还有我想说下关于电机驱动这块,空心杯电机驱动电路:
SI2302的内部电路图:
这幅图是crazyflie飞控板的电机驱动电路原理图,同样适用MWC飞控,肖吉特二极管BAT54用SS34替换(只要满足电压和电流以及通断时间就行,SS34远远大于需求,只是因为跟MOS管在同一家店所以买了),场效应管pmv31xn用SI2302替换。
场效应管是用电压控制电流,作用跟三级管类似(三极管是用电流控制电流),相比于三极管,场效应管体积更小功率更大。
肖吉特二极管的作用是续流。电机是电感元件,有阻碍电流变化的特性,控制电机转速的方法是用PWM信号控制场效应管的通断,当场效应管断开时,电机两端会产生极高的感应电压击穿场效应管,加上二极管后,电机的电流会通过二极管保持流通,防止电机产生过高的感应电压。
白色的是控制线,黑色和红色的是接电机的线。电机驱动电源部分要接一个拨动开关,防止Arduino nano上电时不受控制的转,也用于失控时给电机断电。
就是这样,ESP8266的无人机也是这样
如果config打开这个定义:
那么就会使用这样的写法,这就是功能的动态加载。
陀螺仪 地磁
IMU的信息打包
电压检测
不知道是啥
角度
这个初始化的代码太长了
这里是适配各种板子来打开串口
串口的波特率
电源的引脚,蜂鸣器的引脚
电机的驱动部分
均配置为输出模式
这个里面大量的AVR单片机的寄存器配置,我不太熟悉。
读取摇杆的设置
还有日志的打印功能需要打印什么。给上位机使用
功能开启
功能好多啊。。我研究一下,下次再写。
代码语言:javascript复制http://www.multiwii.com