第二章 硬件平台搭建:主控芯片选型与驱动板设计
好,咱们直接进入正题。做FOC控制,硬件是地基。地基没打好,算法写得再漂亮也是白搭。我个人习惯是先定主控芯片,再围绕它设计驱动板。今天我就把这两块的核心要点掰开揉碎了讲。
2.1 主控芯片选型:STM32 vs TI C2000
选主控芯片,说白了就是选生态。我见过不少新手纠结于参数,其实更重要的是你手头有什么开发工具、社区支持怎么样。目前主流就两大家:ST的STM32系列和TI的C2000系列。
2.1.1 STM32系列
STM32的优势在于性价比和生态。特别是STM32G4系列,内置了HRTIM(高分辨率定时器)和CORDIC协处理器,专门为电机控制优化的。我在项目中用过STM32G474,跑双电机FOC毫无压力。
核心优势:
- 内置硬件数学加速器(CORDIC),算三角函数快得很
- HRTIM可以产生中心对齐的PWM,死区时间可调
- ADC支持同步采样,三相电流可以同时采集
- 价格便宜,一片G474大概30-40块
不过要注意,STM32的PWM分辨率在极高开关频率下会受限。比如你跑100kHz的开关频率,HRTIM的精度可能就不够用了。嗯,这里要留个心眼。
2.1.2 TI C2000系列
TI C2000是专业电机控制芯片。我最早接触FOC就是用TMS320F28069,那时候还是32位定点DSP。现在的F28379D已经是双核浮点DSP了,性能强悍。
| 特性 | STM32G474 | TMS320F28379D |
|---|---|---|
| 主频 | 170MHz | 200MHz × 2 |
| PWM分辨率 | ~150ps | ~50ps |
| ADC精度 | 12位 | 16位 |
| 价格 | ~$5 | ~$15 |
| 开发工具 | STM32CubeIDE | CCS + MotorWare |
TI的强项是PWM分辨率和ADC精度。如果你做伺服驱动器,要求电流环带宽10kHz以上,C2000是更好的选择。但代价是开发工具链比较重,学习曲线陡一些。
我的建议:
初学者先用STM32G4系列,上手快、资料多。等做到高性能伺服级别,再考虑C2000。我曾经有个项目,用STM32做原型验证,三个月就调通了。后来量产换C2000,又花了两个月移植代码。
2.2 驱动板设计要点
驱动板是连接主控芯片和电机的桥梁。设计不好,轻则电流波形畸变,重则炸管子。我来说说三个核心模块。
2.2.1 三相逆变器
三相逆变器就是六个MOSFET或IGBT组成的H桥。选管子时要注意几个参数:
- 耐压值:一般取母线电压的1.5-2倍。48V系统用100V的管子,220V系统用600V的
- 导通电阻Rds(on):越小越好,但要注意散热
- 栅极电荷Qg:影响开关速度,Qg越小越好
我踩过一个坑:选了一款Rds(on)只有2mΩ的MOSFET,结果Qg太大,驱动芯片带不动,开关波形一塌糊涂。后来换了Qg小一点的管子,问题就解决了。
驱动芯片推荐用IR2101或IR2104,自带死区时间和自举电路。如果你用STM32的HRTIM,死区时间可以在软件里配,硬件上留个电阻调节的备份就行。
注意:三相逆变器的布局要遵循"功率回路最小化"原则。就是让大电流走最短路径,减少寄生电感。我见过有人把MOSFET和母线电容隔了5cm远,结果开关尖峰高达100V,直接击穿管子。
2.2.2 电流采样
电流采样是FOC的命门。采样不准,电流环就控不住。常用的方案有三种:
- 三电阻采样:精度最高,但需要三个运放和ADC通道
- 双电阻采样:省一个运放,但需要重构第三相电流
- 单电阻采样:最省成本,但低速时采样窗口不够
我个人习惯用双电阻采样。精度够用,成本适中。采样电阻选10mΩ左右的,功率要留够余量。运放用LMV358或MCP6002,带宽1MHz以上就行。
这里有个关键点:采样时刻要避开PWM开关噪声。我一般在PWM的中间点采样,这时候上下管都关断,电流通过续流二极管,噪声最小。
// 以STM32G4为例,配置ADC触发时刻
// 使用定时器TRGO事件触发ADC
// 设置PWM中心对齐模式,在计数器归零时触发
TIM1->CR2 |= TIM_CR2_MMS_1; // 选择更新事件作为TRGO
ADC1->CFGR2 |= ADC_CFGR2_JOVSE; // 注入组同步触发
2.2.3 母线电压检测
母线电压检测用于过压保护和弱磁控制。简单做法是用电阻分压,然后进ADC。分压比要算好,保证最高电压时ADC输入不超过3.3V。
举个例子:母线最高60V,分压比选20:1,那么ADC输入就是3V。留0.3V的余量,防止尖峰损坏ADC。
小技巧:在分压电阻后面加一个RC低通滤波器,截止频率设1kHz左右。这样可以滤掉开关噪声,得到稳定的电压值。我一般用10kΩ电阻和100nF电容。
2.3 编码器与霍尔传感器接口
位置传感器是FOC的眼睛。没有准确的位置信息,Clark变换和Park变换都是瞎算。
2.3.1 编码器接口
增量式编码器输出A、B、Z三路信号。A和B相差90度,用于判断方向和计数。Z信号每转一圈输出一个脉冲,用于归零。
接口电路要注意:
- 加施密特触发器整形,比如74HC14
- 加RC滤波,时间常数1μs左右
- 长线传输要用差分信号,比如RS422
我遇到过编码器信号抖动的问题。后来发现是电机线缆和编码器线缆绑在一起,电机电流产生的磁场干扰了编码器信号。解决办法是把编码器线单独走,加磁环。
绝对式编码器用SPI或SSI接口。我推荐用BiSS-C协议,速度快、抗干扰强。不过要注意,SPI时钟频率不要太高,一般5MHz以内比较稳。
2.3.2 霍尔传感器接口
霍尔传感器只有三个信号:H1、H2、H3。每个信号是高低电平,组合起来表示6个扇区。分辨率只有60度电角度,但胜在便宜、可靠。
霍尔接口电路和编码器类似,也要加施密特触发和滤波。不过霍尔信号频率低,滤波时间常数可以大一些,10μs左右。
用霍尔做FOC有个技巧:在扇区切换时,位置会有跳变。我一般用软件做插值,在两个扇区之间平滑过渡。这样电流就不会有突变。
// 霍尔扇区到电角度的映射
// 假设霍尔信号为H3H2H1,对应扇区0-5
uint8_t hall_to_sector(uint8_t hall_value) {
switch(hall_value) {
case 0b001: return 0; // 0°
case 0b011: return 1; // 60°
case 0b010: return 2; // 120°
case 0b110: return 3; // 180°
case 0b100: return 4; // 240°
case 0b101: return 5; // 300°
default: return 0;
}
}
总结一下:
硬件平台搭建,说白了就是选对芯片、布好板子、接好传感器。我做了这么多年电机控制,最大的体会是:硬件设计要留余量,不要卡着极限值算。留20%的余量,能省很多调试时间。
下一章我们讲电流采样电路的具体设计,包括运放选型、PCB布局、采样时序。到时候我会分享一个我调了三个月的电流采样案例,保证让你少走弯路。