本帖最后由 yjmwxwx 于 2021-4-30 13:27 编辑
最近几天想学学电机控制,网上看了个傻瓜教程,写了个SVPWM程序,但是电机一卡一卡的,换成6步换向就没问题,不知道这个算法有没有问题?不知道别人SVPWM程序是怎么写的?
https://www.switchcraft.org/learning/2017/3/15/space-vector-pwm-intro
原文公式
dianya = 975
dianya1 = 630
jiaodu = 38.3
xldy_r = dianya1 * cosd(jiaodu)
xldy_i = dianya1 * sind(jiaodu)
jiaodu0_r = dianya * cosd(0)
jiaodu60_r = dianya * cosd(60)
jiaodu0_i = dianya * sind(0)
jiaodu60_i = dianya * sind(60)
x = (xldy_i * jiaodu0_r - xldy_r * jiaodu0_i)/(jiaodu60_i * jiaodu0_r - jiaodu60_r * jiaodu0_i)
y = (xldy_r - x * jiaodu60_r) / jiaodu0_r
实际单片机里面按照下面这样算的
把其他5个60度的区域都旋转到0-60度,用下面这个计算,算出来X和Y乘定时器里面和计数值比较的数,用来输出PWM
jiaodu = 18
xldy_r = cosd(jiaodu)
xldy_i = sind(jiaodu)
jiaodu0_r = cosd(0)
jiaodu60_r = cosd(60)
jiaodu0_i = sind(0)
jiaodu60_i = sind(60)
x = (xldy_i * jiaodu0_r )/(jiaodu60_i * jiaodu0_r)
y = (xldy_r - x * jiaodu60_r) / jiaodu0_r
结果一卡一卡的,有的时候转的快有的时候转的慢,是不是算法有问题|??
拍了个视频,一卡一卡的,各位老师给看看会是什么原因?
电路
pmsm.pdf
(92.5 KB)
电机
|
@blade55 :就这个条件没办法啊,有条件要上没条件也要上。。
19世纪的作坊