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.

TMDXIDDK379D: Motor vibrations using IDDK example CCS project

Part Number: TMDXIDDK379D

I am using the C2000 IDDK module to try and run a custom Permanent Magnet Synchronous Motor. I am using the QEP part of the position encoder suite. I am executing the level 5 incremental build, with Idref = 0, as is directed in the guide. However, the motor seems to vibrate with different intensities depending on the starting position. I am new to this and was wondering if anyone could point me in the right direction to understanding this problem. 

Thank you

  • If LEVEL3 and LEVEL4 have worked fine, there is no reason for LEVEL5 to not work properly. You may want to tune the controller values being introduced newly in this loop compared to LEVEL4.

  • Our motor is fixed on an robotic arm, and therefore has a fixed range of motion. 

    My understanding of Level 2, 3 and 4 is that the motor runs continuously. Is there any way to tune the motor using level 2,  3, or 4 with our fixed range of motion?

  • Well, stepping through the build levels helps to resolve issues at each level making it easier going up in build levels.

    I suggest to try out the controller on a stand alone motor, get familiar before moving onto such restricted range applications.

  • I disconnected the motor from the arm. I was wondering what does Level 2C: Adjusting PI Limits in the example project document does?

    When I try different Vdtest and Vqtest the trip flag is enabled. Is there a specific strategy to find PI maxes?

    The document also says "After this build level, PI outputs will automatically generate the voltage reference and determine the PWM duty cycle depending on the d-q current demand, therefore set pi_id.Umax/min and pi_iq.Umax/min according to recorded VdTesting and VqTesting values respectively"

    Therefore, Is this level needed to tune the motor? Can we start from level 3? is level 3 dependent on level 2?

  • You can experiment at LEVEL2 to identify the limiting values of pi_id.Umax/Umin and that of pi_iq.  It is not mandatory, and you can go with the default values to LEVEL3

  • How do I change the acceleration and deceleration of the motor on level 5?

  • This is controlled by posSlewRate variable in refPosGen(). It is given in user guide as well.

  • I thought the posSlewRate controls the speed of the motor to go to the input position. I was looking to change the rate at which the motor changes from Idle to the posSlewRate.

  • in the following code snip, _IQ(0.00001) is what what controls the acceleration?

    // ------------------------------------------------------------------------------
    // Connect inputs of the PID module and call the PID ID controller macro
    // ------------------------------------------------------------------------------
    pi_id.Ref = ramper(IdRef, pi_id.Ref, _IQ(0.00001)); //ramprate = 1pu/s
    pi_id.Fbk = park1.Ds;
    PI_MACRO(pi_id);

  • This controls the IdRef build up while starting from reset condition.

    From idle to posSlewRate, there is no controlled transition. During alignment, the shaft takes some position and after that it is controlled by posSlewRate.

  • Pls close the thread if the issue is resolved