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/TMS320F28335:TMS320F28335

Guru**** 2601915 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/675426/ccs-tms320f28335-tms320f28335

器件型号:TMS320F28335
Thread 中讨论的其他器件:controlSUITE

工具/软件:Code Composer Studio

我正在尝试从安装在 PMSM 上的位置编码器计算速度。 我能够成功获得位置(以度为单位)。 我尝试执行速度=(new_position - old_position)/delta_t、但我在 DAC 中绘制结果、我在这两者之间得到随机的大峰值。 我无法确定问题是什么。

P.S. 我每400us 就会获得位置(与 PWM ISR 同步)、但速度功能仅以10ms 的间隔执行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能需要监控方向以及正负最大计数。 您可以参阅 controlSUITE 中的 speed_fr 模块、该模块根据编码器角度计算速度。

    更多详细信息可在 controlSUITE 文件夹中找到、如下所示
    \ti\controlSUITE\libs\app_libs\motor_control\math_blocks\fixed_v1.1\~docs\speed_frq.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

    实际上、我没有使用处理器的 QEP 模块来获取位置。 我使用的绝对编码器提供0-1023 (二进制)输出、即10位、我稍后将其转换为以度(或弧度)为单位的位置(因此、0对应于0度、1023对应于360度)。

    现在、我只关注顺时针旋转的速度。 我无法使用滤波器、因为这会在反馈中引入延迟(我的项目是 PMSM 的闭环矢量控制)。 下面是随附的代码:

    void get_speed (void)(空)

    如果(theta_prev > theta_deg)/1旋转完成

    speed1 =(theta_deg + 1023 - theta_prev)/speed_TS;  

    其他

    speed1 =(theta_deg - theta_prev)/speed_TS;  


    Theta_prev = theta_deg;
    速度= speed1*0.3515*(60.0/360);//in rpm

    AD7305_CH_A =(int)(speed_255.255.0/500);           //标准化- DAC 最大值对应于500rpm


    此处1023相当于360度、因此1位变化对应于0.3515度变化。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码看起来应该运行良好。 您能否将编码器的位置信息放入 DAC 中? 角度是否存在任何脉冲。 也许、您可以按如下方式更改代码、因为您使用的是浮点。
    如果(theta_prev > theta_deg)/1旋转完成

    speed1 =(theta_deg +(float) 1023.0 - theta_prev)* inV_speed_TS;

    其他

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

    我尝试在 DAC 上输出编码器位置。 它非常连续、没有任何脉冲。 我尝试按照您的说明更改代码、但同样的问题仍然存在。 我附加了位置(蓝色)的示波器图、该图在0-360度和速度(绿色)之间变化。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能需要在长计时器中调用此函数,或者添加判断 abs(theta_deg - theta_prev)>1以计算速度的函数。 您可以添加一个变量 theta_delta = abs (theta_deg - theta_prev)并将其保存在缓冲区中以检查它以找出根本原因。