基于S12ZVM的无感FOC堵转检测

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

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

目前对于无刷直流电机的无传感器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时才会报堵转错误)。

效果显示

 

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN驱动软件设计及功能测试是针对S12ZVM(Motorola 16位微控制器)的CAN总线驱动软件进行设计和测试的过程。这个软件可以实现CAN通讯协议的解析和交互,使得不同的模块和设备可以在CAN总线上进行数据的传递和通讯。 在进行CAN驱动软件设计时,需要首先进行CAN总线控制器的初始化设置,包括波特率的配置、过滤器的设置和中断的处理等。然后需要设计CAN消息的发送和接收功能,包括数据的打包和解析以及错误处理等。另外,还需要考虑到CAN总线的唤醒功能、自动重传机制和错误处理等功能的设计。 在进行功能测试时,需要对CAN驱动软件的各个功能进行测试,包括消息的发送和接收功能、错误处理功能、唤醒功能和中断处理等。测试时需要模拟不同的情况,包括正常的数据传输、异常情况下的错误处理和重传机制等。同时还需要进行对接收到的CAN消息进行解析和验证,确保数据的正确性和可靠性。 在进行CAN驱动软件设计及功能测试时,需要充分考虑到硬件平台的特性和应用场景的需求,保证软件可以稳定可靠地运行并满足实际应用的需求。同时还需要关注软件的性能和资源占用情况,确保软件在有限的资源下能够高效地运行。通过设计和测试CAN驱动软件,可以实现系统中不同模块和设备之间的数据通讯,为实际应用提供可靠的数据交互通道。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值