This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/DRV8301-69M-KIT:DRV8301-69M 套件的电流不足

Guru**** 2331900 points
Other Parts Discussed in Thread: MOTORWARE, DRV8301, DRV8305
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/567295/ccs-drv8301-69m-kit-insufficient-current-from-drv8301-69m-kit

器件型号:DRV8301-69M-KIT
主题中讨论的其他器件:MOTORWAREDRV8301DRV8305

工具/软件:Code Composer Studio

可能涉及的人员、

我使用 Motorware_Hal 教程读取 DRV8301-69M 电位器、然后编写我自己的一些代码、将电位器读数链接到 IqRef_A 变量。  


当我打开我的系统时、它是空载的。 然而、当我将电位计旋转至100%并在系统上施加一些负载时、它只是停止而不是抵抗。 我本来希望电流一直增加到36A、以抵抗负载。 有关我的意思的视频、请观看以下视频:

https://youtube/qlHlYSG68UI

请提供任何帮助。 我确信这是我的 PU 缩放或类似的问题。


James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的 User.h 文件

    我在 Lab4a.c 中添加的唯一代码行是:

    _iq 电位计=_IQ (0.0);

    电位计= HAL_readb电 位器数据(halHandle)

    然后在"

    空更新 IqRef (CTRL_Handle handle)

    _iq iq_ref =_IQmpy (电位计、_IQ (1.0/USER_IQ_FULL_SCALE_CURRENT_A));    <--- 我更改了此行以使用电位计

    //设置速度参考、以便强制角在启动时以正确的方向旋转
     if (_IQabs (gMotorVars.Speed_KRPM)<_IQ (0.01))
       {
         if (IQ_ref <_IQ (0.0))
           {
             CTRL_setSpd_ref_krpm (handle、_IQ (-0.01));
           }
         否则、如果(IQ_ref >_IQ (0.0))
           {
             CTRL_setSpd_ref_krpm (handle、_IQ (0.01));
           }
       }

     //设置用于从 PI 速度控制中输出的 IQ 参考
     CTRL_setIq_ref_pu (handle、IQ_ref);

     返回;
    }// updateIqRef()函数结束

    e2e.ti.com/.../8322.user.h

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 James:

    您的帖子将移至 C2000论坛以获得更好的支持。

    在等待专家回复时、此帖子可能对一些人有所帮助: www.digikey.com/.../5325766
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rick、

    感谢论坛变革。 由于 Instaspin 提供的优势、我非常愿意使用 DRV8301-69M 套件、但遗憾的是、这些评估板的额定功率与 DRV8301-69M 板的额定功率不同。 一旦我对其进行了排序、我应该有足够的资源来完成我的项目、以便真正地尝试完成它。

    James
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    James、

    很抱歉耽误你的回答。 请告诉我,在 lab4a.c 中,您在哪里调用 HAL_readbioneentterData()?

    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sean、没问题。 感谢您的回答!

    这是我的 Lab4a.c 文件、我真的希望我在软件中犯了一个错误、而不会以某种方式损坏硬件。


    谢谢、

    James

    /*-版权所有-、BSD
     *版权所有(c) 2012、德州仪器(TI)公司
     *保留所有权利。
     *
     *以源代码和二进制形式重新分发和使用、有无
     *如果满足以下条件、则允许进行修改
     符合*:
     *
     ** 源代码的重新分发必须保留上述版权
     *   注意、此条件列表和以下免责声明。
     *
     * *二进制形式的再发行必须复制上述版权
     *   请注意、中的此条件列表和以下免责声明
     *   随分发提供的文档和/或其他材料。
     *
     * *德州仪器公司的名称和名称均不相同
     *   其贡献者可用于认可或推广衍生产品
     *   未经特定的事先书面许可。
     *
     *本软件由版权所有者和贡献者"按原样"提供
     *以及任何明示或暗示的保证、包括但不限于:
     *特定适销性和适用性的隐含保证
     *不承认目的。 在任何情况下、版权所有者不得或
     *派遣国应对任何直接、间接、偶然、特殊、
     *典型或必然的损害(包括但不限于
     *采购替代货物或服务;丧失使用、数据或利润;
     *或业务中断)、无论原因是什么以及任何责任理论、
     *无论是合同、严格责任还是侵权行为(包括疏忽或)
     *否则)因使用本软件而以任何方式产生、
     *即使被告知可能会发生此类损坏。
     *--/版权--*/
    //! \file  solutions/instaspin_ocs/src/proj_lab04a.c
    //! 简要 使用 InstaSPIN�FOC 仅作为扭矩控制器 FPU32
    //!
    //! (C)版权所有2011、Texas Instruments、Inc.

    //! defgroup PROJ_LAB04A PROJ_LAB04A
    //@

    //! defgroup PROJ_LAB04A_overviewProject Overview
    //!
    //! 仅作为扭矩控制器 FPU32运行 InstaSPIN�FOC
    //!

    秘书长的报告
    //包括

    //系统包括
    #include
    #include "main.h"

    ifdef 闪存
    #pragma CODE_SECTION (mainISR、"ramfuncs");
    #endif

    //包含 main 函数中使用的头文件


    秘书长的报告
    //定义

    #define LED_BLINK FREQ_Hz  5.


    秘书长的报告
    //全局变量

    UINT_least16_t gCounter_updateGlobals = 0;

    bool Flag_Latch_SoftwareUpdate = true;

    CTRL_Handle ctrlHandle;

    #ifdef csm_enable
    #pragma DATA_SECTION (halHandle、"ROM_accessed_data");
    #endif

    HAL_Handle halHandle;

    #ifdef csm_enable
    #pragma DATA_SECTION (gUserParams、"ROM_accessed_data");
    #endif

    USER_Params gUserParams;

    HAL_PwmData_t gPwmData ={_IQ (0.0)、_IQ (0.0)、_IQ (0.0)};

    HAL_AdcData_t gAdcData;

    _iq gMaxCurrentSlope =_IQ (0.0);

    ifdef FAST_ROM_V1p6
    CTRL_Obj *控制器_obj;
    其他
    #ifdef csm_enable
    #pragma DATA_SECTION (Ctrl、"ROM_accessed_data");
    #endif
    Ctrl_Obj Ctrl;             //v1p7格式
    #endif

    uint16_t gLEDcnt = 0;

    volatile motor_Vars_t gMotorVars = motor_Vars_init;

    ifdef 闪存
    //用于在闪存中运行后台,在 RAM 中运行 ISR
    extern uint16_t * RamfuncsLoadStart、* RamfuncsLoadEnd、* RamfuncsRunStart;

    #ifdef csm_enable
    extern uint16_t * econst_start、* econst_end、* econst_ram_load;
    extern uint16_t * switch_start、* switch_end、* switch_ram_load;
    #endif
    #endif


    #ifdef DRV8301_SPI
    //连接到8301 SPI 的监视窗口接口
    DRV_SPI_8301_Vars_t gDrvSpi8301Vars;
    #endif
    #ifdef DRV8305_SPI
    //连接到8305 SPI 的监视窗口接口
    DRV_SPI_8305_Vars_t gDrvSpi8305Vars;
    #endif

    _iq gFlux_pu_TO_WB_SF;

    _iq gFlux_pu_TO_VpHz_SF;

    _iq gTor紧 力_ Ls_ID_Iq_pu_TO_Nm_SF;

    _iq gTorque 磁通_IQ_pu_TO_Nm_SF;

    _IQ 电位计=_IQ (0.0);//从 HAL 更新值

    bool gSw1;//开关1的全局变量,在打开或关闭时存储为布尔变量

    bool gSw2;//开关2的全局变量,在打开或关闭时存储为布尔变量

    秘书长的报告
    //函数

    void main (void)

     UINT_least8_t estNumber = 0;

    ifdef FAST_ROM_V1p6
     uint_least8_t ctrlNumber = 0;
    #endif

     //仅在从闪存运行时使用
     //请注意,变量闪存是由项目定义的
     ifdef 闪存
     //将时间关键代码和闪存设置代码复制到 RAM
     // RamfuncsLoadStart、RamfuncsLoadEnd 和 RamfuncsRunStart
     //符号由链接器创建。 请参阅链接器文件。
     Memcopy ((uint16_t *)&RamfuncsLoadStart、(uint16_t *)&RamfuncsLoadEnd、(uint16_t *)&RamfuncsRunStart);

     #ifdef csm_enable
     //copy .econst 至 unsecure RAM
     if (* econst_end -* econst_start)
     {
        Memcopy ((uint16_t *)&econst_start、(uint16_t *)&econst_end、(uint16_t *)&econst_ram_load);
     }

     //copy .switch ot unsecure RAM
     if (* switch_end -* switch_start)
     {
       Memcopy ((uint16_t *)&switch_start、(uint16_t *)&switch_end、(uint16_t *)&switch_ram_load);
     }
     #endif
     #endif

     //初始化硬件抽象层
     halHandle = HAL_init (&hal、sizeof (hal));


     //检查用户参数中的错误
     USER_checkForErrors (&gUserParams);


     //将用户参数错误存储在全局变量中
     gMotorVars.UserErrorCode = USER_getErrorCode (&gUserParams);


     //如果存在用户参数错误,则不允许执行代码
     if (gMotorVars.UserErrorCode!= USER_ErrorCode_NoError)
       {
         for (;;)
           {
             gMotorVars.Flag_enableSys = false;
           }
       }


     //初始化用户参数
     USER_setParams (&gUserParams);


     //设置硬件抽象层参数
     HAL_setParams (halHandle、&gUserParams);


     //初始化控制器
    ifdef FAST_ROM_V1p6
     ctrlHandle = CTRL_initCtrl (ctrlNumber、estNumber);       //v1p6格式(06xF 和06xM 器件)
     controller_obj =(CTRL_Obj *) ctrlHandle;
    其他
     ctrlHandle = CTRL_initCtrl (estNumber、&ctrl、sizeof (ctrl));   //v1p7格式默认值
    #endif


     {
       CTRL_Version 版本;

       //获取版本号
       CTRL_getversion (ctrlHandle、&version);

       gMotorVars.CtrlVersion =版本;
     }


     //设置默认控制器参数
     CTRL_setParams (ctrlHandle、&gUserParams);


     //设置故障
     HAL_setupFaults (halHandle);


     //初始化中断矢量表
     HAL_initIntVectorTable (halHandle);


     //启用 ADC 中断
     HAL_enableAdcInts (halHandle);


     //启用全局中断
     HAL_enableGlobalInts (halHandle);


     //启用调试中断
     HAL_enableDebugInt (halHandle);


     //禁用 PWM
     HAL_disablePwm (halHandle);


    #ifdef DRV8301_SPI
     //打开 DRV8301 (如果存在)
     HAL_enableDrv (halHandle);
     //初始化 DRV8301接口
     HAL_setupDrvSpi (halHandle、&gDrvSpi8301Vars);
    #endif

    #ifdef DRV8305_SPI
     //打开 DRV8305 (如果有)
     HAL_enableDrv (halHandle);
     //初始化 DRV8305接口
     HAL_setupDrvSpi (halHandle、&G);
    #endif

     //启用直流总线补偿
     CTRL_setFlag_enableDcBusComp (ctrlHandle、true);


     //计算磁通和扭矩计算的比例因子
     gFlux_pu_TO_WB_SF = USER_computeFlux_pu_TO_WB_SF ();
     gFlux_pu_TO_VpHz_SF = USER_computeFlux_pu_TO_VpHz_SF ();
     gTorte_LS_ID_IQ_pu_TO_Nm_SF = USER_computeTorte_LS_ID_IQ_pu_TO_Nm_SF ();
     gTorture_Flux_IQ_pu_TO_Nm_SF = USER_computeTorte_Flux_IQ_pu_TO_Nm_SF ();


     对于(;;)//这是设置启用系统标志的位置,需要由 gSW1或 gSW2进行设置
     {
       //等待使能系统标志被置位
       while (!(gMotorVars.Flag_enableSys));

       //可以显示库内部 PI。  IQ 现在没有基准
       CTRL_setFlag_enableSpeedCtrl (ctrlHandle、false);

       //循环、同时使能系统标志为 true
       while (gMotorVars.Flag_enableSys)
         {
           CTRL_Obj * obj =(CTRL_Obj *) ctrlHandle;

           //递增计数器
           gCounter_updateGlobals++;

           //启用/禁用使用从 user.h 加载的电机参数
           CTRL_setFlag_enableUserMotorParams (ctrlHandle、gMotorVars.Flag_enableUserParams);

           //启用/禁用电机启动期间的 Rs 重校准
           EST_setFlag_enableRsRecalc (obj->estHandle、gMotorVars.Flag_enableRsRecalc);

           //启用/禁用偏置值的自动计算
           CTRL_setFlag_enableOffset (ctrlHandle、gMotorVars.Flag_enableOffsetcalc);


           IF (CTRL_ISERROR (ctrlHandle))
             {
               //将使能控制器标志设置为 false
               CTRL_setFlag_enableCtrl (ctrlHandle、false);

               //将使能系统标志设置为 false
               gMotorVars.Flag_enableSys = false;

               //禁用 PWM
               HAL_disablePwm (halHandle);
             }
           其他
             {
               //更新控制器状态
               bool flag_ctrlStateChanged = CTRL_updateState (ctrlHandle);

               //启用或禁用控件
               CTRL_setFlag_enableCtrl (ctrlHandle、gMotorVars.Flag_Run_Identify);//这是 SW1或 SW2将更改 Flag_Run_Identify 的位置

               if (flag_ctrlStateChanged)
                 {
                   CTRL_State_e ctrlState = CTRL_getState (ctrlHandle);

                   if (ctrlState = CTRL_State_OffLine)
                     {
                       //启用 PWM
                       HAL_enablePwm (halHandle);
                     }
                   否则、如果(ctrlState = CTRL_State_OnLine)
                     {
                       if (gMotorVars.Flag_enableOffsetcalc = true)
                       {
                         //更新 ADC 偏置值
                         HAL_updateAdcBias (halHandle);
                       }
                       其他
                       {
                         //设置电流偏置
                         HAL_setBias (halHandle、HAL_SensorType_Current、0、_IQ (I_A_offset));
                         HAL_setBias (halHandle、HAL_SensorType_Current、1、_IQ (I_B_OFFSET));
                         HAL_setBias (halHandle、HAL_SensorType_Current、2、_IQ (I_C_OFFSET));

                         //设置电压偏置
                         HAL_setBias (halHandle、HAL_SensorType_Voltage、0、_IQ (V_A_offset));
                         HAL_setBias (halHandle、HAL_SensorType_Voltage、1、_IQ (V_B_OFFSET));
                         HAL_setBias (halHandle、HAL_SensorType_Voltage、2、_IQ (V_C_offset));
                       }

                       //返回电流的偏置值
                       gMotorVars.I_BIAS.value[0]= HAL_getBias (halHandle、HAL_SensorType_Current、0);
                       gMotorVars.I_BIAS.Value[1]= HAL_getBias (halHandle、HAL_SensorType_Current、1);
                       gMotorVars.I_BIAS.value[2]= HAL_getBias (halHandle、HAL_SensorType_Current、2);

                       //返回电压的偏置值
                       gMotorVars.V_BIAS.Value[0]= HAL_getBias (halHandle、HAL_SensorType_Voltage、0);
                       gMotorVars.V_BIAS.Value[1]= HAL_getBias (halHandle、HAL_SensorType_Voltage、1);
                       gMotorVars.V_BIAS.Value[2]= HAL_getBias (halHandle、HAL_SensorType_Voltage、2);

                       //启用 PWM
                       HAL_enablePwm (halHandle);
                     }
                   否则、如果(ctrlState = CTRL_State_Idle)
                     {
                       //禁用 PWM
                       HAL_disablePwm (halHandle);
                       gMotorVars.Flag_Run_Identify = false;
                     }

                   if ((CTRL_getFlag_enableUserMotorParams (ctrlHandle)=true)&&
                     (ctrlState > CTRL_State_Idle)&&
                     (gMotorVars.CtrlVersion.Minor == 6))
                     {
                       //调用此函数来修复1p6
                       USER_softwareUpdate1p6 (ctrlHandle);
                     }

                 }
             }


           if (EST_isMotorIdentified (obj->estHandle))
             {
               //设置电流斜坡
               EST_setMaxCurrentSlope _pu (obj->estHandle、gMaxCurrentSlope);
               gMotorVars.Flag_MotorIdentified = true;


               if (Flag_Latch_SoftwareUpdate)
               {
                 Flag_Latch_SoftwareUpdate = false;

                 USER_calcPIGains (ctrlHandle);
               }

             }
           其他
             {
               Flag_Latch_SoftwareUpdate = true;

               //估算器设置识别期间的最大电流斜率
               gMaxCurrentSlope = EST_getMaxCurrentSlope _pu (obj->estHandle);
             }


           //适当时,更新全局变量
           if (gCounter_updateGlobals >= NUM_MAIN_TICKS_for_GLOBAL_variable 更新)
             {
               //重置计数器
               gCounter_updateGlobals = 0;

               updateGlobalVariables_motor (ctrlHandle);
             }

           //更新 IQ 参考
           updateIqRef (ctrlHandle);

           //启用/禁用强制角
           EST_setFlag_enableForceAngle (obj->estHandle、gMotorVars.Flag_enableForceAngle);

           //启用或禁用电源扭曲
           CTRL_setFlag_enablePowerWarp (ctrlHandle、gMotorVars.Flag_enablePowerWarp);

    #ifdef DRV8301_SPI
           HAL_writeDrvData (halHandle、&gDrvSpi8301Vars);

           HAL_readDrvData (halHandle、&gDrvSpi8301Vars);
    #endif
    #ifdef DRV8305_SPI
           HAL_writeDrvData (halHandle、&G);

           HAL_readDrvData (halHandle、&G);
    #endif

         }// while 结束(gFlag_enableSys)循环


       //禁用 PWM
       HAL_disablePwm (halHandle);

       //设置默认控制器参数(重置控件以重新识别电机)
       CTRL_setParams (ctrlHandle、&gUserParams);
       gMotorVars.Flag_Run_Identify = false;

     }// for (;)循环结束

    }// main()函数的末尾


    中断空 mainISR (空)

     //切换状态 LED
     if (gLEDcnt++>(uint_least32_t)(USER_ISR_FREQ_Hz / LED_BLINK FREQ_Hz)
     {
       HAL_TOGLELed (halHandle、(GPIO_Number_e) HAL_GPIO_LED2);
       gLEDcnt = 0;
     }


     //确认 ADC 中断
     HAL_acqAdcInt (halHandle、ADC_IntNumber_1);


     //转换 ADC 数据
     HAL_readAdcData (halHandle、&gAdcData);


     //运行控制器
     CTRL_run (ctrlHandle、halHandle、&gAdcData、&gPwmData);


     //写入 PWM 比较值
     HAL_writePwmData (halHandle、&gPwmData);


     //设置控制器
     CTRL_setup (ctrlHandle);
     //更新电位计读数
     电位计= HAL_readb电 位器数据(halHandle);

     //更新开关值
     gSw1 = HAL_readGpio (halHandle、HAL_GPIO_SW1);//开关1值

     gSw2 = HAL_readGpio (halHandle、HAL_GPIO_SW2);//开关2值

     返回;
    }// mainISR()函数结束


    void updateGlobalVariables_motor (CTRL_Handle handle)

     CTRL_Obj * obj =(CTRL_Obj *)句柄;
     int32_t tmp;

     //获取速度估计值
     gMotorVars.Speed_KRPM = EST_getSpeed_KRPM (obj->estHandle);

     //获取转矩估计值
     gMotorVars.Torture_Nm = USER_computeTorture_Nm (handle、gTorture_Flux_IQ_pu_TO_Nm_SF、gTorte_LS_ID_IQ_pu_TO_Nm_SF);

     //调用返回浮点值的 EST_functions 且启用了 fpu32时、需要使用整数作为返回值
     //以便编译器从累加器而不是 fpu32寄存器读取返回值
     //获得磁化电流
     tmp = EST_getIdRated (obj->estHandle);
     gMotorVars.MagnCurr_A =*((float_t *)&tmp);

     //获取转子电阻
     tmp = EST_getRr_Ohm (obj->estHandle);
     gMotorVars.rr_Ohm =*((float_t *)&tmp);

     //获得定子电阻
     tmp = EST_getRs_Ohm (obj->estHandle);
     gMotorVars.Rs_Ohm =*((float_t *)&tmp);

     //获得直接坐标方向的定子电感
     tmp = EST_getLs_d_h (obj->estHandle);
     gMotorVars.LSD_H =*((float_t *)&tmp);

     //获得正交坐标方向的定子电感
     tmp = EST_getLs_q_H (obj->estHandle);
     gMotorVars.LSQ_H =*((float_t *)&tmp);

     //以浮点方式获得以 V/Hz 为单位的磁通
     tmp = EST_getFlux_VpHz (obj->estHandle);
     gMotorVars.Flux_VpHz =*((float_t *)&tmp);

     //以定点获得 WB 中的磁通
     gMotorVars.Flux_WB = USER_computeFlux (handle、gFlux_pu_TO_WB_SF);

     //获取控制器状态
     gMotorVars.CtrlState = CTRL_getState (handle);

     //获取估算器状态
     gMotorVars.EstState = EST_getState (obj->estHandle);

     //获取直流总线电压
     gMotorVars.VdcBus_kV =_IQmpy (gAdcData.DCBus、_IQ (USER_IQ_FULL_SCALE_VOLTAGE_V/1000.0));

     返回;
    }// updateGlobalVariables_motor()函数结束


    void updateIqRef (CTRL_Handle handle)

     _iq iq_ref =_IQmpy (电位计、_IQ (1.0/USER_IQ_FULL_SCALE_CURRENT_A));//从 gMotorVars.IqRef_A 更改、工作!!!

     //设置速度参考、以便强制角在启动时以正确的方向旋转
     if (_IQabs (gMotorVars.Speed_KRPM)<_IQ (0.01))
       {
         if (IQ_ref <_IQ (0.0))
           {
             CTRL_setSpd_ref_krpm (handle、_IQ (-0.01));
           }
         否则、如果(IQ_ref >_IQ (0.0))
           {
             CTRL_setSpd_ref_krpm (handle、_IQ (0.01));
           }
       }

     //设置用于从 PI 速度控制中输出的 IQ 参考
     CTRL_setIq_ref_pu (handle、IQ_ref);

     返回;
    }// updateIqRef()函数结束


    //@}// defgroup
    //文件结束

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好

    我在上面的 Lab4a.c 文件中的实现是否正确、或者我是否犯了一些错误?

    此致、

    James
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    James、

    您能不能尝试将 HAL_read电 位 Data()调用移出 ISR,而是在 updateIqRef()之前调用它。 我没有看到您的实现有任何明显的错误、也许这是一个时序问题、因为 ISR 可以更新 IQ 参考更新函数中间的值

    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Sean、

    我将其移出、但令人惊讶的是、它会反向旋转。 原始问题没有变化、它仅消耗3.6 - 4安培(额定电流的10%)、因此这很有趣。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否确认您的 EVM 未损坏?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sean、我可以确认我现在已经解决了这个问题。
    在仔细阅读了 Hal_tutorial 并以上面的代码和问题结尾之后、我昨晚找到了这个论坛帖子、并更改了我的代码、这是有效的。 e2e.ti.com/.../1800127

    我将我的代码更改为:

    void updateIqRef (CTRL_Handle handle)

    _IQ IQ_ref =_IQmpy (gMotorVars.IqRef_A、_IQ (-30/USER_IQ_FULL_SCALE_CURRENT_A));//从 gMotorVars.IqRef_A 更改、有效!!! 使用正值可使电机反向运行。 将值更改为-30而不是-1解决了大问题!

    我不必根据其他论坛帖子将其更改为数百万、而只需将其更改为-30即可达到~11A。 电路板正常、不会变热、电机运行良好。
    感谢您的所有回答和帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很好的 James。 作为参考、您是否最终在主循环中的某个点将电位计分配给 IqRef_A? 还是在 ISR 中?

    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sean、我将它从 ISR 中取出、并将其添加到主循环中。 有趣的是、当我这么做时、电机旋转的方向发生了变化。 这就是为什么在等式中该值为-(x)、在我的例子中为-30、而不是正值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 James:

    您这边有任何更新吗? 您能否提供有关 ADC 设置的说明并阅读有关仪表的信息? 设置 IQ 基准的公式是什么?