☰
STM32F103C8T6自制低成本Betaflight飞控:空心杯小四轴从接线到调参全攻略
2026/9/28 15:50:02 网站建设 项目流程

STM32F103C8T6在穿越机圈子里总被当成"远古遗产",尤其现在F4、F7、H7飞控满地跑,谁还愿意碰这颗72MHz的Cortex-M3?但如果你只是想做一台低成本小四轴,或者说把手头吃灰的蓝色药丸板变成能飞的Betaflight飞控,F103C8T6其实是一个非常值得折腾的方案。这篇记录就是我最近用一块STM32F103C8T6飞控小板从拆机、接线、刷固件到Betaflight调参的完整过程,里面关于空心杯电机的坑,我已经替你们踩了一遍,建议先收藏再慢慢看。

这套玩法适合谁?想入门飞控又不想直接买成品F4飞控的玩家、手里正好有F103最小系统板或某宝飞控小板的折腾党、以及对Betaflight参数好奇但不敢上真机的新手。它能帮你用最低成本理解飞控硬件组成和调参逻辑,而不是一上来就陷进高端PID滤波的玄学里。

1. 项目拆解与方案选型

1.1 这套飞控到底能做什么

先说清楚,这篇文章里的"STM32F103C8T6飞控",是指以F103C8T6为核心芯片、板载陀螺仪传感器、通过PWM输出驱动空心杯电机的迷你四轴飞控方案。它不像Pixhawk那样什么任务模式、双GPS、光流定位都支持,但跑Betaflight最基础的姿态解算、PID控制、接收机信号处理,完全够用。

我手上的这块飞控是典型的"六合一"小板:板载STM32F103C8T6主控、MPU6050六轴传感器、四路MOS管驱动电路、降压稳压、以及一个对码按键,外围再插上接收机和空心杯电机,就组成了一台完整的微型四轴。这种板子最早的玩法叫"空心杯小四轴",在室内飞很安全,拆下来当学习板也不心疼。

实际上,F103C8T6主频72MHz、64KB Flash、20KB SRAM,这个资源在今天很多场景里显得捉襟见肘,但对Betaflight这种早期是围绕F1芯片设计的固件来说,仍然有发挥空间。Betaflight 4.3及之前的版本对F1家族还有完整支持,4.4以后官方基本放弃,所以DIY F103飞控尽量锁死在4.3.x这一代,既要新功能又不至于把Flash撑爆。

1.2 为什么选F103C8T6而不是直接上F4

F4飞控现在确实便宜,一块能用的F4飞控几十块钱,配置还高出一大截。那为什么还要拿F103折腾?我觉得有三个理由:

第一,F103C8T6获取成本极低。国产替代芯片加上蓝色药丸板,单板几块钱到十几块钱就能买到,很多人家抽屉里就有。第二,F103的引脚足够简单,GPIO、I2C、SPI、USART都齐,非常适合手动接线和排故,你在它上面能看懂飞控从传感器到电机驱动的完整链路。第三,也是被很多人忽略的一点,F103C8T6对老款Betaflight固件有天然支持,很多老飞控(比如NAZE32、CC3D)都是基于F103衍生出来的,所以可参考的资料、历史帖子极多,遇到问题能搜到一堆解法。

当然,劣势也明显:64KB Flash限制了大版本固件,20KB SRAM限制了很多辅助功能,USB DFU直接刷固件的体验也不如F4。所以项目定位非常清晰——室内微小型四轴,练手、学原理、展示低成本造机思路,这就够了。

1.3 硬件链路和接线逻辑

在动手之前,先自己心里画一条数据链路:遥控器 -> 接收机 -> 飞控串口 -> F103读取遥控通道 -> MPU6050给姿态 -> F103跑姿态更新和PID -> PWM驱动MOS管 -> 空心杯电机转动 -> 桨叶产生拉力。

这条链路你要是能闭着眼背出来,后面所有接线和调参都不会乱。最关键的几个接线点:

  • MPU6050与F103通过I2C通信,一般接PB6(SCL)和PB7(SDA),注意要有上拉电阻,否则传感器读数是乱的。
  • 接收机信号线接F103的串口RX引脚,不同小板位置不同,通常占USART1或USART3。
  • 四路电机输出建议接到定时器PWM通道对应引脚,比如PA0到PA3,这样PWM输出稳定可调。
  • 供电要分开:飞控逻辑电源(3.3V)和电机主电源(1S或2S电池)基本是独立回路,只是共地,否则MOS驱动逻辑会乱。

自己画板或者接线时,一定要带万用表把VCC和GND的短路情况查一遍,尤其是从拆机件改电路的情况,板子上万一有锡渣、毛刺,上电瞬间就可能烧芯片。

2. 拆机与硬件准备

2.1 拆机看什么、怎么拆

如果你和我一样是从一架成品空心杯小四轴上拆飞控,动手前先别急着剪线。用手机拍一张整机俯视图和侧视图,重点记录原来四颗电机的转向和桨叶安装方向。原厂机在出厂前已经调好了电机转向,你拆完重装只要照着样子接,能省去后面一堆力气。

拆机时建议先把四颗电机的焊点加热拆开,再拔掉电池线。注意不要把电机的漆包线扯断了,那东西极细,断在根部基本没法修。接着把飞控板从机架上拆下来,看背面芯片丝印,确认主控到底是STM32F103C8T6还是CBT6,两者Flash容量不同,很多人刷不进固件就是在这上面栽的跟头。再用放大镜检查板载MPU6050、MOS管、LDO的型号和焊点状态。

拆下来的板子别直接上电,先用酒精或洗板水把板子上的灰尘、氧化痕迹清理一遍,然后用万用表蜂鸣档测量电源正负极是否短路。F103C8T6这类芯片如果电源短路,十有八九是MOS管击穿,排查成本不低。

2.2 核心硬件清单与作用

  • STM32F103C8T6最小系统板:整个飞控的大脑,跑Betaflight固件,负责传感器数据采集、姿态解算、PID控制、PWM输出。
  • MPU6050模块:六轴传感器(三轴加速度计+三轴陀螺仪),是飞控"感知姿态"的眼睛。如果你自己外接模块,记得把模块焊在固定的引脚上,不要用杜邦线悬空插着飞。
  • 空心杯电机:小四轴的动力单元,常见720、8520、8523等规格,直径越大、长度越长,推力和电流越大。
  • 四路MOS管驱动:F103的GPIO输出电流太小,驱动不了空心杯电机,必须用N-MOS管做开关来通断电机主回路。
  • 接收机:接收遥控器信号并传给飞控,常见FlySky FS-iA6、FS-iA8等,输出SBUS、IBUS或PPM信号。
  • 锂电池:微型四轴一般用1S(3.7V)或2S(7.4V)电池,具体取决于电机和飞控板的耐压设计。
  • 螺旋桨:分正转和反转两种,安装和电机转向要匹配。
  • ST-Link或USB转TTL:前者用于烧写固件,后者用于连接Betaflight调参。

拆到这一步,你基本能判断板子哪些能复用、哪些需要换新。我这次拆下来的飞控板是完好的,只是原厂固件太封闭,所以决定刷Betaflight把它变成一台可玩性更高的小四轴。

2.3 焊接和接线时的几个规范

硬件准备这个环节,很多人会忽略细节,结果后面调参一直出怪问题。我这里归纳几条我实测下来的规范:

第一,电机线尽量用硅胶软线,长度能短就短,线的粗度用26AWG到28AWG左右够了,太粗太硬会阻碍电机轴转动,太细又容易发热。第二,电机正负极别接错,空心杯电机只要交换正负极就改变转向,所以布线时最好先确定好最终转向再焊接。第三,F103飞控板周围不要用那种又粗又长的杜邦线满天飞,飞控高速抖动时,线材之间的信号串扰会让你误以为是传感器坏了。第四,给电机线头焊锡前,先用砂纸或刀片刮一下漆包线,空心杯电机的引出线很多是绝缘漆包线,不刮掉漆层,焊锡挂不上。

另外,板子装回机架前,建议在飞控下方加一点软性泡棉双面胶,用来吸收电机高频震动。MPU6050对震动非常敏感,震动大了陀螺仪数据全是毛刺,Betaflight日志里看起来就是疯狂振荡。

3. Betaflight固件烧录与初始连接

3.1 烧录前的准备:ST-Link与接线

很多新手以为Betaflight Configurator直接插USB就能刷F103,这是个非常大的误区。只有F4以上飞控普遍内置了USB DFU Bootloader,F103C8T6最小系统板出厂只有串口ISP引导程序,USB口上一共电并不能进入DFU模式。所以我的烧录路径是:用ST-Link通过SWD接口直接把Betaflight固件写进Flash。

准备工作就三样:ST-Link V2一个、杜邦线四条、Betaflight固件的hex文件。接线非常简单:ST-Link SWDIO接F103的PA13,SWCLK接PA14,GND接GND,3.3V接3.3V。注意,如果飞控板是电池供电的,不需要额外给板子供电,只接ST-Link的3.3V也能烧录,但有些MOS管多的板子会拉低电压,这时候可以外接电池并共地,会稳定很多。

接好之后,把ST-Link插电脑,打开设备管理器确认能看到一个STM32 STLink的COM口或者USB设备。如果电脑没反应,需要安装ST-Link驱动,这个大家应该很熟。

3.2 用STM32CubeProgrammer烧录固件

我习惯用STM32CubeProgrammer来烧录,免费,界面直观,对SWD和串口ISP都支持。打开软件后,右上角选择ST-LINK,然后点Connect,正常情况下会读到芯片型号是STM32F103C8xx,Flash大小64KB。

连接成功后,点左侧的Memory & File烧录页签,选择打开文件,选中你的Betaflight固件hex。这里有一个关键点:一定要确认固件是F103能跑的版本。如果你用的是成品飞控小板,卖家会提供配套固件;如果你的板子和某种老飞控引脚兼容,可以烧对应老款目标固件。烧录前还要看一眼固件地址和大小,不要超过64KB。写完固件后断开连接,拔掉ST-Link,飞控才算"活"过来。

如果你手头没有ST-Link,也可以退一步用USB转TTL接PA9/PA10,将BOOT0引脚拉高,让F103进入系统存储器启动模式,然后用串口ISP烧录。但这条路对新手不够友好,而且Betaflight Configurator不像STM32CubeProgrammer那样直接支持,我还是建议花十几块钱备一个ST-Link。

3.3 串口连接Betaflight Configurator的姿势

固件烧进去之后,飞控还不能通过USB口直接连Betaflight,仍然需要外接USB转TTL模块。把USB转TTL的RX接F103的PA9(TX),TX接F103的PA10(RX),GND接GND,然后插上电脑。

打开Betaflight Configurator(我用的是10.9稳定版),右下角选择对应的COM口,波特率默认115200,点Connect。如果能正常连接,界面左侧会出现固件版本号、传感器状态、姿态模型等信息,到这一步就说明固件在跑了,传感器也工作正常。如果连接不上,先检查RX和TX是否交叉接反,再看板子和电脑有没有共地,最后确认USB转TTL用的是16550兼容芯片而不是那种已经停产的杂牌2333芯片。

连接成功后第一件事,在Betaflight里打开CLI命令行,输入version回车,确认目标固件名称和版本符合预期。输入status能看到系统资源使用情况,如果显示CPU占用过高,说明固件对F103来说负担偏重,需要关掉不必要的功能。

3.4 端口、模式、配置项快速配好

串口调通后,就要把飞控的基本配置写进去。我建议按下面顺序走:

在Ports(端口)页,找到接收机接的那路串口(比如UART1),把"Serial RX"勾上,数据速率根据接收机协议来定。SBUS是100000波特率,IBUS是115200,PPM则是模拟信号不需要配置串口速率。

在Configuration(配置)页,把飞机类型设为Quad X,也就是四轴X型分布;电机协议选PWM或Oneshot,这里无法选DShot,因为F103比较老,没有硬件定时器资源支持;加速度计和气压计如果不打算用,可以直接关掉,给CPU减负;建议把陀螺仪更新频率和PID处理频率设成1kHz,稳定第一。

在Receiver(接收机)页,选择你接收机对应的协议(SBUS或IBUS),然后打开遥控器,看通道指示条是否跟随摇杆动作。这里很多人会卡住,比如遥控器动但条不动,大概率是协议选错或者信号线接到了错误的串口。

在Modes(模式)页,至少设一个ARM开关位,也就是解锁电机旋转的开关,建议放到AUX1通道,再用一个模式位放Angle自稳模式,方便新手试飞。在Motors(电机)页,先把螺旋桨拆掉,确认"我理解电机会转"的勾选后,可以单独测试每路电机输出,这时候就能看到F103发出的PWM信号是否正常驱动空心杯电机。

最后,进入CLI,输入下面命令把电机PWM频率调到合适范围:

set motor_pwm_rate = 2000 save

对于空心杯有刷电机,太低的PWM频率会明显听到电流噪音,太高的频率又会让MOS管开关损耗变大,我实测下来2000Hz左右比较稳。设置保存后最好用get motor_pwm_rate确认一下。

4. 空心杯电机避坑指南

4.1 先搞清楚空心杯电机的脾气

如果要给这个项目挑一个最容易翻车的部分,绝对是空心杯电机。这东西在微型四轴上非常常见,内部结构是一个无铁芯的杯形转子线圈,外面是磁铁,好处是转动惯量小、启动快、响应灵敏,非常适合小四轴这种需要快速改变转速的场景。

但代价也很明显:寿命短、怕堵转、电流大。空心杯电机用的是碳刷结构,转子转动时碳刷和换向器持续摩擦,几百小时寿命已经算不错,很多便宜电机几十小时就开始明显掉转速。另外,一旦螺旋桨被卡住或者摔机时电机堵转,堵转电流能达到正常电流的数倍,MOS管和电机本体瞬间发热,几秒钟就可能烧掉。

所以买电机时不要贪便宜,至少选正规格的8520或720电机。型号前两位是电机直径,后两位是高度,同系列里更大更长的推力更大但电流也更大。1S电池的小机通常用8520,2S小机可以选更长的8523甚至1020,但要注意飞控板的MOS管能否承受这个电流。

4.2 驱动电路:MOS管和续流二极管不能省

空心杯电机的工作电流虽然不大,单颗正常也就1A上下,但堵转时会飙到2A、3A甚至更高。F103的GPIO输出能力只有几个毫安,直接驱动电机等同花式烧芯片,所以必须用N-MOS管做开关。常见型号是SI2302,SOT-23封装,导通电阻低,连续漏极电流大概2A左右,用在8520电机上勉强够用;如果是更大电机或长期飞行,建议换AO3400或者SOT-23封装的更大电流管子,并且给每路MOS加一个续流二极管。

续流二极管这个细节很多人忽略。空心杯是感性负载,MOS管关断瞬间会产生一个反向感应电动势,如果没有二极管把电流钳住,这个尖峰电压分分钟打穿MOS管栅极。用一颗1N5819肖特基二极管反接在电机两端,负极接电源正极,正极接MOS漏极,就能有效吸收尖峰。

另外,很多成品飞控板上为了省成本,会省略续流二极管或者用很次的MOS管。如果你发现某路电机工作时MOS管烫手,极大概率是驱动余量不足,这时候别硬飞,先换管子或者降低电机推力。

4.3 焊线、装桨和设备方向是玄学也是硬功夫

这里我只讲实操,不整理论。

第一,空心杯电机的两根引线很多是漆包线,直接上锡会挂不住。动手前用细砂纸轻轻打磨线头,把漆层磨掉露出铜色,再预上锡,否则虚焊会让你怀疑人生。第二,电机底部两个焊点距离很近,焊锡千万不要堆太多,否则两脚短接,上电就烧MOS管。第三,电机线多留几毫米余量,但不要太长,太长的线在飞行中会甩动,影响机身重心和姿态传感器数据。

桨叶安装方向是另一个大坑。同一架飞机四颗电机,两颗正转、两颗反转,对应安装的桨叶一正一反。如果装反,飞控一解锁,飞机不是翻车就是原地打转。所以每次拆完桨,我都习惯在桨叶上用记号笔标清楚方向和编号,避免混装。

电机转向的判断方法很简单:给某一颗电机单独通电,观察电机轴旋转方向,如果和飞控要求的转向不一致,直接把两颗电机线对调即可。全部确定后,把飞控接上Betaflight,在电机测试页一个个验证,看到四路转向两正两反且对角方向一致,才算合格。

4.4 寿命与更换技巧

空心杯电机是个消耗品,你必须接受它越飞越弱的事实。常见的衰减征兆是:起飞需要更大油门、机身在悬停时明显下沉一侧、续航时间变短、电机表面发烫。一旦出现这些问题,建议直接换新,别硬撑,否则其他三颗好电机也会被拖累。

换电机时注意新旧搭配问题。如果有一颗电机明显老旧而其他三颗是新的,整机会出现某一条对角线推力不平衡,飞控会一直纠正姿态,后果就是耗电快、发热大。条件允许的话,四颗一起换,或者至少保证同一对角线上的两颗水平一致。

另外,空心杯电机内部积碳和灰尘会加速碳刷磨损,飞完以后用气吹或毛刷清理一下电机周围,能延长一点点寿命。我把这个习惯保留到现在,实测下来对续航衰减有一定缓解。

5. PID调参与试飞

5.1 先理解PID再动手调参数

Betaflight调参最核心的就是PID。三个字母对应三件事:P是比例,代表飞控对姿态偏差的反应强度;I是积分,用来消除长时间累积的稳态误差;D是微分,相当于阻尼,抑制姿态快速变化。应用到小四轴上就是:飞机受外力倾斜了,P负责拉回来,拉的过程中容易冲过头,D负责踩刹车,但D太猛会抖,所以I用来补足"回不到中间"的那个小偏差。

在Betaflight界面里,默认PID是以Roll、Pitch、Yaw三个轴分开调的。对X型四轴来说,Roll和Pitch的行为基本一致,所以参数也大多一致。P值过高的典型表现是高频振荡加电机烫手,P值过低则是飞机绵软、摇杆回中后姿态不干脆。I值过低的表现是飞机被风一吹就飘得厉害,I值过高则会出现低频波浪式晃荡。D值在F103这类老平台上不宜过高,因为传感器噪声不小,D吃噪声的能力有限,把它调太高只会让电机一直发抖。

以Betaflight默认参数作为起点,我习惯按"先调P、再补I、最后微调D"的顺序来。每次只动一个轴的一个参数,别三个一起改,否则出了奇怪现象根本无从排查。

5.2 第一次试飞和观察方法

第一次上电试飞,别在屋里人多的地方,也别开大风力。我一般先在室内找个开阔地带,拆桨做一次"瑜伽测试"——用手抓住机身,逐渐给油门,感受飞控是否在抑制姿态变化。如果电机转速有明显波动,说明陀螺仪和控制回路在工作,这时再装桨小油门试飞。

装桨后第一次解锁,油门只推到悬停油门的60%左右,观察飞机是否往某个方向倾斜,有没有瞬间翻机。常见情况是:解锁后飞机直接斜向一侧冲出去,这多半是电机转向或桨叶方向不对,而不是PID问题。先回Betaflight再次确认转向,再做微调。

如果基本能离地,但飞机一直高频抖动,先别动PID,检查机架螺丝是否拧紧、桨叶是否变形、电机座是否松动。这些机械问题会引起振动,让飞控误以为姿态一直在变,然后疯狂输出修正,最后看起来就是PID极度暴躁。

在Betaflight里打开日志记录,试飞一次,然后看陀螺仪数据和PID输出的曲线。正常情况下姿态变化曲线应该是平滑的,如果曲线带着密集的毛刺,先处理振动,再回来调PID。这个习惯能帮你省掉大量无效调参时间。

5.3 常见PID问题与调整方向

  • 高频抖动、电机明显发烫:P过高或者D过高导致电机一直在修正,先把P降20%再试,如果还抖就降D。
  • 低频前后摇摆:I值过大可能性更大,把I降到原来的80%左右再试。
  • 方向回正慢、手感黏滞:P偏低或D偏高,适当加P或者减D。
  • 解锁后一边倒但电机声音正常:先检查电机转向和桨叶,装反的概率远大于PID故障。
  • 悬停时需要不停修正摇杆:I值不够,或者在无风环境仍然飘,可以检查加速度计是否校准好。

对于F103+空心杯这种微型平台,我的最终调参经验是:P不要追求和F4大机一样激进,因为电机的响应和寿命都跟不上,宁可手感柔和一点,换来稳定和续航。我的电机最终参数就比默认P值降了大概20%,I尽量不动,D稍微降了一点,整机飞起来相当安分。

6. 常见问题与排查技巧实录

6.1 高频故障速查表

现象可能原因检查顺序
Betaflight连不上飞控接线错误、驱动问题、波特率不对RX/TX是否交叉;模块是否被识别;试115200和250000
传感器数据不变化MPU6050供电、I2C地址、虚焊用CLI命令status看传感器状态;万用表量传感器VCC
电机一个不转MOS管坏、GPIO映射不对、电机本身坏在Motors页单独转那路电机;换一个好电机测试;查MOS
解锁后全部不转ARM开关未生效、油门解锁值不对Modes页看ARM是否亮;CLI输入get motor_pwm_rate确认输出
起飞后疯狂旋转电机转向或桨叶方向错、陀螺仪方向反检查四电机转向;确认陀螺仪坐标系是否与机头一致
高频震动无法悬停桨叶动平衡、电机老化、PID过高先换桨、换新电机,再动PID
电池续航骤降电机磨损、机架阻力、飞控负载过高摸电机是否烫手;换个新电池测试;在CLI里关掉不用的传感器

6.2 几个我实际踩过的坑

第一个坑是"SBUS信号反相"问题。我一开始用FlySky FS-iA6接收机,SBUS接上后Betaflight怎么都识别不到信号。查了一圈发现F103没有硬件反相器,而SBUS默认是反相信号,需要额外做一个三极管反相电路或者直接用PPM信号,最后我换了IBUS协议才解决。如果你买的是成品飞控小板,卖家给的接线图里通常已经标注好了用哪种协议,别想当然直接用SBUS。

第二个坑是"电机测试明明转,装桨就翻"——这个最坑。后来发现是Betaflight里电机转向和桨叶方向不匹配,单个测试看似正常,四颗一起解锁就产生不平衡力矩。建议每次装好桨后,在地上先做一次Locked Rotor测试,手握住机身,小油门加到能明显感知推力差异,再放到地面解锁。

第三个坑是"用USB转TTL调参时,飞控莫名掉线"。排查后是USB转TTL模块供电不稳,飞控会把USB转TTL的3.3V当作主电源,一旦电机转起来,压降导致飞控重启。解决方法是把飞控的主供电改到电池端,USB转TTL只做信号传输,不做电源供应。

第四个坑比较冷门:空心杯电机换过后,转向和原来的不一致。我换了一颗新电机,装上后才发现新电机轴朝向和旧的不一样,焊好之后整机四条对角线推力全乱了。所以每次焊电机,我都会先在桌面用一个3.7V小电池单独验证转向,再上飞控。别嫌麻烦,换错了重新焊更麻烦。

6.3 调参工具和软件上的加分项

除了Betaflight Configurator本身,我强烈建议配合一个手持式遥控器油门曲线校准。有些廉价遥控器油门行程不一致,直接导致起飞油门位置偏移很多,Betaflight里接收机校准可以先把摇杆打到最大和最小,让系统自动记录端点。

另外,Betaflight 4.3内置了预设库,里面有些专门针对微型无刷机甚至类似参数风格的预设,可以套用后再做微调。不过F103只有64KB Flash,加载预设时注意会不会引入过多功能导致固件空间不足,套用后建议在CLI里diff all导出配置备份。

再就是保持Betaflight Configurator的日志文件。试飞录几组数据,然后看那个著名的"黑盒子"日志,里面能看到PID输出波形、陀螺仪曲线和姿态解算是否异常。这套分析习惯,比盲调参数靠谱一百倍。

最后再分享一点个人的体会

F103C8T6飞控DIY这条路,最大的价值不在于造出一台多好的小四轴,而在于让你在极低的试错成本里,把"飞控到底在干什么"这件事彻底搞明白。我第一次调空心杯小四轴时,连电机正转反转都分不清,后来刷坏了三块板子、烧了两颗MOS,才慢慢摸出这章里写的那些经验。现在这些内容呈现在一篇记录里,希望你能少走几步弯路。

如果你也想试,我建议顺序是:先把手上的小板拆出来,确认芯片型号和传感器型号,再翻出ST-Link和USB转TTL,最后按这篇流程一步步推进。实在不行就在评论区把照片发出来,看到问题我会尽量回复。玩这种小飞机,慢就是快,硬件检查多花十分钟,后面调参能少花十小时。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询