1. 硬件架构与核心器件分析
1.1 主控芯片选型与系统资源分配
BLHeli_S 电调在 C_H_30 固件版本中通常采用ATmega328P作为主控芯片,其资源分配如下:
资源类型 | 数量 / 规格 | 主要用途 |
---|---|---|
Flash 存储器 | 32KB | 存储固件程序 |
SRAM | 2KB | 运行时数据存储 |
EEPROM | 1KB | 存储配置参数(PID 值等) |
ADC 通道 | 8 路 10 位 | 电流采样、电压监测 |
PWM 输出 | 3 路 16 位 | 驱动 MOSFET 桥 |
定时器 | 3 个(16 位 ×2,8 位 ×1) | 产生 PWM、处理定时任务 |
USART | 1 个 | Dshot 通信接口 |
芯片外设的典型配置代码:
c
运行
// 系统初始化代码片段(基于C_H_30源码分析)
void system_init(void) {
// 设置系统时钟(16MHz)
CLKPR = (1 << CLKPCE); // 允许时钟预分频器修改
CLKPR = 0; // 系统时钟分频比为1
// 初始化ADC(用于电流采样)
ADMUX = (1 << REFS0); // AVCC作为参考电压
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // 使能ADC,分频比128
// 配置PWM输出(16位定时器1)
TCCR1A = (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11); // 快速PWM模式,非反转输出
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); // 模式14 (ICR1作为TOP),不分频
ICR1 = 4000; // 设置PWM频率为4kHz (16MHz/4000)
// 初始化USART(用于Dshot通信)
UBRR0H = 0;
UBRR0L = 8; // 波特率1M (16MHz/16/8-1)
UCSR0B = (1 << TXEN0); // 使能发送
UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); // 8位数据,无校验,1位停止位
}
1.2 功率驱动电路设计
功率驱动部分采用三相半桥拓扑结构,主要器件包括:
-
功率 MOSFET:通常选用低 RDS (on)(<10mΩ)的 N 沟道 MOSFET,如 IRLB3034PbF
-
MOSFET 驱动芯片:如 IR2104,提供:
- 高低边驱动能力
- 死区时间控制(典型值 200ns)
- 自举电路设计
-
电源去耦网络:
- 大容量电解电容(1000μF/16V)滤除低频纹波
- 陶瓷电容(0.1μF)抑制高频噪声
典型的三相半桥驱动电路:
plaintext
+Vcc
|
▼
+---+
| |
HIN1-| |-HO1 ┌───┐
| | | |
LIN1-| |-LO1--| |
| | | |
| | |MOS|
|IR | | |
|210| | |
|4 | └───┘
| | |
HIN2-| |-HO2 |
| | |
LIN2-| |-LO2 |
| | |
| | ▼
+---+ ┌───┐
| | |
| | |
| |GND|
| | |
| └───┘
|
▼
+---+
| |
HIN3-| |-HO3
| |
LIN3-| |-LO3
| |
+---+
1.3 电流采样电路
电流检测采用低侧电阻采样方案,典型电路参数:
- 采样电阻:0.1Ω/1%/3W
- 放大器:INA213 或等效器件
- 增益设置:G=50(将 mV 级信号放大到 ADC 可检测范围)
- 滤波网络:RC 滤波(R=10kΩ,C=10nF,截止频率 1.6kHz)
电流采样的关键代码:
c
运行
// 电流采样与转换函数
uint16_t read_motor_current(void) {
// 启动ADC转换
ADCSRA |= (1 << ADSC);
// 等待转换完成
while (ADCSRA & (1 << ADSC));
// 读取ADC值并转换为实际电流值(mA)
// 假设:10位ADC (0-1023),参考电压5V,采样电阻0.1Ω,放大器增益50
// 满量程电流 = (5V/1023) / (0.1Ω * 50) = 977mA
return (uint16_t)((uint32_t)ADC * 977 / 1023);
}
2. 发展历程与技术演进
2.1 BLHeli 系列发展时间线
-
2011 年:BLHeli 项目启动,基于 SimonK 固件改进
- 初始版本支持基本 PWM 控制
- 仅提供固定频率控制
-
2013 年:BLHeli_S 分支出现
- 引入 Dshot 协议支持
- 优化轻载效率
- 改进低转速控制性能
-
2016 年:C_H_30 固件版本发布
- 完整实现三环 PID 控