模数转换器
电流测量页面决定了在何处放置传感器,以及在何时进行采样。本页则探讨采样之后返回的数据究竟是什么。
不是安培,而是整数。在分流电阻与 Clarke 变换之间,有一个码值数量有限的模数转换器(ADC),而这些码值需要覆盖多大的电流范围,直接决定了驱动器观测一切信号的精细程度。
除法本身很简单。有意思的是,当三相电流合并到两个坐标轴上时,量化舍入误差会发生什么变化——因为其结果与单相指标所暗示的截然不同,而且同时在两个相反的方向上偏离直觉。
单个码值对应的安培数
以零点为中心的双极性采样链跨越两倍的满量程电流,因此
对于一个配置为±10 A 的 12 位转换器,每个码值对应的电流为 4.88 mA。量化误差在每个码值区间内均匀分布,因此其均方根值为 — 每相为 1.41 mA。
| 分辨率 | 单个码值 | 每相噪声 |
|---|---|---|
| 10 位 | 19.5 mA | 5.64 mA |
| 12 位 | 4.88 mA | 1.41 mA |
| 14 位 | 1.22 mA | 0.352 mA |
| 16 位 | 0.305 mA | 0.088 mA |
零点恰好落在某个码值之上,而不是介于两个码值之间。驱动器在很大一部分运行时间里都处于零电流附近;如果转换器在零点附近来回跳码而无法直接读出零值,这种抖动就会直接传入转矩。
进入 dq 坐标系的并非离开各相时的样貌
三相电流各自独立进行量化舍入,随后合成到两个坐标轴上。接下来发生的两件事都值得了解,而且它们的作用方向恰好相反。
RMS 噪声变小了。 等幅值 Clarke 变换将三个相互独立的误差映射到两个坐标轴上,每轴的方差增益均为 ;而 Park 变换只是旋转,不改变统计特性。因此每个 dq 轴承载的噪声有效值为
在 12 位分辨率、±10 A 量程下, 和 上的噪声为 1.15 mA,而每相噪声为 1.41 mA。将三路测量值合并到两个坐标轴上,会将一部分量化舍入误差平均掉。
最坏情况反而变大了。 dq 轴上的峰值偏差并非半个码值。由于坐标变换是加权组合,三相的误差可能会“合谋”叠加:
由于每个 最大为半个码值,最坏情况便是半个码值乘以各系数绝对值之和——在 60° 电角度处,第二项与第三项不再相互抵消,该系数之和恰好达到 。因此误差上界为三分之二个码值,比单相误差上界大了三分之一。
在试验台上 直觉往往认为半个码值就是误差上界,但这在这里是错的。如果在 dq 误差轨迹周围画一条半码宽的边界带,轨迹会轻易越过它——在 8 位分辨率下,扫描轨迹可达 0.565 个码值,明显超出了半个码值。
上述图形在被测试发现之前确实存在这一缺陷,因此core/adc将其作为派生常量,并附带相应的代数表达式,而不是简单地以某个记忆中的数值来表示。
用不上的量程,就是白白损失的分辨率
量化舍入误差是绝对量,而非按比例缩放的相对量。如果转换器的量程是按某个你希望永远不会出现的故障电流来设计的,那么大量的码值都会被白白浪费:
| 工作峰值,在 ±10 A 的量程上 | 真正起作用的位数 |
|---|---|
| 10 A | 12.0 |
| 6 A | 11.3 |
| 1 A | 8.7 |
每将您实际使用的电流减半一次,就会损失恰好一位的精度。如果为前端设计时按10 A故障电流来选型,而电机运行电流仅为1 A,那么您就白白浪费了所购买的12位分辨率中的3.3位——而且无论您驱动的是10 A还是100 mA,上的噪声都同样是1.15 mA。
这就是为什么要根据正常运行电流来设定满量程,并让硬件比较器去捕捉过流故障——这也正是外设页面在那里配置比较器的原因。
这些有影响吗?
在参考电机上,转矩常数为 = 0.051 N·m/A,因此1.15 mA的噪声相当于56 µN·m——而在6 A时约为0.31 N·m,误差不到万分之二。
所以对于转矩而言,答案是否定的。12位已经足够,而16位则是在浪费成本。
真正受影响的是后续所有进行积分运算的环节。电流环积分器、磁链观测器、基于位置差分构建的速度估算——它们都会不断累积转换器舍入掉的残差,而舍入中的任何偏置都不会像随机噪声那样被平均抵消。这就是为什么上一页提到的零点偏置校准必不可少,而最后一位分辨率却往往无关紧要。
要点回顾
- 单个码值对应 ;量化噪声有效值则为该值除以 。
- dq 坐标系下的 RMS 噪声是单相数值的 ——之所以更小,是因为三路测量值被合并到了两个坐标轴上。
- 在 dq 坐标系下,峰值 的偏差是一个码值的三分之二,而不是一半。直观的边界值是基于每相的,在变换后不再适用。
- 舍入是绝对的。实际使用的电流每减半一次都会损失一位精度,因此应根据工作点合理设定量程,并让硬件负责捕捉故障。
- 量化噪声对于转矩来说可以忽略不计,但对于任何需要积分的量则不可忽视。