基于S12ZVM的无感FOC堵转检测

news/2024/5/20 13:09:03 标签: 电机控制, FOC, 无感, S12ZVM, 堵转

无刷直流电机的无传感器控制一般包含方波控制正弦波控制。无论是哪一种控制方式,由于没有传感器信号的接入,一旦遇到外界阻力或者巨大的负载突变,都可能会使得系统进入到堵转状态。在这种堵转状态下,电机只是原地抖动并消耗电流,而系统会处于异常状态。长时间保持这样的状态,无疑是有害的。

众所周知,对于有传感器的无刷直流电机系统,堵转检测就变得很简单了。只需要检测传感器信号是否在正常刷新就可以了,而对于无传感器系统,可靠的堵转检测就变得没那么容易了。本文会就这个议题进行详尽的解析,希望可以起到抛砖引玉的作用,对大家无传感器的无刷直流电机控制项目起到实际的帮助作用。

目前对于无刷直流电机的无传感器FOC控制来讲,其堵转检测一般有两种方法,速度波动检测法反电动势校验法

速度波动检测法为什么不行?

速度波动检测法的基本思路就是在快速环路(电流环)内记录观测器输出的速度值,然后在慢速环路(速度环)内计算速度的平均值以及速度的波动。如果速度的波动超过设定的阈值就可以判断为发生了堵转事件。是不是感觉这种方法似曾相识呢。速度波动法和前面介绍的无传感器BLDC的方波控制堵转检测实质上是一个思路,那就是判断速度反馈是否合理。由于速度波动检测法本身比较简单,另外对于一些反电动势观测器来讲,在某些特定场景下,这种方法可能失效,特别是负载突变的时候,反电动观测器还会继续工作,电机相电流波形也很好,速度输出也会很稳定,但实际上电机并没有运行而是在原地抖动。基于这个原因,本文并不推荐速度波动检测法来检测堵转事件,也就不再花篇幅来深入下去了。另一方面,反电动势校验法则可靠很多,会是本文的重点。

反电动势校验法

𝐸𝛿:当前实际的反电动势电压𝐸𝑞

𝑊:角速度

𝐾𝑒:反电动势斜率

𝐾𝑜𝑓𝑓𝑠𝑒𝑡:反电动势固定偏差

ε:允许偏差范围百分比

原理

当观测器正常工作时,𝐸𝛿的输出是与转速成比例的,转速稳定的情况下,𝐸𝛿也是平稳的。有两种途径来获得q轴的反电动势:

1. 观测器输出得到。

2. 从转速和反电动势系数得到。

如果两个途径得到的反电动势Eq相差比较大,超出了阈值,就可以判定为堵转事件。

过程

由反电动势观测器得出当前的反电动势电压𝐸𝑞绝对值,通过公式  𝐸𝑞=𝐾𝑒×𝑊+𝐾𝑜𝑓𝑓𝑠𝑒𝑡  计算当前转速𝑊下的正常的反电动势电压,设置一个比较范围阈值ε(反电动势电压是有点波动的),𝐸𝑞×(1−𝜀)<𝐸𝛿<𝐸𝑞×(1+𝜀)  则代表反电动势没堵转,出了阈值范围一定时间即视为堵转情况。

反电动势校验法原理框图

 

求Ke和Koffset

想用转速求得反电动势电压需要确定线性方程  𝐸𝑞=𝐾𝑒×𝑊+𝐾𝑜𝑓𝑓𝑠𝑒𝑡  中的𝐾𝑒和𝐾𝑜𝑓𝑓𝑠𝑒𝑡。下面是确定参数的步骤。

1. 将电机转动起来,记录下几个转速下的反电动势电压的绝对值。下面是一个白色鼓风机的数据表。

𝑊(RPM)

500

1000

1500

2000

𝐸𝑞(V)

1.0

2.5

3.6

4.6

2. NXP代码中用的是Q值数,将上面的数据表转化为Q值数的数据表。上面转速和𝐸𝑞均为𝑄15格式,转速定标最大转速10000RPM,𝐸𝑞定标最大电压25V。

𝑊(𝑄15)

0.05

0.1

0.15

0.2

𝐸𝑞(𝑄15)

0.048

0.1

0.144

0.184

3. 因为转速低的时候速度波动大,容易堵转,所以取低转速数据𝑊,𝐸𝑞=0.05,0.048、0.1,0.1,代入方程𝐸𝑞=𝐾𝑒×𝑊+𝐾𝑜𝑓𝑓𝑠𝑒𝑡,求得𝐾𝑒=1.04、𝐾𝑜𝑓𝑓𝑠𝑒𝑡=−0.004

4. 代入代码中即可。

 

将参数填入代码

1. 计算𝐸𝛿、𝐸𝑞×1−𝜀、𝐸𝑞×1+𝜀。

2. RunCountStallDetectCount上电就进行计数,userdefCount为用户定义的值,当超过该值时才进行堵转检测,可以排除刚上电时转速不稳定导致的错误判断。符合堵转情况StallErrorCount会加1。

3.当StallDetectCount加到65536会重新归零,代码中StallDetectCount从10到65536时StallErrorCount会一直被清零,只有StallDetectCount从0到1的时候堵转检测才会有效,才会产生堵转错误。(这里会导致堵转检测没有那么灵敏(其实也不需要那么灵敏,进入一段观察期),也就是说当你在计数10-65536期间进行堵转了,需要等到计数0-10时才会报堵转错误)。

效果显示

 


http://www.niftyadmin.cn/n/948149.html

相关文章

基于S12ZVM的无感FOC失步检测

失步检测的原理是进入闭环后&#xff0c;闭环观测器计算的位置和开环速度斜坡计算的位置不断进行比较&#xff0c;相差过大一定次数就会被失步错误&#xff0c;说明闭环观测器跑飞了。当请求速度和当前实际速度差很多时会报失速错误。 测试方法&#xff1a;可以故意把跟随器的参…

基于S12ZVM的无感FOC缺相检测

缺相检测的原理是当发生缺相事件时&#xff0c;所缺相的相电流会在零附近震荡&#xff0c;跟其他两相形成鲜明对比。当检测到其中一相电流值低于阈值一段时间&#xff0c;就产生缺相错误。&#xff08;首先确定电流较大时&#xff0c;三相电流波形为正弦波&#xff09; 测试方法…

基于S12ZVM的NXP单电阻FOC电流重构原理分析

三相桥一共有8种开关状态&#xff0c;在开关状态为111或000的时候不能有效采样到任一三相电流&#xff0c;除去全开111或全关000还剩下6种开关状态。如下图为开关状态101期间&#xff0c;可以采样到B相的电流&#xff0c;以此类推可得下表。 开关状态CBA 001 011 010 110 …

方波续流分析

实在是懒得调格式了- -&#xff01;

NXP无感方波原理

将就着看吧&#xff0c;从onenote复制过来的- -&#xff01;

mexopencv:matlab+opencv+C++混合编程

主要步骤参考自&#xff1a;https://blog.csdn.net/Woosual/article/details/89839436 一、以opencv的sources文件作为文件源&#xff0c;外部文件为opencv_contrib文件&#xff0c;进行CMake&#xff1b; 二、Matlab2018aVS2015&#xff1a;在matlab中编译失败&#xff1b;将…

opencv3.4.1+solvepnp()

在opencv3.4.1中&#xff0c;默认upnp和dls使用Epnp实现&#xff0c;为了了解Upnp算法的实现效果&#xff0c;修改了solvepnp.cpp中的代码。修改后的代码如下&#xff1a; if (flags SOLVEPNP_EPNP) //|| flags SOLVEPNP_DLS || flags SOLVEPNP_UPNP{Mat undistortedPoints…

Word章节自动编号+公式编号

目录 效果 1. 章节自动编号&#xff0c;定义一个新的多级列表 2. 标题1去掉前面的方块 3. 公式编号 3.1 创建公式样式&#xff0c;主要是设置制表位&#xff0c; 3.2 给公式附上“域代码”&#xff0c;这一步就是公式编号了 效果 1. 章节自动编号&#xff0c;定义一个新的多…