> 文章列表 > 关于不同电机控制策略下ADC采样时序的问题

关于不同电机控制策略下ADC采样时序的问题

关于不同电机控制策略下ADC采样时序的问题

目录

前面

BLDC

HALL

BEMF

FOC

电阻

双电阻

三电阻

关于采样串口太窄的问题

最后


前面

无论是有感还是无感,FOC还是BLDC,ADC采样都是非常重要的一环,其中难点在时序,采什么?何时采样?怎么采样?持续时间?都是值得去探究的问题。

注:在实际工程应用里,一切不贴合实际情况的分析都是che,所以这里只是就一些面上的问题进行分析,具体细节实现还需自己去尝试。

BLDC

HALL

对于BLDC控制策略来讲,最简单的是HALL有感,通过三个HALL传感器判断转子位置、转子速度、触发换相…………

不过主流很少使用ADC来实现,而是使用定时器的输入捕获功能,通过捕获到HALL信号的上升沿、下降沿进行换相判断,位置判断、速度判断

举例:在S32K144中,FTM模块与一般定时器类似,具有输入捕获功能。

如上图, FTM2_CH1, FTM2_CH0, FTM1_CH1分别是三个通道对应HALL的ABC信号。

靠着上升—下降沿的捕获功能,准确实现六步换相策略。还可根据Tcom换相时间,计算转子速度。

关于一些更细节的东西可以看看这篇笔记:

有感BLDC—Hall代码易错点 · 语雀

BEMF

无感BLDC控制离不开电动势过零点检测

关于反电动势检测实现的具体原理这里不做赘述,只点出下面几点:

反电动势过零点检测要在PWM工作阶段进行采集,如下图:

绿色标注出来的部分便是反电动势的采样窗口,应在PWM高电平将要结束时测量。

当然有时候还会出现一些特殊情况,比如采样的时候刚好落在了MOS关断的时候,这样岂不是什么的采不到了?

别怕,如何解决可以参考这篇笔记:

反电动势过零点出现在MOS关断的时候怎么办? · 语雀

采集到准确的反电动势只是第一步,还需要与总线电压的1/2作比较来判断过零点,所以总线电压与反电动势同时进行采样的

除此之外还有总线电流的采样,放在PWM中心进行采样就可以。

但具体什么时候开始采样?就有的分析了:

在S32K144中经常采用FTM与PDB(可编程延时模块)共同触发ADC采样。

ADC由FTM和PDB模块触发 · 语雀

如上图,咱们先从上往下看,最上面就是PWM调制策略的实现:

由FTM0 init_trig进行换相触发;FTM3采用中心对齐的PWM输出模式,PWM周期为50us,频率为20KHz;通过修改FTM3_C0V的数值可以对占空比进行调节;死区时间通过配置PWM互补输出模式自动生成。

再继续往下便是PDB可编程延时模块,也就是决定反电动势与总线电压什么时候采的关键配置

两个PDB模块分别对应ADC0,ADC1。

简单的理解PDB也是个计数器,和PWM一起开始,到达指定值时进行触发pretrig0。

从上图可以看出,BEMF是在PWM高电平后半段开始进行采集的,符合上面的分析。

再放一个总图:里面还有很多的细节,大家可以自己探索一下。

FOC

FOC矢量控制,一个关键环节就是相电流的采样与重构。

现在应用最广的便是分流电阻法:单电阻、双电阻、三电阻。

单电阻

采样电阻在三相下桥臂汇流点与电源地之间。

单电阻采样需要每个PWM周期采样两次,才可以重构出来三相的电流。

电流流向:

三相状态为100时,此时测出的电流为Ia。

三相状态为110时,采到的电流时Ic。

然后根据基尔霍夫电流定律求出另一相就可以了。

注意:当占空比变化时,很有可能会出现采样窗口非常小的问题,所以占空比阈值一定要设置好,防止出现采样转换还没完成就又到下一轮采样的问题。

双电阻

双电阻采样每个PWM周期进行一次采样即可

采样时间保证在下桥臂开通的情况,并在PWM的中心对称点

三电阻

每一相桥臂下端都设置一个采样电阻。

从理论上来说,可以同时采集三相的电流,但实际上为了避免某一项下桥臂开通时间太短的问题,导致电流采样不准确,可以避开这一相,采集另外两相,进行分扇区采样

关于采样串口太窄的问题

从上面的单、双、三电阻采样发现,采样窗口过窄,转换时间长是一个不能忽视的问题,解决办法也多种多样,这里分享一个NXP的方案。

每两个PWM周期采集一次相电流。

在PWM周期开始(pretrig0),直流母线电压测量首先由PDB1触发。

A相和B相电流在PWM周期的中间同时测量,此时两相下桥臂打开,电流通过分流电阻。PDB0在pretrig0处触发A相电流测量,在pretrig1触发B相电流测量。

CPU由ADC1转换完全中断服务例程触发。基于上一步存储的ADC0和ADC1值,当前的PI控制器计算新的PWM占空比。然后将这些模块作为PWM模块(FTM3)的新参考发送,并在下一个PWM周期中生效。

在ADC1转换中,FTM3初始化触发器被禁用

因此,由于缺少init_trig信号,PDB0和PDB1在下一个PWM周期内没有被触发。

FTM3在PDB1中断服务例程中再次启用FTM3初始化触发器。

借此来保证每100u进行一次相电流的检测与FOC计算。

最后

关于ADC采样时序的问题还是要根据具体情况具体分析,没有绝对的正确,只有合适不合适。