成为熟悉FOC的磁力菇03——有感霍尔控制
本文讲述Hall控制
磁力菇也就图一乐,长期运营还得是吸金磁。
三相之力
今天聊聊使用霍尔传感器获得电角度,用作FOC中的计算。
霍尔效应与霍尔传感器
之前说过FOC中获得电角度分为有感与无感。无感算法基于反电动势观测电角度,在中高速下能有不错的表现,但是低速下就难以观测反电动势,也没法收敛电角度。此时就需要有感作为补充。有感中常用的传感器有变压器,编码器等等。有些对环境较为敏感,特别是光学性质的传感器。所以电机常用磁编码器或者霍尔传感器。
还是聊聊我经常接触的霍尔传感器。首先,得先知道霍尔效应。简而言之,通电导体受磁场作用,会在两端产生电压。利用这种效应可以做成霍尔元件,用于检测磁场的大小与方向。受磁场强度的影响,霍尔元件产生的电压会发生变化。
基于此,就可以在电机中嵌入霍尔传感器作为位置检测的手段。电机中通常装有三个霍尔传感器,按安装角度分为60°和120°。图片出自B站up澄远FOC的Hall速度控制。
当霍尔传感器在作用范围内受到转子的磁场影响就会输出高电平 ,否则为低电平。基于霍尔效应,霍尔传感器就会有这样的真值表。左边为120°安装顺时针旋转的霍尔输出,值为546231。右边则是60°的输出。根据真值表,也可以判断电机的旋转方向。补充一下,两种安装方式没有本质区别,区分标志在于60°安装会有111和000的输出。如果想要转换也很容易,只需要将HallB与HallC交换,再取反HallB的值就可以。
那么问题来了,如果准备启动电机,读取此刻的霍尔信号线,该让电角度是多少?举个例子,在120°安装(之后都用120°举例)的情况下,读到了101。此时的电角度就在0°-60°的范围内,该算多少?如此就采取中庸之道,直接取中间值30°,其他的扇区也这么处理。
安装误差
在正式开始使用霍尔传感器之前,先做一点准备工作。尽管说要利用霍尔传感器的角度获得电角度,但是这是在霍尔角度0°与电角度0°重合的理想情况下。实际的电机中霍尔传感器并不能对准到电角度0°的位置。这就引出同步相位角的概念。简单来说,就是霍尔传感器角度为0°的转子位置与电角度为0°处转子位置的角度差。有磁力菇要疑惑了,这些角度怎么测出来?
理想情况下,霍尔传感器角度到0°时,从上面的真值表中可以看到Ha产生了上升沿。而说电角度前,要提到反电动势。电机的电压方程中,反电动势会超前转子磁链90°,也就是超前d轴90°。不要忘记,电角度就是d轴的旋转角度,所以电角度为0时,反电动势相位为90°,达到峰值。
联系下面ST的电机手册,可以有几个结论。
- 理想状况下,电角度0°能对应到霍尔传感器的0°,即Ha的上升沿刚好与反电动势的峰值同时出现。
- 但是理想状况不存在,根据下图的delay占据整个反电动势周期的比例,就可以算得误差角度(一个周期为2pi)。也就是在程序中需要补偿的同步相位角。

常规的解决思路有两个
- 如上面所说,搭建电路,测量Hall波形与反电动势,根据delay关系计算相位偏差角度。可以参考B站up主欧拉电子的测量电机霍尔传感器同步角度及反电动势常数
- 有的磁力菇表示囊中羞涩,没有示波器,没有电机台,那你能帮帮我吗?好8,先看下面。
标贴式转矩方程: T e = 3 2 p n ∗ ψ r ∗ I s ∗ s i n β 标贴式转矩方程:T_e=\frac{3}{2}p_n*\psi_r*I_s*sin\beta 标贴式转矩方程:Te=23pn∗ψr∗Is∗sinβ
显然不校准偏移角,计算使用的电角度也是不准的,所以无法做到理想的90°转矩角控制。在输出转矩相同的情况下,偏移角度越准,所需电流就越小。也可以说,电流恒定的情况下,电机转速就越快。
选择两种策略中的一种,首先让电机转动起来。通过不断细微地修改同步角,就可以大致估计出准确值。
角度与速度计算
在校正工作完成之后,现在就要正式看看如何利用霍尔传感器获得电角度。实际应用时,电角度,机械角度,角速度,转速要弄清楚,单位也不能打架。
- 启动阶段
如之前所述,电机还没有转动的时候读取霍尔信号值,获得当前的估计电角度,即扇区中点电角度。 - 驱动阶段
现在该看一看,为什么一个分辨率只有6的霍尔可以提供电角度。答案是积分。在每个FOC控制周期,都会进行电角度的计算。注意,是计算而不是读取。插播一下,SVPWM计算是整个FOC中频率最高的任务,电角度同样如此,没角度还坐标变换?。每次霍尔信号产生跳变,就代表进入了新的扇区。计算相邻两次跳变的时间,扇区范围60°是确定的,所以可以计算出速度,单位是弧度。通过在上一个扇区求出的速度,就可以在当前任务周期通过积分获得角度。
采样频率远大于系统频率,在这里单片机采样速度远大于电机转速,例如10KHz下,一个四对极2000RPM的电机,在一个扇区内就会有十二三次采样(10000/4/(2000/60*6)),这就是当前旋转状态下的分辨率。
整理一下,可以得出这样的公式:
{ ω i − 1 = π / 3 t i − t i − 1 θ = θ i + ω i − 1 Δ T θ i < θ < θ i + 1 \begin{cases} \omega_{i-1}=\frac{\pi/3}{t_{i}-t_{i-1}}\\[0.2cm] \theta=\theta_i+\omega_{i-1}\Delta{T} \qquad \theta_i<\theta<\theta_{i+1} \end{cases} ⎩
⎨
⎧ωi−1=ti−ti−1π/3θ=θi+ωi−1ΔTθi<θ<θi+1
i是当前扇区的信号,ωi-1是上一个扇区的平均速度,θi是霍尔传感器的触发角度,ΔT是采样周期,就是PWM的周期。为了消除积分造成的累计误差,在每一次到达扇区边沿的时候更新一次转子角度。也可以尝试在整个2pi周期完成后进行补偿,可以减少角度跳变导致的转矩波动。
在电机正常运转时,这样的插值方法能有不错的效果。但是也有新的问题。电机如果在加减速,估算速度就会不准,导致每次换扇区引发角度突变,这可能就要别的算法。第二,每个扇区真的是60°吗?除了0°霍尔角度与0°电角度的对齐,三个霍尔也不能保证间隔120°的安装。引用一下知乎博主土豆泥的回答。
这个问题并非不可解决。无论怎样,六个扇区的总和一定是360°,仔细观察上图,能发现相邻三个扇区角度和是180°,所以在计算速度计算时,可以考虑将上三个扇区纳入计算。还有一种方法就是霍尔自学习。
霍尔自学习
内容学习自B站up主澄远FOC的Hall自学习,为我提供了新思路,也安利一下。
尽管三个霍尔的间隔有时并非理想的120°,但是误差也不会太大。但是常规的电角度校正方法都会被这样的间隔误差影响,导致电角度计算不精确。在没有外部仪器的帮助下获得每个霍尔状态的角度信息,称之为霍尔自学习。
大概方法就是,通过IF自主生成电角度,并让电机转动自然触发霍尔扇区,此时记录下生成的电角度信息,就能得到近似真实的霍尔角度。需要空载,相对较大的电流以及合适的转速三个条件。自主生成的电角度其实就是电机的转速。补充一下,IF就是电流/频率控制,简而言之通过自己设定的电角度频率,再将电机电流反馈回来,实现电流的精准控制,但是因为没有获得真实的电角度,所以未能实现90°转矩角控制。
借用一下图片详细说明下
- 首先明确客观存在的转子的αβ轴和dq轴,以及IF模式生成的dvqv轴。令idv=0,θe_ref=-pi/2,iqv取一个合适的电流,假设为A。经过反Park变换,iαv=A,iβ=0,此时定子的磁场指向α轴,吸引转子执行对齐,如图-1。
- 接着就要生成和参考速度频率对应的虚拟电角度θe_ref。定子会以ωe_ref的速度旋转
- 如图-3,目标是让qv轴和d轴接近,此时的夹角β就是转矩角。注意虽然转矩角很小,但也不会为0,否则就无法牵引转子旋转。根据qv,dv和d轴关系,θe_ref+pi/2≈θe,近似获得转子的真实位置。

可以看出转矩角的大小会影响估算电角度的精度,这里抛出几个结论,详情可以参考Hall自学习8分钟处。
- 小负载,小电流,会需要较大的转矩角。
- 同等负载下,加大电流会使转矩角减小。
- 同等电流下,加大负载会使转矩角增大。
- 电流过大,虽然可以减小转矩角,但会产生转速波动,即生成电角度波动,影响估算。
现在通过IF可以获得转子的电角度信息,在每次霍尔跳变的时候记录下此时生成的电角度,就能得到每个扇区的真实电角度。可以得到扇区状态表与扇区状态角度表。
通过霍尔自学习,能更优雅地驱动电机,好处多多。
- 更加平滑精准的电角度输出。
- 学习的扇区角度是绝对角度,而非根据60°相对角累加。并且已经包含了相位偏移角,所以也无需校正。
- 霍尔线自适应,我觉得这是最有价值的地方。前面提过霍尔ABC的真值表,逆时针旋转输出513264,但是信号线如果接错位置就无法正确计算角度。通过霍尔自学习,即使调换了信号线,也可以获得每一个扇区状态及其对应的电角度。这就相当于一个黑盒模型,无需知道内部具体的状态和角度,只要关注外部的使用。再拓宽一下,甚至60°和120°的安装位置也没有区别了。另外还可以根据上次与本次的状态得到电机的运行方向。
常看常新
- 我最先接触的霍尔电机应用是电瓶车的轮毂电机。一是霍尔传感器成本较低,二是精度要求不高。客观来讲,霍尔电机的角度都是通过插值计算出来的,精度有限,更高精度的编码器就要考虑环境和成本,低速性能差强人意。虽然电瓶车的电机低速性能比较松弛,但是它的极对数又弥补了这点。高极对数能提高效率,毕竟一个机械周期被分割出了pn个电气周期。
- 插播一下,电瓶车的电机极对数一般是25/30。越高的极对数,在输出功率不变小,会有更低的转速和更高的扭矩,也是因为轮毂电机的应用场景考虑(负载、地形),~~5000RPM的电瓶车电机有点恐怖了。~~另外吵闹吹风机和潜行电车也能看出极对数对噪声的影响。
写在最后
有感的霍尔控制,暂时就到这里。下一次我想回到开始,聊聊VF/IF控制,为无感算法开个头。又或者看看PID控制?
更多推荐



所有评论(0)