目 录CONTENT

文章目录

基于STM32的四轴飞行器-准备篇

成培培
2026-01-29 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

最近突发奇想想做一个四轴飞控,虽然我只是会一点STM32,肯定会遇到很多困难,反正也是边做边学吧。

硬件准备

一个最简单的飞控要能飞,至少得有主控、电机、电机驱动、电源、姿态感知系统吧,所以以下一次介绍我的选择

主控芯片

起初本来准备使用ESP32的,因为它自带wifi,打算基于wifi结合手机控制,完成能飞即可,暂时不考虑2.4G的方案,不然还得做遥控终端麻烦。但是并不想用Arduino环境开发,一方面不是很熟另一方面感觉用Arduino做东西没成就感,调用别人的库完全不知道底层原理,ESP-IDF开发环境的话很多东西还得熟悉,上手可能比较慢,所以最终还是回到了STM32。
最终用了这块我买了好几年的STM32F103C6T6,虽然Flash小外设也不够丰富,但是询问AI结合自己检查发现应该还是够用的

电机

这里电机选项可能比较多,具体大类有两种:无刷电机和有刷空心杯电机

  1. 无刷电机是“大力士跑手”,追求的是高功率、高效率和高速度,是主流四轴飞行器的绝对动力核心
  2. 有刷空心杯电机是“轻盈的舞者”,追求的是极致轻量化、快速响应和低电磁干扰,是微型/超轻型飞行器的首选

结合成本寿命等考虑,最终在拼多多上选择一家性价比比较高的3.7v电压1503无刷电机,并且自带了电调模块,这就比较省心了,而且只要28块一套4个,相当便宜了

电调

所谓电调就是无刷电机驱动板,负责给电机供电以及接收PWM信号来调速,这个没啥好说的,我的电调是买电机时自带的。

电源

电源就有一定讲究了,因为我的这套系统供电分两路,一路是单片机供电一路是电机供电,我的stm32最小系统板上只有5v电压输入引脚的,它内部自带降压到3.3v,所以电池是不能直接节开发板的,这里我翻出了一块充电升压一体模块/J5019,也是要多年前就买了,准备做万用表充电电池的,但是一致没用上,刚好这里能用,它可以把接入的3.7v锂电池升压到4.3v~27v,可以通过一个电位器调节输出电压,升到5v给单片机工供就挺好,顺便还可以给电池充电。
单片机这一路供电解决了,电机这一路看起来就简单了,直接把锂电池正负极引出来接电调的输入就行了,但是需要注意的是电池输出电流是否能达到要求,我买的这个无刷电机询问卖家得知正常工作电流3A,满载工作5A,4个电机还得乘以4,所以光电机就需求20A电流了,算上冗余至少估计得30A的放电能力,普通3.7v锂电池显然是没办法满足的,所以我上拼多多又买了一块大小102560容量1800mAh放电倍率25C的高倍率锂电池,算下来1.8*25=45A的最大放电电流,应该是足够了

姿态感知系统

姿态感知需要依赖一块MPU6050模块,它可以测得3轴加速度以及三维角度,我在拼多多买了一块支持I2C协议,后续基于这个模块还得完成:6轴数据获取、零偏校准、单位换算、姿态估计、电机混控等功能代码,这块也是这个项目中的难点,后续还得学习

硬件接线安装

M1 ↺ CCW(绿) ↻ M2 CW(红)
M4 ↻ CW(红) ↺ M3 CCW(绿)

以上是从上往下看的4轴无刷电机的方位和旋转方向,之所以要这样布置是为了让每个电机都对称的给机体一个反向扭矩,实现总反扭矩 = 0,让机身保持稳定。
4个无刷电机的红黑供电线自然是要直接接到电池的正负极,信号线接到PWM信号引脚,这里我是使用TIM3定时器产生4路PWM信号是控制四轴飞行器,所以信号线分别接到PA6、PA7、PB0、PB1
单片机供电使用充电升压一体模块的输出端,电压要事先调到5v输出,电池接到BAT的正负极
MPU6050模块使用I2C的几个引脚接到单片机的I2C外设对应的引脚,也就是PB6和PB7,VCC和GND当然也要接,其他的就可以不接了,至此接线就差不多了

软件部分后续再更新。。。

0

评论区