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/LAUNCHXL-F2.8069万M:安装焦点通过绝对编码器实现伺服电机控制

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/574170/ccs-launchxl-f28069m-instaspin-focto-implement-the-servo-motor-control-with-a-absolute-encoder

部件号:LAUNCHTXL-F2.8069万M

工具/软件:Code Composer Studio

现在我想使用Instaspine-infed.Obviation.The fast encdoer不能很好地,伺服马达控制。

我们需要增量编码器或绝对编码器来测量电气角度。

现在我选择一个基于BISS协议的绝对编码器。

我使用TMS320F 2.8069万M和FPGA实现伺服电机控制。

FPGA读取绝对编码器值,并通过SPI总线将数据发送至2.8069万。

现在我有一些问题和这项计划。

1. 2.8069万和FPGA方案是否合理?

2.我不知道如何使用abssolute编码器,它提供的是电动角度,而不是快速软件编码器。

//生成电机电气角度
ANGLE_PU = EST_getAngle_PU (obj->estHandle);

3. 2.8069万通过SPI从FPGA读取电气角度。

2.8069万读取程序是否可以使用SPI中断?

如何将SPI读取程序添加到instaspine-in送?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1)是的,可以对FPGA进行编程,以便通过BISS协议读取编码器,并通过SPI与F2.8069万进行通信
    2) InstaSPIN-FOC快速估算器用于无传感器角度估算。 使用绝对编码器,您将不再需要快速。 您可以参阅InstaSPIN运动实验12了解感应系统。 这些设计用于与编码器配合使用。
    3)在此线程中讨论SPI初始化: e2e.ti.com/.../56.9677万。 只要确保SPI中断的优先级不高于ADC中断,就可以添加SPI中断。

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

    谢谢,Sean。

    1.我发现有人使用 McBSP  读取带BIS-C接口的绝对编码器。

      您认为哪种方法更好?

    2.请详细说明如何使用绝对位置编码器值作为电气角度,而不 是在lab12中使用iIncremental编码器。

    我在lab12b中阅读该程序。

    在ctrlQEP.h中,ANGLE_PU等于传感器 电子角度。

    //生成电机电气角度
    ANGLE_PU = EST_getAngle_PU (obj->estHandle);

    //从传感器更新电气角度
    ANGLE_PU =电子角度;

    电角由 ENC_calcElectAngle()函数计算。

    //计算电气角度
    ENC_calcElectAngle (encHandle,HAL_getQepPosnCounts (halHandle));

    void ENC_calcElectAngle (ENC_HANDLE encHandle,UINT32_t可能计数)

    ENC_Obj * enc;
    uINT32_t临时;

    //创建对象指针以进行操作
    ENC =(ENC_Obj *) encHandle;

    //计算机械角度
    temp = posnCounts*en茨->mech_angle_gain;
    //添加校准偏移
    temp += enc->enc_zero_offset;
    //转换为电气角度
    temp = temp * enc->num_pole_pairs;
    //环绕1.0 (Q24)
    temp &=((UINT32_t) 0x00ffffff);
    //存储编码器电气角度
    ENC->enc_elec_angle =(_IQ)温度;
    //更新滑动角度
    enc->enc_slip角度= enc_slip角度+-->增量滑移;
    //环绕1.0 (Q24)
    ENC->enc_slip角度&=((UINT32_t) 0x00ffff);
    //添加打滑补偿
    temp = temp + enc -> enc_slip角度;
    //环绕1.0 (Q24)
    temp &=((UINT32_t) 0x00ffffff);
    //存储编码器磁力角
    ENC->enc_magnetic_angle =(_IQ) temp;

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

    我知道 如何处理电机和绝对编码器之间的对齐。

    但我不知道如何将 绝对编码器值设置为 ANGLE_PU,

    我只需要将绝对编码器更改为Iq (24)?

    请给我一个手~

    谢谢~