⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encoder.c

📁 Source Code for Sensorless FOC for PMSM with PFC for dsPIC30F6010A
💻 C
字号:
// Scaling for encoder routines

#include "general.h"
#include "Parms.h"
#include "Encoder.h"

/**********************************************************
InitEncoderScaling

Initialize scaling constants for encoder rotuines.

    Arguments:
        CntsPerRev: Encoder counts per revolution from quadrature
        ScalingSpeedInRPS: Rev per sec used for basic velocity scaling
        IrpPerCalc: Number of CalcVelIrp interrupts per velocity calculation
        VelIrpPeriod: Period between VelCalcIrp interrupts (in Sec)

For CalcAng:
    Runtime equation:
    qMechAng = qKang * (POSCNT*4) / 2^Nang

    Scaling equations:
        qKang = (2^15)*(2^Nang)/CntsPerRev.

For CalcVelIrp, CalcVel:
    Runtime equation:
        qMechVel = qKvel * (2^15 * Delta / 2^Nvel)

    Scaling equations:
        fVelCalcPeriod = fVelIrpPeriod * iIrpPerCalc
        MaxCntRate = CntsPerRev * ScaleMechRPS
        MaxDeltaCnt = fVelCalcPeriod * MaxCntRate
        qKvel = (2^15)*(2^Nvel)/MaxDeltaCnt
**********************************************************/

bool InitEncoderScaling( void )
{
    float fVelCalcPeriod, fMaxCntRate;
    long  MaxDeltaCnt;
    long  K;

    EncoderParm.iCntsPerRev = MotorParm.iCntsPerRev;

    K = 32768;
    K *= 1 << Nang;
    EncoderParm.qKang = K/EncoderParm.iCntsPerRev;


    EncoderParm.iIrpPerCalc = MotorParm.iIrpPerCalc;
    fVelCalcPeriod = MotorParm.fVelIrpPeriod * MotorParm.iIrpPerCalc;
    fMaxCntRate = EncoderParm.iCntsPerRev * MotorParm.fScaleMechRPS;
    MaxDeltaCnt = fVelCalcPeriod * fMaxCntRate;

    // qKvel = (2^15)*(2^Nvel)/MaxDeltaCnt
    K = 32768;
    K *= 1 << Nvel;
    K /= MaxDeltaCnt;
    if( K >= 32768 )
        // Error
        return True;
    EncoderParm.qKvel = K;

    // Initialize private variables used by CalcVelIrp.
    InitCalcVel();
    return False;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -