AnsweredAssumed Answered

L6480 high current absorbtion

Question asked by baeri.danilo on May 22, 2014

Our application:

We have a Stainless steel disc diameter 30 cm, thickness 1mm, coupled with a chain to a stepper motor. The mechanical reduction is 1.5 (means that speed disc is slower than motor speed). Speed range of the motor starting from 0 to 400 steps/sec. Phase peak nominal current on each motor phase is 7A. Motor speed can change anytime continuosly.

We use it in an agriculture automation, for a seeder.

Used components:

Stepper Motor: SLH-3431-700-8-AXT-00, 8 wires, Rated Phase Current 7A (10A parallel connection), Phase Resistance 0.76ohm, Phase Inductance 3.9mH.

Driver: ST Microelectronics L6480

Bridge Mosfets: Infineon BSC076N06NS3G (applied in same schematic as application board EVAL6480H).

Protection: The whole electronic circuit is protected from power supply side with an automotive fuse rated 10A.


                #define AccDec_Steps_to_Par(steps) ((uint16_t)(((steps)*0.068719476736)+0.5))       /* Acc/Dec rates conversion, range 14.55 to 59590 steps/s2 */

                #define MaxSpd_Steps_to_Par(steps) ((uint16_t)(((steps)*0.065536)+0.5))                   /* Max Speed conversion, range 15.25 to 15610 steps/s */

                #define MinSpd_Steps_to_Par(steps) ((uint16_t)(((steps)*4.194304)+0.5))                    /* Min Speed conversion, range 0 to 976.3 steps/s */

                #define IntSpd_Steps_to_Par(steps) ((uint16_t)(((steps)*16.777216)+0.5))     /* Intersect Speed conversion, range 0 to 3906 steps/s */         

                dSPIN_RegsStruct.ACC                                = AccDec_Steps_to_Par(1000);               

                dSPIN_RegsStruct.DEC                                = AccDec_Steps_to_Par(1000);

                dSPIN_RegsStruct.MAX_SPEED               = MaxSpd_Steps_to_Par(1000);

                dSPIN_RegsStruct.MIN_SPEED = MinSpd_Steps_to_Par(0);     

                dSPIN_RegsStruct.FS_SPD         = 4095;

                dSPIN_RegsStruct.KVAL_HOLD                = 10;

                dSPIN_RegsStruct.KVAL_RUN = 34;

                dSPIN_RegsStruct.KVAL_ACC   = 34;

                dSPIN_RegsStruct.KVAL_DEC   = 34;     

                dSPIN_RegsStruct.INT_SPD       = IntSpd_Steps_to_Par(34);

                dSPIN_RegsStruct.ST_SLP          = 45;     

                dSPIN_RegsStruct.FN_SLP_ACC              = 170;

                dSPIN_RegsStruct.FN_SLP_DEC              = 170;   

                dSPIN_RegsStruct.STALL_TH     = 0;       

                dSPIN_RegsStruct.STEP_MODE               = dSPIN_STEP_SEL_1_128;        

                dSPIN_RegsStruct.GATECFG1   = 0x02E8;           

                dSPIN_RegsStruct.GATECFG2   = 0xE0;                

                dSPIN_RegsStruct.CONFIG        = 0x2C85;


Problem explanation:

When motor is driven at constant speed the current absorbtion doesn’t change over the entire range of speed. It’s in the normal working.

When we try to pass from a speed (named SA) to another speed (named SB) and viceversa in a continuos loop (SA –SB –SA –SB - …), current absorbtion tends to increase to very high values than predicted till protection fuse (10A automotive) breaks. In other words the current rise up without control. We change only the speed (Run (DIR, SPD)) of the motor and after many try we didn’t understan if the problem is related to the driver or a missconfguration.

Once the particular phenomen triggered itself the only way to stop it, is to set speed equal to 0 steps/sec and wait motor stops at least for a moment (if motor does not stop problem go on). After that repeating the process looping (SA –SB –SA –SB - …), problem occurs again.