赞
踩
目前我接触过的单片机可用做四轴主控的有STM32的F1和F4系列、MSP430、C2000。
首先说STM32,现在很多市面上的飞控都是使用STM32系列芯片,主要是它的开源资源多,网络上也有很多移植好的算法可供下载,你可以很轻易的找到对应的源码和相应的教程,若你遇到了一些无法解决的问题,也有很多的论坛和博客可以供你去发帖询问、讨论,很适合四轴的开发使用。
再来说MSP430,430这个东西吧,我不喜欢,它除了低功耗方面很厉害之外,其余的方面都不适合做四轴,但是有些竞赛偏偏就限制你使用它。而且当你去学它的时候你会发现,网络上关于它的资源大多不详细,给初学者造成很大的阻碍,我不建议使用。
再来说c2000,c2000这个东西,总体来说就两个字,真香!c2000就是为了适应快速数据处理而生的,特别是它的增强型PWM(EPWM)简直是四轴制作的福音!至于资料方面,c2000的开发有多专业公司在做,我了解的有中科浩电、锡月,这些公司都提供全套的资料(当然要花钱买了),包括IDE和程序源码、上位机、程序构图、地面站、视频教程等,很适合新手使用。
虽然c2000很好,但是鉴于本人的习惯,我最终选用STM32。
刚开始的时候打算用空心杯做一个小四轴,于是想到驱动的问题,光靠单片机的那一点电流肯定不行呀,我就上网去找空心杯的驱动电路,网络上的空心杯驱动电路大多是这样的:
但是我手头上没有MOS管,于是把MOS管改成了三极管,结果没驱动起来…。没办法,小四轴的计划就这么破产了。
接着我就换用了无刷电机,无刷电机需要用到电调驱动,正好我手头上有电调,然后我就焊接了一块电调转接板,欢欢喜喜的用STM32驱动,结果又没有驱动起来,这就尴尬了,然后我想到是不是STM32的PWM输出出了问题,于是我把输出管脚接到示波器上,发现输出波形正常,那问题出在哪呢,后来我在网上找到了问题所在,原来电调使用前必须要先解锁,即需要先给出一个最低油门再给出一个最高油门,而且大多数电调接收PWM的接收频率为50HZ,即周期为20ms,且高电平维持1ms时电机停转,2ms时电机满速转动。这就简单了,于是我把输出PWM输出频率改为50HZ,重新编写了控制PWM输出占空比的程序,使最低油门对应1ms,最高油门对应2ms,然后有编写了一个解锁程序,下载上电后,电机成功驱动
在选用陀螺仪时我稍微纠结了一下,到底是用MPU6050呢还是用MPU9250呢,MPU6050我用的次数比较多,用的熟练,而且驱动网络上有很多现成的,不用再自己写了,但是它没有MPU9250精确,MPU9250可以读取地磁数据用于纠正陀螺仪数据,可以使把姿态角的偏差压缩到最小,而且网络上它的驱动也很多。
于是我选择了6050,哈哈~~,还是习惯的力量强大。
接着我在使用6050的过程中又发现了很多问题,最大的问题就是姿态角数据不稳定,波动很大。我检查了寄存器的配置,电路的连接,以及姿态角的解算算法等等方面,依旧没解决这个问题。后来我在读MPU6050的官方文档时发现了问题,MPU6050的供电电压必须是稳定的3.3v,电压不可产生大幅波动,这就决定了MPU6050最好使用单片机供电,于是更换供电方式后,初始化耗时和数据波动都有减少,但是还是不稳定,于是继续读官方文档,又发现了一点,MPU6050这款芯片自带DMP处理器,这就很棒了,根据官方文档成功读取陀螺仪DMP数据,发现数据浮动在小数点后三位,数据稳定,完美解决。
为什么要使用NRF呢?因为现在无人机的通信大多数都是用这款芯片,所以要紧跟时代的脚步嘛~,NRF配置要注意几个重要的问题:1.通道配置,2.发送/接收地址的配置,3.是否设置自动应答,4.接收解码,我就被这几个问题坑了很多次,首先通道一定要一致,接收发射地址通常也要一样,一定设置自动应答,最重要的要设置到发送数据的字节长和发送数据的顺序,接收时注意NRF接收数组的类型,一般的驱动都是u8类型的,这意味一次要接收8bit的数据,要注意好数据的拼接。
还有一点NRF驱动要用到SPI协议,要注意管脚的分配,不要重复了
硬件上的调试基本上就上面那些,接下来是最主要的姿态解算。无人机想要飞的稳,姿态解算必须要写的好。姿态解算可以说是无人机的命根子。不过本人能力有限,就通俗的解释一下吧:
姿态解算必须要用PID算法来写,用PID值的变化来控制电机的转速,进而改变无人机的姿态
PID的输入参数设置为无人机的姿态角,输出为PWM占空比值。当无人机姿态发生偏移时,PID输出值变化,进而改变PWM占空比,电机转速变化,调整无人机姿态。
给大家几个参考网站:
1.https://www.bilibili.com/video/av13035245/?spm_id_from=333.338.recommend_report.5
2.https://zh.wikipedia.org/wiki/四元数 四元数维基百科
3.https://zh.wikipedia.org/wiki/向量 向量维基百科
4.http://blog.sina.com.cn/s/blog_17a4469c70102y5zc.html 姿态解算算法入门
另外本人收集了一份飞控的源码,供大家参考:
https://pan.baidu.com/s/16r42c3XSY4flt-ryeVaWPg 提取码:9zab
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。