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.

[参考译文] DRV8301-69M-KIT:添加 POT 读取 DRV8301-69M

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/600233/drv8301-69m-kit-add-pot-read-drv8301-69m

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

您好、TI、

我尝试在 lab5b (drv8301-69m-kit)中实现 POT 控制。 我使用的是 hal 教程、它起作用了。 但我不知道我的"g电 位计= HAL_readb电 位器数据(halHandle);"是否位于正确的位置。
我把它放在 for 循环的 main 中。

for (;;)
 {
   //等待使能系统标志被置位
   while (!(gMotorVars.Flag_enableSys));

   //启用库内部 PI。  Iq 现在以速度 PI 为基准
   CTRL_setFlag_enableSpeedCtrl (ctrlHandle、true);

   //循环、同时使能系统标志为 true
   while (gMotorVars.Flag_enableSys)
     {
       电位计= HAL_readb电 位器数据(halHandle);
     …

    
另一个问题、POT 范围为0-1000rpm。 如何根据电机的最大转速计算它们?

如果我使用开环、我必须根据占空比而不是 SPED_ref 设置 POT 值?!

提前感谢


  


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我应该读取 PWM 频率下的 POT 值吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这起作用了->

    while (gMotorVars.Flag_enableSys)

    //读取 POT 值
    #ifdef POT
    max_rpm_pot=(USER_IQ_FULL_SCALE_FREQ_Hz*120/USER_MOTOR_NUM_POLE_PAIRS)/1000;

    电位计=_IQmpy (HAL_readbotomeData (halHandle)、_IQ (max_rpm_pot));
    #endif


    是这样吗? 目前、我对 IQ 值不了解多少、我在 TI 是新手。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    什么是 HAL_read电 位器数据(halHandle)? 及其返回值类型?

    IQMath 是使用定点控制器的虚拟浮点匹配函数、您可以链接到以下网站以了解 IQmath 的更多详细信息。
    processors.wiki.ti.com/.../IQmath_Library_for_C28x

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

    "motorware_hal_tutorial"的功能是添加 POT 读取。

    "HAL.h"

    //! \brief 读取电位计
    //! \param[in]处理硬件抽象层(HAL)句柄
    //! 将电位器值从_IQ (-1.0)返回到_IQ (1.0)

    静态内联_IQ HAL_read电 位器数据(HAL_Handle handle)

    HAL_Obj * obj =(HAL_Obj *)句柄;
    _IQ 值;
    //将电位计从 IQ12转换为 IQ24。
    值=_IQ12toIq ((_Iq) ADC_readResult (obj->adcHandle、ADC_ResultNumber_8));
    return (value);
    }// HAL_read电 位 Data()函数结束

    值类型为_iq。


    如果我将 ADC 读取(gbuteometer = HAL_readb电 位器数据(halHandle)置于主系统的 for 循环中、则频率为80MHz。 这是否不是太快?
    还是因为 ADCINT1用作触发源、所以它无关紧要?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这意味着使用 HAL_read电 位器 Data()从电位器读取 ADC 结果,并将 ADC 结果(0~4096)转换为 IQ 值(_IQ (0.0)到_IQ (1.0))。 您可以乘以任何系数、将该值用作控制中的参考速度或扭矩。 除非您将电位计用作其他传感器、否则这不是 InstaSPIN-FOC 的反馈值。