有偿求指点FOC SVPWM输出旋转的磁场

2019-12-11 18:38发布

现在遇到以下不解的问题求指点。
在看完ST的FOC2.O及AN1078_cn后我想实现输出SVPWM(不管PI部分)
我自认为了看了个大概:
clarke:把三相交流电变换成两项交流电流Ia及Ib。
park变换:把两项Ia及Ib通过旋转电角度(通过测速*时间(这个时间一般是系统时间))的变换得到Id(转子的磁通)及Iq转矩的输出。
PI:把实际的Iq与参考Iq差值比较经过PI得到Vq。实际的Id与参考Id(一般设置为0)差值经过PI得到Vd
逆park:把Vq与Vd转换成两项电压Ua,Ub。
SVPWM:Ua与Ub经过SVPWM算法转换得到PWM三相每项的占空比。而且中间还要根据Ua与Ub判断得到不同的扇区。扇区不同合成力矩所需要的公司不一样。
最终通过通过不听去触发ADC检测(系统周期)同时计算霍尔传感器的速度*时间的电角度得到了选择的磁场这个根据电机选择位置都可以得到。
不知道以上我理解的对不对。
我现在想实现单纯的旋转的SVPWM。但是没有丝毫的头绪。 如果单独执行:
void SVPWM_3ShuntCalcDutyCycles (Volt_Components Stat_Volt_Input)
这个里面的电压要怎么给,旋转的过程中他又会有什么结果
在电机启动的SVPWM的扇区又停留在哪了。(不知道霍尔传感器的位置跟这个扇区之间有什么关系)
希望大虾指点····· 给我个思路怎么得到SVPWM波形,可以示波器测量的。 在线等··· 当然也可以有偿求指点。怎么有偿可以商量的·······
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
83条回答
jetta2014
1楼-- · 2019-12-19 17:52
苹果520 发表于 2018-11-23 14:07
不用电流检测他怎么实现电流环呢?力矩怎么控制呢?··········

是的,这也是我在思考的问题。
但看回我的应用,做位置定位,有磁编,云台马达转动慢。大家提到的电流环在我应用中,无非就是当力矩不足时,可以自动调高电流(也就是调高SVM(int volts, unsigned int angle)中的volts),保证力矩输出。
而对于固定负载,力矩间接决定了转速度,所以我测出转速,做速度环,是否也起到电流环的作用?
carefree1986
2楼-- · 2019-12-19 19:50
 精彩回答 2  元偷偷看……
苹果520
3楼-- · 2019-12-19 19:56
jetta2014 发表于 2018-11-23 15:58
还是你的代码管用!修改一下就马上可以转了,用Jscope看了下Tim1,2,3的数据,还真是马蹄形的!
...

看波形的是什么工具···
liguangqang
4楼-- · 2019-12-19 22:41
接一个RC用示波器就可以看到,有磁编码的直接给角度应该是可以转起来的,有些为了省钱或减少空间是用管子压降来采样电流的。应该是要加入电流环才好防堵转烧管。
jetta2014
5楼-- · 2019-12-19 22:42
苹果520 发表于 2018-11-23 17:32
看波形的是什么工具···

jlink的一个附带软件。你在论坛搜一下就知道啦。
jetta2014
6楼-- · 2019-12-19 23:22
liguangqang 发表于 2018-11-24 09:17
接一个RC用示波器就可以看到,有磁编码的直接给角度应该是可以转起来的,有些为了省钱或减少空间是用管子压 ...

其实没编码器一样转,就是步进那样控嘛!
下面是这段时间的心得:
将这个void SVM(int16_t volts, uint16_t angle) 翻译一下 ,其是就是SVM(给定扭力,模拟脉冲)。
给定扭力:0~28300,你想力大就调到28300,当然要结合负载,否则大部分能量用在发热。
模拟脉冲:0~65535,要马达转起来,就是执行i=i+1;SVM(20000, i);就得了。
注意,这里模拟脉冲是将360度电度角分为65536份,对于一个14极的马达,转一圈经历7组电度角,所以要转一圈要发许多脉冲。
有同学会问,要转快点这么办?脉冲发快点,当然还是跳步爽, i=i+x;SVM(20000, i);  但x不能大于SIXTY_DEG。

一周热门 更多>