找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

15万转无感FOC: 高压风机水泵吸尘器,冰箱空调压缩机

  [复制链接]
14#
匿名  发表于 2022-10-27 10:15:53
请楼主再给讲解一下变量标幺值,看不懂
回复 支持 反对

使用道具

13#
 楼主| Angus 发表于 2022-1-23 21:36:38 | 只看该作者
本帖最后由 Angus 于 2024-9-12 13:41 编辑

这里讲一下 Clark 变换

求 I_alpha, I_beta,  就是求电流向量的实部和虚部。A相在0度,B相在120度,C相在-120度,三个电流写成复数形式分别为


求三个电流的“失量和” 。 三相电流的“标量和=0“,即Ia+Ib+Ic = 0,这个不用求。


因为在下MOS 导通时测电流,显然下MOS导通时间长时,电流ADC 受PWM 开关影响就小,值相对准确一些。
如果 C 相下 MOS 导通时间短、就用 Ia 和 Ib 计算电流向量, Ic = -Ia-Ib 代入向量求和公式,得到

消去 Ia 或 Ib 的公式,请读者自己推导

等幅变换中电流向量若是 I,  则对应相电流峰值是 I*2/3。所以上式求出的电流向量,乘2/3后才与控制量对应,  这样公式就变成了

上式这个电流向量的模,正好与相电流的峰值,数值上相等。
下面来看代码,
181~189行,按扇区,选择下MOS导通时间长的两相, 求I_alpha, I_beta,为了减小计算误差先增加小数,数值乘8
191行,1/3 的开方=0.57735 =18919/32768, 所以乘18919再右移15位就是乘1/3的开方,右移小了3位,等于是把结果乘了8


执行完191行后,就求出了 I_alpha,I_beta 。接下来坐标变换求出了有3位小数的 Id 和 Iq 电流









回复 支持 1 反对 0

使用道具 举报

12#
 楼主| Angus 发表于 2022-1-20 14:35:43 | 只看该作者
本帖最后由 Angus 于 2024-9-15 16:10 编辑

这里讲一下代码中的 PI 运算。

模拟 PID 运算公式 :

去掉微分运算,再把公式离散化,公式变为:


采用增量式算法:


下面是转速 PI 运算的代码
代码 733 行:增量 = Kp*[本次误差 - 上次误差] + Ki * 本次误差
代码 734 行,temp32 = U(n-1) + 增量。
736~739行是抗饱和运算
741 ~ 742行,计算结果 temp32 做限幅后,再赋值给电流设定值变量 Is_set_f12

  


回复 支持 1 反对 0

使用道具 举报

11#
a20084666 发表于 2022-1-15 14:40:02 | 只看该作者
最近出的都是干货
回复 支持 反对

使用道具 举报

10#
匿名  发表于 2022-1-10 21:39:19
调速旋钮刚好在最小启转值附近时,可能因数据抖动,造成启转、停转、启转、停转现像。为了防止这种现象,将调速旋钮值,做回差处理,如下图。

未转时,旋钮从0向上调,超过最小值的3/4, 到最小值之间,都算是最小值。
转动时,旅钮从上向下调,高于最小值的一半,到最小值之间,都算最小值。

未转时,旋钮调到3/4处,就会启转,这时,旋钮值上下抖动一点,转速设定值保持最小值不变。
实现代码,如下:

回复 支持 反对

使用道具

9#
 楼主| Angus 发表于 2020-5-29 14:09:19 | 只看该作者
本帖最后由 Angus 于 2020-5-29 14:12 编辑
游客 115.226.132.x 发表于 2020-5-29 10:36
请问楼主:在做无感位置估算器中,需要用到Valpha和Vbeta,这两个值是怎么得到的,提供的原理图中只有两相 ...

电机中的三组线圈在圆周上呈120度安放,三相通电后,合成电压的方向可以是360度的任一方向,所以就用复数表示,Valpha  + jVbeta

所以Valpha, Vbeta 是电压失量的实部和虚部,是计算的中间变量。
回复 支持 反对

使用道具 举报

8#
xiaoxiao2013 发表于 2018-11-20 13:57:13 | 只看该作者
请问,你启转那个图片是怎么启动的?是无感运行?看图上没有开环切闭环,是不是这样?你那个位置估算器是常用的,难实现这样的效果
回复 支持 反对

使用道具 举报

7#
arm_nuedu 发表于 2017-7-28 11:48:25 | 只看该作者
哦哦,明白了,谢谢
回复 支持 反对

使用道具 举报

6#
 楼主| Angus 发表于 2017-7-27 21:46:06 | 只看该作者
arm_nuedu 发表于 2017-7-27 20:39
PD->MODE      = 0x00000400 ;               
  SYS->GPD_MFPL = SYS_GPD_MFPL_PD0MFP_UART0_RXD
        ...

代码中 PD->MODE = 0 ;
PD0 配置为 RXD 自动为输入,PD1 配置为 TXD 自动为 CMOS 输出, PD->MODE 的值已无效  
回复 支持 反对

使用道具 举报

5#
arm_nuedu 发表于 2017-7-27 20:39:03 | 只看该作者
PD->MODE      = 0x00000400 ;               
  SYS->GPD_MFPL = SYS_GPD_MFPL_PD0MFP_UART0_RXD
                | SYS_GPD_MFPL_PD1MFP_UART0_TXD  ;

还有这个PD0 PD1,不是该0X0000 0004
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU