打印
[开发工具]

MicroChip中关于启动斜坡加速参数的计算

[复制链接]
2813|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
自动化陈稳|  楼主 | 2021-10-28 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.无传感器控制
一般情况下,无传感器控制采用状态观测器的方式,常见的无感FOC状态观测器有滑模观测器、龙伯格观测器、卡尔曼观测器,在众多的观测器中,滑模观测器应用是比较广泛的,MicroChip提供的无感FOC方案就是采用的滑模观测器。在无感FOC控制中,启动是一个关键问题,本文着重分析MicroChip的Sensorless中关于启动模块的实现,请看下节。

使用特权

评论回复
沙发
自动化陈稳|  楼主 | 2021-10-28 14:39 | 只看该作者
2.无传感器启动过程
在MicroChip无传感器控制中,启动过程分为三个阶段,锁定–>斜坡加速–>速度闭环,首先来看一下MicroChip的代码:

使用特权

评论回复
板凳
自动化陈稳|  楼主 | 2021-10-28 14:40 | 只看该作者
if(uGF.bit.OpenLoop)        
        {
                if (Startup_Lock < MotorParm.LockTime)
                        Startup_Lock += 1;        // This variable is incremented until
                                                                // lock time expires, them the open loop
                                                                // ramp begins
                else if (Startup_Ramp < MotorParm.EndSpeed)
                        // Ramp starts, and increases linearly until EndSpeed is reached.
                        // After ramp, estimated theta is used to commutate motor.
                        Startup_Ramp += DELTA_STARTUP_RAMP;
                else
                {
                        // This section enables closed loop, right after open loop ramp.
            uGF.bit.ChangeMode = 1;
            uGF.bit.OpenLoop = 0;
                        Theta_error = ParkParm.qAngle - smc1.Theta;
                }
                ParkParm.qAngle += (int)(Startup_Ramp >> 16);
        }
        else
        {
                ParkParm.qAngle = smc1.Theta + Theta_error;
                if( (_Q15abs(Theta_error) > _0_05DEG)&&(trans_counter == 0))
                {
                        if (Theta_error < 0)
                                Theta_error += _0_05DEG;
                        else
                                Theta_error -= _0_05DEG;
                }
        }

使用特权

评论回复
地板
自动化陈稳|  楼主 | 2021-10-28 14:41 | 只看该作者
3.主要参数分析
我们主要来分析一下程序中MotorParm.EndSpeed变量和宏定义DELTA_STARTUP_RAMP是怎样计算的。首先,找到有关代码如下:
#define DELTA_STARTUP_RAMP        (unsigned int)(MINSPEEDINRPM*POLEPAIRS*LOOPTIMEINSEC*LOOPTIMEINSEC*65536*65536/(60*OPENLOOPTIMEINSEC))

MotorParm.EndSpeed = ENDSPEEDOPENLOOP * POLEPAIRS * LOOPTIMEINSEC * 65536 * 65536 / 60.0;

使用特权

评论回复
5
自动化陈稳|  楼主 | 2021-10-28 14:43 | 只看该作者
其中,MINSPEEDINRPM和ENDSPEEDOPENLOOP均是指切入速度闭环的最小机械转速(单位:RPM),默认为500r/min,LOOPTIMEINSEC是开关周期(开关频率的倒数),POLEPAIRS是电机极对数,OPENLOOPTIMEINSEC是斜坡加速的时间(单位:秒)。
现在已知的是,我们要到的最终转速是N=500RPM,需要在斜坡加速时间Tramp达到这个速度,要计算每个PWM角度的增加量的增加量。假设电机极对数为P,开关频率为Fpwm,于是我们可以这样计算:

使用特权

评论回复
6
自动化陈稳|  楼主 | 2021-10-28 14:43 | 只看该作者
        DELTA_STARTUP_RAMP=(N*P/60)*65536/Fpwm/(Fpwm*Tramp)

使用特权

评论回复
7
自动化陈稳|  楼主 | 2021-10-28 14:44 | 只看该作者
(NP/60)是每秒电气速度,除以Fpwm表示最终每个pwm的电气速度,要在(FpwmTramp)个PWM时增加到这个电气速度,就可以得到DELTA_STARTUP_RAMP,DELTA_STARTUP_RAMP类似于加速度的概念,可以解释为每个PWM角度增加量的增加量

使用特权

评论回复
8
dongtianfu| | 2021-11-8 23:39 | 只看该作者
请问楼主的电机控制程序是在微芯官网下载的吗?怎么下载的步骤能说下嘛?找了好久没找到

使用特权

评论回复
9
guijial511| | 2021-11-9 08:08 | 只看该作者
有详细的介绍资料吗?

使用特权

评论回复
10
两只袜子| | 2021-11-12 16:58 | 只看该作者
看看,学学

使用特权

评论回复
11
1399866558| | 2021-11-12 22:13 | 只看该作者
完全没有讲到重点。

使用特权

评论回复
12
propu| | 2022-11-25 23:46 | 只看该作者
多谢多谢

使用特权

评论回复
13
AdaMaYun| | 2022-12-25 13:02 | 只看该作者
有更详细的吗?感觉讲的不是很明白,电机控制程序这个链接吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

1182

帖子

1

粉丝