首页 > 代码库 > 四轴飞行器一些资料

四轴飞行器一些资料

针对购买我们套件的同学和没有买到匿名四轴套件但是想移植我们飞控程序的和还没确定用什么程序的同学,我提几个建议,都是个人看法,大家觉得对就看看,觉得不对就当没看。

首先硬件,具体比赛做什么有什么要求,我没参加比赛,了解的不太清楚,但听大家说做四周,轴距小于50,续航10分,有保护套这些

不同人不同团队有不同的硬件解决方法,我就不多讲,购买我们套件的,在程序上就会省很大力气,程序本来就是针对我们套件写的,不用移植,但是我们的飞机太小,连电池一共34G左右,续航不到5分,载重10G以下,很难满足比赛要求,我建议将套件的电极臂剪掉,我们的套件作为飞控,大家再购买一个机架,这样来组合。我们的电机控制也是PWM,可以用来接电调,但是PWM格式不对,需要修改为电调的格式。如果购买华科尔959或者美嘉欣x200这样的机架,pwm部分就不用修改,因为他们用的也是空心杯。大家要做的就是将我们提供的PID参数修改为适应大机架的。
下图为我们的飞机剪去电机臂后安装在伟力959的机架上


重点是软件部分。如果是想移植我的飞控程序,我给大家提几点个人意见。


1:先认真观看两遍我发的飞控源码讲解视频,我写的代码自认为还不太乱,功能划分还可以,希望大家理解起来不难。视频一定认真看,从头到尾讲解了我的飞控工程几乎所有用到的函数,可以通过视频了解我的飞控工程源码的架构,架构一定要理解了,方便大家移植或修改我的工程。
地址:http://www.amobbs.com/thread-5548818-1-1.html


2:然后认真观看两遍我发的上位机使用讲解视频,重点看高级收码的自定义收码怎么使用,此项功能可以将任意数据从飞控发送到上位机,并画出波形,通讯和画图都是实时的,波形图可以直观反映出变量的变化情况,对于观察滤波效果、计算结果、姿态解算等用途十分合适,大大提高调试程序的效率。
地址:http://www.amobbs.com/thread-5545923-1-1.html


3:下面开始讲移植,首先是用到的MCU外设驱动的移植,不管大家用什么开发板,
PWM要有,控制电机的,
timer要有,计时的,
读取传感器的驱动要有,用于读取传感器,对于我们使用的MPU6050是IIC,如果大家使用STM32来移植,建议使用模拟IIC,对你们来说没时间来调试硬件IIC了,如果用的我们的套件,请不要修改IIC部分,我已经为套件写好了硬件IIC驱动。
通信要有,用于输出调试信息,我们套件用的是SPI,无线用NRF24L01,大家情况不同,如果现做的话,建议使用串口透传,简单,省时间
几大功能驱动先做好,保证各个驱动正常了,开始移植后续程序


4:驱动正常后,开始移植读取陀螺仪和加速度传感器的程序,这个是飞控的关键,一定要做好做稳定了,关于不同种类传感器的初始化,建议大家下载MWC的源码看看,在senser里面,有挺多种常见传感器的初始化和读取,可以借鉴下。
此时读取传感器就要想好系统怎么运行了,我是用定时中断触发读取,1ms一次,大家不一定要用这么快,这样系统只要不出错就会运行在一个确定的频率下,读取传感器的时间间隔一直是1ms。


5:滤波,陀螺仪的数据可以不滤波,也可以参照MWC的滤波,本次=(本次*3+上次)/4,都可以。加速度一定要滤波,我是用的平均值滤波,滑动数组,20个数据,求平均,大家也可以使用其他滤波方法。


6:零偏,传感器都有零偏,这个要从传感器的采样值中减去,否则会影响计算,具体计算发放我视频里也降了,注意触发条件,我的程序默认开机是不进行零偏计算的,需要人工触发,切记。


7:姿态计算,这里是重点,因为我设置的控制频率是500hz,也就是2ms,所以是2ms进行一次姿态计算和控制输出,姿态计算使用的是四元数,也是参考网上的代码写的。四元数最终只计算ROLL和PITCH角度,因为没有磁场,YAW漂移,解决办法是YAW通过对陀螺仪积分进行计算。


8:电机控制,这里几乎是到最后了,如果用电调,PWM的输出格式一定要按电调说明书来,否则电调不工作,如果驱动空心杯,那要求不多,PWM就可以了。关于四个电机的融合,很多人不懂怎么确定,我的建议就是实验法,只保留一个姿态角的输出,然后用手倾斜飞机,看电机转速变化是否正确,依次类推,确定三个姿态角的控制量正负,这个在我源码讲解视频里也讲了。

关键的初始化函数我列一下:
Tim3_Init(500);   timer提供一个固定的触发频率
Moto_Init();        电机输出初始化
IIC初始化
MPU6050_Init();  传感器初始化

然后是几个在控制循环里关键的函数:
Prepare_Data();          准备数据
MPU6050_Read();       读取传感器数据
MPU6050_Dataanl();    对传感器数据进行处理
Get_Attitude();           姿态计算
CONTROL(Q_ANGLE.X,Q_ANGLE.Y,Q_ANGLE.Z,RC_Target_ROL,RC_Target_PIT,RC_Target_YAW);      根据姿态,控制电机输出



其实工程就这么简单,关键代买就是这些了,大家用上位机右下角的what new功能就能下载最新源码:KEIL-0811-视频所用源码.zip

衷心希望能帮到大家

四轴飞行器一些资料