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.

Unstable when entering Spintac pos Control

Other Parts Discussed in Thread: DRV8301

Hi,

Im using the DRV8301 from the DRV8301-69M-KIT in combination with a BLDC motor. I find it a really sound evaluation kit so far. However I'm having some trouble when entering the Spintac pos Control after the RS-measurement. Sometimes the motor will become uncontrolled. To help understand I will explain:

So, I tuned the motor separately and it was running smoothly and stably both at zero velocity and at 90% max speed. Then I added the encoder to the project and tested it. After some trial and error I got it to work just as well. Thus I mounted the motor to the sled. Did the inertia lab again and it performed well with the following settings:

#elif (USER_MOTOR == WITTENSTEIN_MSSI_055H_045E_2)

#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.2694111)
#define USER_MOTOR_Ls_d (0.0001794554)
#define USER_MOTOR_Ls_q (0.0001794554)
#define USER_MOTOR_RATED_FLUX (0.07580239)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (9.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (40.0)
#define USER_MOTOR_ENCODER_LINES (5000.0)
#define USER_MOTOR_MAX_SPEED_KRPM (4.95)
#define USER_SYSTEM_INERTIA (0.2009052038)
#define USER_SYSTEM_FRICTION (0.3665937781)

with 

#define USER_SYSTEM_BANDWIDTH_SCALE    (2.0)

#define USER_PWM_FREQ_kHz                (45.0) 

#define I_A_offset (0.996142268)
#define I_B_offset (1.000064135)
#define I_C_offset (1.003504992)

#define V_A_offset (0.9931519032)
#define V_B_offset (0.9909945726)
#define V_C_offset (0.9863491654)

and in the spintac position controller changed

#define ST_MREV_ROLLOVER (21.0)

So with Lab13b working I added the sci.c file and wrote an interface in which the fifo buffers are polled (in the main loop) to check for messages. So without adding new interrupts.

In most cases this works fine. The system is enabled.  The motor is identified and the angle is synchronized during the RS-measurement. After which the spintac position control starts and I am able to control the motor exactly at low speed and high speed.

However sometimes when enabling/ entering the spintac position control, the motor goes crazy and the sled crashes into both sides a few times and then stops. There is a motor error, after which the motor is controllable again. Any idea what might cause this? Any idea in which direction to look?

Thanks

  • Pim,

    You should try increasing the  USER_MOTOR_RES_CURRENT_A. This is the amount of current that we use to align the motor and encoder. We expect that during the Rs state the motor will be holding a zero degree electrical position. If that isn't enough current to meet that condition you will see the motor be uncontrollable and have erratic behavior. In the CNC application video I had to set the resistance estimation current equal to the motor max current in order to get a good alignment. 

  • Thanks Adam,

    It did seem to help. And after I changed a few other things (including going directly from enabled to identifying, adding a pause after rs_calc ) the problem no longer seems to reoccur. 

    So now i started testing at full speed.  When I increase the acceleration, at a  certain point the supply voltage collapses. Currently I am using a  48V 20A switching supply. This switching supply should be able to deliver the needed current.

    So I did some measurements and noticed that the supply voltage is increased by feedback from the drv8301.  At high de/ acceleration the supply voltage reaches 56V and the supply voltage shuts itself down to over-voltage protection.

    Any advice on this matter? Any approach I should follow?

    Edit: I was thinking that this happens due to the kinetic energy during deceleration is converted into electric power. Since regenerative breaking is not supported, I was thinking of placing a few large capacitors with an inrush current limiting resistor. Ideas?

    Pim

  • Pim,

    Glad to hear that was able to help with the issue.

    You are right, that you are getting that energy buildup during the deceleration.  This is actually how regenerative braking works.  We are converting the kinetic energy of the motor into electrical energy that is stored on the voltage bus.

    You could also look at building a simple brake controller.  If the voltage bus is greater than 49V, you could connect a resistor across the bus voltage in order to burn off that energy into heat.  This could be done in a simple circuit with a comparator, a transistor, and a resistor.  

    Another approach would be to reduce the deceleration.  SpinTAC supports different acceleration and deceleration rates in the position profiles.  So you could accelerate very quickly but decelerate more slowly.