求教FOC控制出现角度变化不均匀问题的原因
请教各 位FOC电机高手一个问题:本人用一个普通的BLDC电机作FOC控制,用TLE5012B 作FOC 的位置传感器,在20K pwm 中断程序中 检测本次与上次角度之差值 ,截图如下,角度变化不均匀确认不是传感器的问题,个人认为是电机特性造成的。可请各位高手指点一下,原因和应对方法?
转速计算 (70/32768)*60*20k=2563rpm ,尖峰处计算(140/32768)*60*20k=2*2563rpm 。 搬个板凳,看楼下大神怎么说。 天下乌鸦一般黑 发表于 2022-3-22 13:08
搬个板凳,看楼下大神怎么说。
(引用自2楼)
高手指点一下嘛。 本帖最后由 dukelec 于 2022-3-22 14:29 编辑
有沒有異响?
有的話,可能是 MOS 的 gate 腳驅動太強,導致干擾太大,從而導致數據被干擾錯亂。
也可能只是角度差值計算方法有問題,譬如你的原始數據沒有用滿 16 bits,譬如數據是不斷增大的,當前值超過最大後又回到 0 附近,而上一次值還在最大處,此時計算就容易出事
這種事情,你自己把傳感器原始數據的波形看一下,自然就能自己定位到問題 887799 发表于 2022-3-22 13:15
高手指点一下嘛。
(引用自3楼)
你附图那个测速的速度,是怎么测出来的。2倍的偏差,有点夸张啊。 天下乌鸦一般黑 发表于 2022-3-22 14:39
你附图那个测速的速度,是怎么测出来的。2倍的偏差,有点夸张啊。
(引用自5楼)
20K HZ PWM中断:
temp = Tle5012ReadAngle();//磁编码5012b读数最小为0,最大32767
temp= THETA_OFFSET - temp ;//方向是数值不断减小的方向
if(temp<0) temp = temp+32768;//处理0突变到360度边界
//if (temp>32768) temp -= 32768;
angle = temp;
{
static float delta;
delta = angle-lastAngle;//本次角度-上次角度
lastAngle = angle;//保存本次角度
if (delta<0)
delta += 32768;//边界处理
...输出delta
}
20K HZ PWM中断程序里,delta本次角度-上次角度
dukelec 发表于 2022-3-22 14:27
有沒有異响?
有的話,可能是 MOS 的 gate 腳驅動太強,導致干擾太大,從而導致數據被干擾錯亂。
(引用自4楼)
有边界处理,是读编码器的原始数据。程序处理见上面。 887799 发表于 2022-3-22 14:58
有边界处理,是读编码器的原始数据。程序处理见上面。
(引用自7楼)
沒仔細看,可能有 bug
建議原始數據不足 16 位,左移到 16 位 unsigned 型,這樣邊界處理方便很多,基本不用處理就行。 Tle5012ReadAngle() 这个执行时间多长? ahfong2006 发表于 2022-3-22 16:53
Tle5012ReadAngle() 这个执行时间多长?
(引用自9楼)
之前测好像是2~4 个uS。 本帖最后由 洞洞幺 于 2022-3-22 21:56 编辑
887799 发表于 2022-3-22 17:02
之前测好像是2~4 个uS。
(引用自10楼)
有那么短?
你先把spi时钟搞到1us周期看看位置数据对不对再说。 看下磁编码器SPI原始数据,用开环svpwm进行低速拖动来验证 70多对应的上次角度和本次角度
140多对应的上次角度和本次角度
看原始数据是否正常
页:
[1]