[深入浅出多旋翼飞控开发]预备篇][一][元器件选型及飞控电路设计]
作者:王伟韵
QQ : 352707983
Github
因论坛关闭,迁移该文章至博客。
要让飞控程序跑起来,首先我们得要有一个硬件实体,也就是我们的飞控板。说实话,飞控电路可以很简单,单纯由几个简单的元器件组成,即使是刚学会画PCB的大学生,也能像模像样地设计一款飞控出来。接下来的这个飞控板,暂且命名为天穹V3,也将会由我这个连半桶水都算不上的硬件工程师来设计。
而要设计一款飞控,第一个工作便是元器件选型,即主控芯片和主要传感器的选型。
十年前,飞控届的前辈们只能在资源少得可怜,运行慢如蜗牛的8位AVR单片机上苦苦挣扎,而如今32位的Cortex-M单片机被用得飞起,速度远超当初,极大方便了我们的开发工作。当然,类似于STM32之类的32位ARM单片机,也仅仅是相对而言快了不少,若碰上了更上层的运算密集型应用也要歇菜。不过主控的选型,要进行多方面衡量,而不仅仅是性能,如价格、购买的便利性、开发参考资料等,而且DIY飞控板时芯片需要自己动手焊接,那类似于BGA之类封装的芯片便可以直接排除了。
先评估性能,从目前现状来看,应用最多的主控芯片应该是STM32F4之类的高性能Cortex-M4单片机,如PX4之类的主流开源飞控使用了180MHz主频的STM32F427。从经验来看,若是一些简单的飞控程序,任务量不大,使用互补滤波之类的低运算量算法,那STM32F1已经足够,可以保证主任务在500Hz以上的高频率运行。但程序规模稍大,或者使用了更复杂的算法如多维卡尔曼之类的,那STM32F4可能正好可以满足要求。
电子产品使用较多的人可能会对跑分软件比较熟悉,而单片机上也有类似的应用:CoreMark,用在嵌入式系统中测量CPU性能的基准程序。
通过搜索引擎查询和官方发布等数据,我们可以看到STM32系列单片机的跑分(估计值,仅为参考)——
STM32F1(72MHz): 100
STM32F4(168MHz): 500
STM32F7(200MHz+): 1000
STM32H7(400MHz): 2000
i.MX RT1052(600MHz): 3000
可以看到,虽然F1和F4的主频相差一倍多点,但F4的跑分却是F1的5倍,主要得益于其所携带的FPU:一个独立于CPU处理的浮点运算单元。不过要注意的是,F4所带的FPU仅仅是单精度浮点运算单元,即仅对float型的数据运算有效,不适用于double型,所以平常程序里对运行速度敏感的地方尽可能避免使用double型,如 a = a * 0.5,即使a已经被定义为float,编译器也还是默认0.5为double型数据,运算时会按照双精度来计算,最后再转为单精度。解决办法是在0.5后面加上f,声明其为单精度浮点数,原式变成a = a * 0.5f。
而F7,虽然主频提升不高,但得益于架构的升级,其速度相对F4提升了不少,只不过价格也相对蛮高,而目前使用Cortex-M7单片机的飞控,数量还不多。而H7则是同样基于M7内核但更高性能的新型号,17年才基本算是完成量产,目前的应用还不多,价格更高。最后一个也是性能最强大的,属于NXP新推出的RT1050系列跨界处理器,其仍定义为单片机,基于M7内核,但主频高达600Mhz,快要追上曾经的Cortex-A系列处理器了。而价格也算是适中,唯一的遗憾便是封装为BGA,杜绝了DIY的可能性,好在已经有不少淘宝店铺推出了核心板。后期若是想开发图像处理类的应用,如光流或视觉里程计等,那RT1052可能比较适合,而对于我们的飞控来说,暂时还不需要用到这么高的性能。
综合考虑,在我们这款飞控上,还是选择了各方面都比较适合的STM32F405RGT6,168MHz主频带FPU,1M Flash,淘宝采购价大约为20元一片,64脚QFP封装也满足了小体积和易焊接的需求。而这个飞控,也会尽可能设计得比较小巧,只预留一些基本接口,方便其安装在一些小机架上。
当前的MEMS传感器,陀螺仪和加速度计基本都封装到一起,成了六轴传感器,所以这两个传感器的选型便一起了。曾经飞控上最经典的六轴传感器,莫过于MPU6050/MPU6000,这两个除了通信方式有区别,其它完全一样,前者大量用于各种玩具飞机,后者大量用于各类开源飞控。从性能和焊接便利性上来说,MPU6000无疑是我们飞控的最佳选择,可惜担心过段时间后难以购买,且价格偏高,只能无奈放弃。
MPU6000的下一代,MPU6500,也比较经典,除了陀螺仪噪声比前辈稍高一点之外,拥有着更小的封装(然而意味着更难焊接)以及极低的价格,虽然早已被官网列为了不推荐使用的产品之一(年代相对而言也比较久远了)。目前在淘宝上的采购价,有的才不到3元,从这方面看,非常值得我们选择,而且MPU6500在DJI的产品上已经使用了数年之久,直到最新款御air上还在使用,可见其还是有一定优势的。
因此我们的六轴传感器初步选择了MPU6500,只不过这款3x3mm的QFN封装IC,会存在些许焊接上的难度。
而在invensense的官网上(现已被TDK收购),我们还可以看到许多其它型号,不过适用于无人机的不多,而剩下的几款,如ICM20608,ICM20602,在无人机上也有许多应用,若有时间,我们可以搭建一个测试平台,对比一下这些传感器的性能,主要关心陀螺仪的随机噪声大小和固定温度下的零偏稳定性。
HMC5883是曾经在开源飞控上非常流行的一款三轴地磁传感器,不过目前已经停产,一般使用QMC5883作为代替品。在飞控上比较常见的地磁传感器还有AK8975,IST8310等。这些传感器的通信方式均为I2C,速度相比SPI要慢很多。
实际上地磁传感器的选型颇为被动,因为我们并不会直接在飞控板子上板载地磁芯片,主要是为了避免飞机内部走线和电路产生的磁场干扰,DIY多旋翼时,通常都会使用一个带有地磁传感器的GPS模块,并利用支架使其远离干扰源。所以地磁传感器的最终选型,还要看我们所选择的GPS模块。
先说结论,在这款飞控上,会采用MS5611作为气压传感器,原因是MS5611为目前市面上能购买到的精度最高的气压计,且其封装比较方便DIY焊接,价格虽然算是比较高的,但如今淘宝20元便能买到,对于一款用于学习和个人开发用的飞控来说,不算什么。
除了MS5611,还有许多厂商也推出了他们的气压传感器产品线,如博世,ST等。博世的气压传感器,可以用在飞控上的,有BMP180、BMP280、BMP380,其中180的精度较差,280的精度稍高,但也明显劣于MS5611,而380的精度更高,可能已经接近MS5611,但至今市场上还买不到散货。而ST的气压计有许多型号,目前使用最多的是LPS22HB,大量用于消费类无人机上,其优势在于具备较高精度的前提下,有着较低的价格(淘宝价格10元左右)。
除此之外还有许多其它公司,包括一些台湾IC厂商,但有一些公司在宣传气压计参数时经常会拿友商的产品来进行对比,有的甚至号称精度高于MS5611,然而事实却是,他们在进行传感器数据对比时,会在自己传感器上进行低通滤波配置,使得出来的数据噪声的确要小于其它气压传感器未经滤波的原始数据。从另一方面来想,如果有一款传感器精度高但价格又很低,那肯定会很快占领市场。新推出的传感器精度普遍不高于前辈MS5611,除了技术方面的原因外,更多的是目前除了小型飞行器,其它方面并没有对气压高度精度要求如此之高的应用场合,尤其是市场最大的智能手机应用,普通消费类电子产品更多地是偏向于低成本和小体积的传感器芯片,精度上满足基本需求即可。 |