做过无刷电机驱动的人,十有八九都在霍尔上栽过跟头。明明原理图、换相表都是照着成熟方案抄的,板子焊好上电,电机要么嗡嗡响不启动,要么转起来电流大得吓人。这时候老工程师一般会问一句:“你的霍尔安装相位差是多大?”很多人听到这个问题就懵了——霍尔不就是按120°间隔装三个吗,怎么还有个相位差?而且还跟30°扯上了关系?
这篇文章就把这件事彻底讲透:霍尔安装相位差30°到底是什么意思、这个30°是怎么从反电动势里来的、它和六步换相有什么关系、以及实际焊接霍尔板或者调代码时该怎么标定和验证。无论你是用STM32做方波无刷驱动,还是在搞FOC矢量控制,只要你手上有一颗带霍尔的BLDC电机,这篇东西应该能帮你少走不少弯路。
1. 反电动势与换相点:霍尔30°相位差问题的源头
1.1 反电动势过零点是六步换相的“天然基准”
先回到最基础的东西:无刷电机的反电动势到底是怎么来的。转子是永磁体,定子绕组放在齿槽里,转子转起来之后,磁力线不断切割绕组,于是绕组两端就感应出电压,这就是反电动势。对于表面贴装磁钢的BLDC电机,反电动势波形一般设计成近似梯形波;对于内置式或磁路设计偏正弦的电机,反电动势更接近正弦波。不管是哪种,反电动势都有一个非常关键的特征:每一相反电动势都存在过零点。
反电动势过零点的物理含义其实很简单:当某相绕组的轴线正好和转子磁极的中心线对齐时,该绕组中的磁链变化率为零,感应电压自然就是零。这个时刻对驱动控制有着特殊意义——如果你在这一刻给该相通电,电流产生的电磁力方向和转子磁场的夹角接近零,力矩几乎为零,纯粹就是浪费能量。
所以六步换相(也叫120°导通方波控制)实际上就是把“导通时刻”和“反电动势波形”牢牢绑定在一起。每次换相都发生在某一相即将进入“能出力区间”的关口,而这个关口的最优位置,理论上是反电动势过零点往后推一个固定角度。你可以把反电动势过零点理解成一个发令枪,枪响之后不能马上起跑,要等一个固定延迟再换相,才能让相电流正好落在反电动势平顶区,获得最大的力矩输出。
1.2 为什么最佳换相点在过零点之后30°
很多人第一次算这个30°都会别扭:为什么不是10°,不是60°,偏偏是30°?
这得从理想梯形波反电动势模型说起。在一个电角度周期里,每一相的反电动势可以分成几段:从过零点开始,经过一段线性上升的过渡区,进入宽度为120°的平顶区,再经过一段线性下降的过渡区回到过零,负半周同理。其中平顶区的起点正好是反电动势过零点之后30°电角度,平顶区的终点则是再过120°的地方。
六步换相的规则是每次导通两相,每个功率管导通120°电角度。为了让这120°的导通区间全部落在反电动势的平顶区内,换相时刻就必须卡在平顶区的边界上。也就是说,最理想的换相点不是反电动势过零点本身,而是过零点之后30°电角度的位置。
这个30°不是随便拍脑袋定的,而是由“反电动势平顶区宽度120°”和“每相导通120°电角度”这两个120°共同决定的。换相早了,电流在反电动势过渡区就开始灌进去,力矩输出不足;换相晚了,电流一部分落在平顶区之外,反电动势已经开始往下掉,效率下降,还会引入换相转矩脉动。
当然实际电机没有那么理想,反电动势波形不会是完美的梯形,磁路饱和、齿槽效应、绕组分布方式都会让波形走样。所以工程上经常能看到最优换相角在20°到45°之间变动,30°只是一个设计基准,具体到某一颗电机上要做实验标定。这也是为什么市面上的电机驱动库、FOC控制代码里都要留一个“换相角补偿”或“hall offset”参数的原因。
2. 霍尔信号与反电动势相差30°意味着什么
2.1 霍尔跳变沿与反电动势过零点的两种对齐方式
霍尔传感器测的是转子磁场方向。当转子磁极转过霍尔元件时,霍尔输出电平翻转。三个霍尔按一定间隔安装在定子上,就能把360°电角度划分成6个60°的扇区,每个扇区对应一个唯一的三位霍尔状态编码。霍尔跳变沿的本质,和反电动势过零点一样,都标记着某个特定转子位置。
既然反电动势过零点是最佳换相基准,而霍尔跳变沿又能准确反映转子位置,那最简单的做法就是把霍尔跳变沿和反电动势过零点对齐。霍尔一翻转,驱动芯片就认为“该换相了”,直接切换功率管。
但这里有个问题:前面已经推导过了,最好的换相点不在过零点,而在过零点之后30°电角度。如果霍尔边沿和过零点对齐,那么在霍尔边沿触发换相就太早了,等于每60°都提前30°换相,电机的力矩、效率、噪声都会明显变差。
要解决这个偏差,行业里有两条路:
- 软件补偿:霍尔边沿触发中断后,不立即换相,而是延时30°电角度对应的时间再换相。
- 硬件偏置:把霍尔元件的位置从“过零点对齐”的位置挪开30°电角度,让霍尔跳变沿直接出现在过零点后30°的位置上,这样霍尔中断里查到换相表就能直接换相,不需要软件延时。
2.2 电角度与机械角度换算:30°安装角到底转多少度
这里有一个特别容易踩的坑:霍尔安装图上写的30°、60°、120°,全都是电角度,不是机械角度。很多人做电机结构设计时,直接拿着30°当机械角度去画霍尔板的定位孔,装出来电机一跑全是毛病,还找不到原因。
电角度和机械角度的关系只由极对数决定:
机械角度 = 电角度 ÷ 极对数
我把常用极对数的换算结果列成一张表,方便直接查:
| 电机极数 | 极对数 | 30°电角度对应机械角度 |
|---|---|---|
| 2极 | 1 | 30° |
| 4极 | 2 | 15° |
| 6极 | 3 | 10° |
| 8极 | 4 | 7.5° |
| 10极 | 5 | 6° |
| 14极 | 7 | 约4.29° |
| 20极 | 10 | 3° |
| 28极 | 14 | 约2.14° |
看一眼就能明白,多极电机的机械角度余量非常小。比如航模上常用的14极电机,30°电角度在机械上只有4.29°,也就是一圈的百分之一多一点。霍尔板稍微偏1°机械角,电角度就偏了7°,对换相的影响相当可观。
所以在设计霍尔安装座的时候,一定要先把电角度需求换算成机械角度,再考虑霍尔元件的摆放公差、PCB焊盘误差、磁钢贴装误差。这些误差综合起来,很可能比你想要的30°相位差本身的容差还要大。
2.3 提前30度和滞后30度对换相的影响
霍尔安装相位差30°不是“有”和“没有”的问题,而是“往哪个方向偏”的问题。以转子正向旋转为例,我们说“霍尔边沿滞后反电动势过零点30°”,意思是时间轴上反电动势先过零,等转子再转过30°电角度,霍尔边沿才出现。这样霍尔边沿正好落在理想换相点,中断里直接换相就是最优。
反过来,如果霍尔边沿比反电动势过零提前30°出现,那么换相点整体就会提前。此时相电流刚切入时,反电动势还没爬到平顶区,处于过渡区,力矩小、电流尖峰大,电机表现出来就是无力、发热、噪声明显。
如果霍尔边沿滞后太多,比如滞后了40°甚至50°,换相点会越过平顶区中点,电流灌进绕组时反电动势已经开始往下掉,方向开始偏离最优,效率同样下降,还会产生明显的换相转矩脉动,电机转起来能听到周期性“嗒嗒嗒”的声音。
需要强调的是,这里的“提前”和“滞后”定义,在不同厂家的资料里经常互相相反。因为霍尔元件有敏感面朝向问题,霍尔板的走线方向、三相线的定义顺序都会影响你看到的波形时序。所以不建议死记硬背“超前还是滞后”,而是建议用示波器直接量反电动势过零点和霍尔边沿之间的实际相位差,这样最可靠。
3. 六步换相真值表与霍尔状态的对应设计
3.1 六步换相的基本逻辑与导通状态表
六步换相,本质上就是让三相绕组按固定顺序导通,每次只有两相同时通电,第三相关断。六种导通状态交替切换,每切换一次转子转过60°电角度,转完一圈360°正好切换六次。
以常见的全桥驱动拓扑为例,六个功率管分别是上桥Q1、Q3、Q5和下桥Q2、Q4、Q6。六步换相的导通方式可以写成下表:
| 换相状态 | 导通的功率管 | 电流路径 |
|---|---|---|
| 状态1 | Q1 + Q4 | A+ → B- |
| 状态2 | Q1 + Q6 | A+ → C- |
| 状态3 | Q3 + Q6 | B+ → C- |
| 状态4 | Q3 + Q2 | B+ → A- |
| 状态5 | Q5 + Q2 | C+ → A- |
| 状态6 | Q5 + Q4 | C+ → B- |
可以看出,每一相在一个电周期内导通120°,比如A相在状态1和状态2里走正向电流,在状态4和状态5里走反向电流,中间各隔60°电角度休息。这种导通方式配合梯形波反电动势,理论上可以获得平稳的电磁转矩。
3.2 霍尔安装相位差在换相表中的表现
霍尔传感器的作用,就是告诉控制器“现在转子在哪个扇区”。三个霍尔组合出来的6个编码,正好对应六步换相中的6个状态。霍尔边沿和反电动势过零点的相位关系,决定了霍尔状态编码在转子圆周上的分布。
如果霍尔安装位置偏了30°电角度,整个霍尔状态码的出现位置就会整体偏移30°。也就是说,同一个霍尔编码(比如101)对应的转子角度变了。如果代码里的换相表是按“霍尔编码→换相状态”一一对应写死的,霍尔装偏之后,查表得到的换相状态就不是当前扇区应该通电的状态,电机自然转不顺。
这里我贴一段自己在某个14极航模电机上实测出来的映射表,注意这只是示例,每一颗电机的绕线方向、霍尔安装方向、ABC相定义不同,换相表都可能不一样,千万不能照抄:
// 霍尔编码(H3 H2 H1)与换相状态对应表 // 电机:14极、星形连接、正转方向 const uint8_t hall_comm_table[8] = { 0xFF, // 000: 无效状态 0b001001, // 001: Q1+Q4 A+B- 0b001100, // 010: Q3+Q2 B+A- 0b000110, // 011: Q5+Q2 C+A- 0b000011, // 100: Q3+Q6 B+C- 0b100001, // 101: Q1+Q6 A+C- 0b100100, // 110: Q5+Q4 C+B- 0xFF // 111: 无效状态 };我建议的实际做法是:先不写死换相表,而是写一个“霍尔状态扫描”程序,手动缓慢转动电机,把6个有效霍尔状态全部记录下来,再根据转向和绕组定义确定每个状态对应的导通相。这样虽然调试时要多花几分钟,但能避免因为霍尔线序、安装方向导致的全盘错误。
3.3 为什么霍尔相位差30°能简化六步换相软件
当霍尔安装相位差为0°(边沿对齐过零点)时,霍尔中断里不能立刻换相,必须做延时。延时的角度是30°,对应的延时时间不是固定值,它跟转速实时相关——转速越快,同样的30°电角度对应的时间越短。这就意味着你要在中断里不断计算转速、算周期、再启动定时器,逻辑复杂而且容易在转速突变时出错。
当霍尔安装相位差做成30°时,霍尔跳变沿本身就是“最优换相点”。中断触发后,不用再算延时,直接查换相表、切换功率管,一气呵成。对于高速电机来说,这个差别非常明显——省掉软件延时的逻辑,换相时刻完全由硬件决定,时序更稳,也减少了抖动。
这也是为什么很多厂家宁愿在霍尔板的机械定位上花功夫,也不愿意在软件里做动态延时。硬件上固定一个30°角,成本只是一次性的设计投入,换来的是软件简单可靠。
4. 霍尔安装相位差30°的实操标定方法
4.1 用示波器抓反电动势和霍尔波形来定标
要判断霍尔安装相位差对不对,最直接的办法就是把反电动势和霍尔波形同时抓到示波器上对比。
操作步骤大概是这样的:
首先把驱动器从电机上断开,别让驱动器继续给电机供电。然后用另一台电机或者电钻、手电钻这类工具,带动被测电机稳定旋转。转速不用太高,中低转速就行,太高了反电动势幅值大,反而容易超过示波器探头的输入范围。
示波器用两个通道。通道1接被测电机的某一相绕组端子和电机中性点。大多数小型BLDC是星形连接,如果中性点没有引出来,可以用三个阻值相同的电阻(例如10kΩ)分别接到三相端子,再把三个电阻的另一端短接在一起,做一个虚拟中性点。这个虚拟中性点在低速下足够用了。
通道2接对应相的霍尔信号。以A相为例,如果霍尔A的输出线接到了控制器某引脚,那就在那个引脚上测。
然后观察两个波形。理想情况下,A相霍尔信号的跳变沿应该比A相反电动势的过零点晚30°电角度出现。示波器上可以用光标直接量算,也可以把霍尔信号作为触发源,看反电动势过零点距离霍尔边沿的时间,再用电机电频率换算成角度。
如果发现偏了,看偏了多少、偏向哪个方向。这个偏差角就是你需要修正的数值,可以通过挪霍尔板或者软件补偿来纠正。
4.2 软件补偿代替机械调整:动态相位校正
霍尔已经被焊死、胶粘死,或者霍尔板位置没法改的情况,在实际项目里特别常见。这时候最省事的方案就是软件补偿。
如果霍尔安装位置只是整体偏移了一个固定角度,那在代码里做一个固定角度偏置就能解决。霍尔中断触发后,启动一个定时器,延时“偏差角度对应的时间”之后再执行换相。由于偏差是固定的,延时角度也是个常量。
如果电机运行转速范围变化很大,动态延时就要算一下。两个相邻霍尔跳变沿之间对应60°电角度,那么30°电角度对应的时间就是两个边沿间隔的一半。所以可以在霍尔中断里用定时器测量本次边沿和上次边沿的时间差ΔT,然后延时ΔT的一半再换相:
// 霍尔边沿中断处理(示意) void hall_edge_isr(void) { uint32_t now = TIM1->CNT; uint32_t delta = now - last_edge_time; // 相邻霍尔边沿间隔,对应60°电角度 last_edge_time = now; // 目标是延时30°电角度,也就是间隔的一半 start_delayed_commutation(delta / 2); }这个方法有一个前提:假设电机瞬时速度基本恒定,相邻边沿间隔代表当前速度。如果电机在加速或者减速,单个边沿间隔会有误差,但因为是逐周期更新,动态响应还算能跟上。想做精细控制的话,可以用锁相环或者速度环预测角速度,再换算延时时间,这就是更高阶的做法了。
顺便提一句,如果是FOC控制,霍尔一般不直接参与六个扇区的换相,而是用来获取转子初始位置和低速时的角度估算。霍尔安装相位差30°会让霍尔状态对应的初始角度整体偏移30°,所以FOC代码里的“hall offset angle”参数要填上这个偏差,否则启动瞬间会输出一个错误方向的电压矢量,轻则抖动,重则反转。
4.3 STM32实现霍尔换相的代码思路
以STM32F103系列为例,一个完整的霍尔六步换相驱动,核心环节大概分三块。
第一块是霍尔信号的采集。三个霍尔建议接在带有外部中断能力的IO上(PA0-PA2这类),同时可以配置成定时器输入捕获,利用硬件捕获霍尔边沿时刻,精度比在中断里读GPIO高很多。霍尔中断里只做一件事:读取当前霍尔编码,查换相表,设置新的功率管组合。
第二块是PWM输出。STM32的高级定时器TIM1或者TIM8可以输出六路互补PWM,带死区插入和刹车功能。六步换相里,非斩波的那几路直接置高或置低,需要调速的那一路用PWM输出。换相表的每个状态,本质上就是一次“哪几路PWM输出什么电平”的组合配置。
第三块是换相动作的原子性。换相必须在霍尔边沿到来后尽快完成,中断里不能做浮点运算、不能做耗时的延时循环。比较稳的做法是:中断里只更新一个volatile变量或者寄存器,把换相逻辑放在主循环里查询并执行。更快的做法是直接在中断里查表写CCR寄存器,几条指令完成换相,延迟极低。
// 霍尔边沿中断:直接换相 void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) { EXTI_ClearITPendingBit(EXTI_Line0); uint8_t hall = read_hall_state(); // 读取3个霍尔引脚电平 uint16_t comm = hall_comm_table[hall]; // 查换相表 set_commutation(comm); // 写功率管开关组合 } }这段代码本身不复杂,真正考验人的是霍尔线序、相位差、换相表三者的配合。最好先把相位差标定好,再在代码里把换相表验证一遍。
5. 实际调试中判断相位是否正确的方法
5.1 电流波形和噪声判断换相点偏移
如果手边暂时没有另一台电机来拖动被测电机,没办法直接测反电动势,还有一个很朴素但非常好用的方法:看母线电流波形和电机噪声。
先给电机通上电,用电流探头夹母线,或者串一个采样电阻到母线负端,把电流波形显示在示波器上。正确换相时,母线电流在6个扇区交界处会有轻微的60°周期波动,但总体平稳,每个扇区内的电流曲线形状接近一致。
如果换相点明显提前,每次换相瞬间电流会突然跌一下或者冲一下,出现一个明显的尖峰,然后电流再爬回正常值。电机听起来会有“哒、哒、哒”的换相噪声,频率等于换相频率,即电频率乘以6除以极对数?不对,直接说听感就是高频周期性哒哒声。同时电机会有明显的振动,用手摸外壳能感觉到。
如果换相点滞后,母线电流在每个扇区的后半段会明显抬高,换相瞬间电流陡降,电流波形看起来就像每个扇区尾部“拱起来”。这种工况下电机会发热,效率低,带载能力下降,声音发闷。
这个方法非常适合在实验室快速判断相位是否明显偏移,但不适合精确标定微小偏差,因为电流波形的变化在小角度偏差下不够敏感。
5.2 转矩波动与效率对比验证相位优化效果
要精确找到这台电机的最优换相角,我推荐一个土办法:改变霍尔板角度或软件补偿角,每次记录空载电流和轻载电流,画出一条“换相角-电流”曲线。
具体操作是这样:先把电机固定在一个台架上,不加负载,只让电机稳定运行在一个固定转速。记录此时的母线电流。然后把软件里的换相角补偿值从0°开始,每5°一档,从0°扫到60°,每档记录一次母线电流。为了排除转速波动影响,每次都要等到转速稳定后再记录。
正常情况下,你会得到一条类似U形的曲线,低谷区域就是最优换相角范围。这个区间通常很宽,可能从25°到40°都是低电流区,取中间值就好。
我实际做过一个14极的无人机电机,霍尔初始安装相位差是基于理论计算的30°,但扫完曲线之后发现最优值其实在35°左右。原因就是这个电机的反电动势波形有明显谐波,梯形波平顶区比理想模型窄。软件补偿值改成35°之后,空载电流从1.2A降到0.8A,噪声也明显小了一圈。所以说,30°永远是起点,不是终点。
5.3 带载试验验证相位优化的实际收益
空载电流只能说明损耗趋势,真正判断换相角好坏还要看带载能力。有测功机就用测功机,没有的话可以简单地在电机轴上固定一个摩擦力矩已知的负载,或者用磁粉制动器。
带载试验主要看两个指标:一是同一PWM占空比下,换相角调整后电机转速是否提升;二是同一转速下,母线电流是否下降。转速提升或电流下降,都说明换相优化有效。
需要注意,带载试验时电机的发热也是一个重要信号。换相点偏得越远,绕组里无效电流越多,电机和驱动器的温升就越高。用手摸电机外壳,如果某一次调整后温度明显下降,说明换相角更好了。
6. 常见问题与排查经验总结
6.1 高速丢步与RC滤波延迟问题
先说一个我踩过的坑。霍尔信号线上加RC滤波是很多工程师的习惯动作,目的是滤掉PWM耦合过来的高频噪声。但RC滤波器会造成相位滞后,而且这个滞后角度不是固定的,它随电频率升高而增大。
算一下就知道了:假设霍尔线上用了10kΩ电阻加10nF电容,那么截止频率大约是1.6kHz。电机在高速运行,比如电频率到1kHz时,RC滤波造成的相移约等于arctan(1000/1600),差不多32°。你的霍尔好不容易按30°相位差装好了,一个滤波电容直接把这个优势全吃掉,霍尔边沿又被推迟了30多度,换相点等于偏了将近60°。
所以霍尔信号线上的RC值宁小勿大。如果一定要滤波,优先考虑用小电容或者磁珠,然后把这个额外相移算进补偿角里去,不要以为加个电容不影响时序。
高速丢步的另一个常见原因是软件轮询霍尔状态。很多初学方案把三个霍尔接在普通GPIO上,主循环里不断循环读取。低速时没问题,转速一高霍尔信号变化频率就超出主循环扫描频率,丢状态是必然的。霍尔一定要用外部中断或定时器输入捕获,不要用轮询。
另外,霍尔信号在换相瞬间存在多个边沿几乎同时到达的情况,如果三个霍尔都用了独立外部中断,中断优先级没配好,会导致霍尔状态读取出现中间态。建议三个霍尔中断用相同优先级,或者把三个霍尔接到一个定时器的三个捕获通道,由硬件保证采样一致性。
6.2 几个容易被忽略的霍尔安装细节
霍尔元件的敏感面方向是个大坑。霍尔传感器对磁场方向是敏感的,装反了输出的极性就反了,相当于换相表整体错了60°。检查时不要只看PCB背面丝印,要看霍尔元件本体上的标记,并且确认和电机磁钢充磁方向匹配。
霍尔板的机械定位孔公差也会带来误差。对于多极电机,0.5°机械角就能对应好几度电角度。如果是做小批量样机,建议霍尔板定位孔做成长圆孔或者腰形孔,方便调试时微调角度。我曾经见过一款产品因为霍尔板定位孔太紧,装进去之后角度偏差达到2°机械角,在14极电机上就是14°电角度,带载能力明显下降,后来把孔改成长圆孔才解决。
温度影响也值得注意。霍尔元件的翻转阈值随温度漂移,虽然很小,但电机长时间运行发热后,霍尔切换点会发生微小的移动。对精度要求高的场合,可以在软件里做温度补偿,或者在选型时选温度系数更低的霍尔。
还有霍尔布局方式,同一个电机有120°布局和60°布局两种霍尔摆放方式。120°布局的三个霍尔两两间隔120°电角度,60°布局间隔60°电角度,两种方式霍尔状态编码的顺序完全不同,网上找的换相表不能直接混用。判断方法很简单:手动转一圈电机,记录三个霍尔输出的状态序列,如果六个有效状态每次只有一个位变化,就是60°布局;如果每次有两个位变化,就是120°布局。
6.3 问题速查表
最后整理一张速查表,调试时可以直接对照:
| 故障现象 | 可能原因 | 检查方法 |
|---|---|---|
| 电机不启动、发抖 | 换相表不对或霍尔线序错误 | 扫描霍尔状态,重新建立映射 |
| 启动正常但反向运转 | 换相表反了 | 只反转换相表顺序验证 |
| 空载电流大、噪声大 | 霍尔安装相位偏差大 | 对比反电动势过零点,修正相位 |
| 带载无力、发热明显 | 换相点滞后 | 软件补偿角正向调整 |
| 高速时突然停转或抖动 | 霍尔信号丢步 | 改用中断/捕获,去掉大RC滤波 |
| 霍尔状态出现000或111 | 霍尔损坏或接线短路开路 | 单独测试每个霍尔输出 |
| 正转正常反转异常 | 霍尔敏感面或换相表非对称 | 检查霍尔方向,单独标定反转表 |
6.4 双向运转电机的相位折中策略
如果一个电机需要正反转都能顺畅工作,霍尔安装相位差30°的方案会有点尴尬。因为霍尔边沿和反电动势过零点的相对位置是固定的,正转时最优的30°在反转时大概率就不是最优了。对于有刷直流电机不存在这个问题,但无刷电机双向运行很常见,比如电钻、云台电机、车船推进器。
我的做法是:先测出正转最优角和反转最优角,然后在两个角度之间取一个折中值,软件里再根据转向动态补偿差值。比如正转最优35°,反转最优25°,霍尔板先按30°装,正转时软件补偿+5°,反转时软件补偿-5°。这样两个方向都能工作在效率较高的区间。
如果电机只做单向运行,那就不要折中,直接装到该方向的最优角。
6.5 标定时长与团队协作经验
霍尔相位标定这事,看起来就是调个角度,实际做起来很耗时。我在项目里一般把标定流程固定成一套标准化操作:先用示波器法粗测反电动势和霍尔相位差,再用电流扫描法找空载电流U形曲线低谷,最后用带载试验确认最优角。整个流程走下来,一颗新电机大约需要半天时间。
标定数据一定要记录在电机参数表里,包括极对数、霍尔布局类型、霍尔安装相位差、正转和反转的最优补偿角、RC滤波参数、标定时环境温度。这些数据看起来不起眼,等到你做下一颗类似电机、或者客户改了霍尔板布局时,能省非常多的事情。
我个人在实际操作中的体会是:霍尔相位差30°不是一个需要背下来的死数字,而是一条帮你理清思路的主线。理解了反电动势和霍尔的关系、理解了那30°是怎么来的,后面不管是做方波六步换相、还是FOC初始角补偿,你都能很快定位问题。不少调试翻车的同学,本质不是不会写换相表,而是没有建立起“反电动势过零点、霍尔边沿、换相点”这三个位置之间的相位概念。把这几个位置搞清爽,无刷电机驱动在你手里就不再是玄学。