BTS7960 Motor Driver burnout

Hi all, new to arduino and I have been having a problem

I am trying to control a 24V 15A DC motor (quite a large motor yes) and I am using an Arduino UNO with a BTS7960 motor driver module. I am supplying the motor driver with a 24V 26.5 A power supply. The BTS7960 has a peak current rating of 43A.

I have been trying to have bidirectional speed control using a potentiometer and PWM signals. I have tested the driver by initially inputted simple commands, but when i try to introduce the potentiometer, the control does not seem very robust. I have verified that my PWM code works by implementing it on LED's. i have burned my BTS7690 out at the VCC pin it seems( the module started sizzling and my power supply started working very hard with its fans operating very loudly).

  1. Is there something fundamentally wrong with my code?
  2. Is the BTS9760 motor driver module not strong enough to drive my DC motor?
  3. Do i have a to strong power supply that when i implement my code, exceeds the max current ratings?
  4. is my logic of LPWM and RPWM correct if i understand it as clockwise and counterclockwise rotation?

Please help :frowning:
Here is my code

int sensor_value=0;

int RPWM_output=0;
int LPWM_output=0;

int enable=0;
int RPWM = 6; // Arduino PWM output pin 9; connect to IBT-2 pin 1 (RPWM)
int LPWM = 9; // Arduino PWM output pin 10; connect to IBT-2 pin 2 (LPWM)

int R_EN = 7;// H-BRIDGE enable pin pin 1
int L_EN = 8;// H-BRIDGE enable pin pin 2

void setup()
{
  pinMode(RPWM, OUTPUT); //pin 9 arduino, pwm output, right(clockwise)
  pinMode(LPWM, OUTPUT); //pin 10 arduino, pwm output, left(counter clockwise)
  pinMode(R_EN, OUTPUT); //pin 7 arduino, right enable bridge
  pinMode(L_EN, OUTPUT);  //pin 8 arduino, left enable bridge
  pinMode(A4,INPUT); //pot input
  
  delay(1000);
  Serial.begin(9600);

  digitalWrite(R_EN,HIGH);  
  digitalWrite(L_EN,HIGH);
  delay(100);
}

void loop()
{
  
  sensor_value = analogRead(A4);

     if (sensor_value < 401) // this will be for clockwise rotation, with the speed decreasing as sensor_value increases
    {
    RPWM_output = map(sensor_value, 0, 400, 255, 0);
    analogWrite(LPWM,0);
    analogWrite(RPWM, RPWM_output);
    }
    
   else if(sensor_value > 699) // this is for counter clockwise rotation, with the speed increasing as sensor_value increases
    {

     LPWM_output = map(sensor_value, 700, 1023, 0, 255);
    analogWrite(RPWM,0);
    analogWrite(LPWM, LPWM_output);

    }
    else //a buffer region where the motor will be stationary
    {
    analogWrite(RPWM,0);
    analogWrite(LPWM,0);
    }

}

What is fundamentally wrong is you did not include a schematic of you setup. How big of a heat sink do you have on the BTS7960 ?

What is the stall/starting current of the motor? That is what will kill your driver ic.

Paul

hi Paul_KD7HB, thanks for the reply.

attached is the schematic for my wiring with exceptions of pin location. Yes i assume that the heat sink is sufficient enough, and here is a link if you would like to confirm:

https://www.botshop.co.za/product/bts7960-motor-driver-43a/

also attached is the information provided in datasheet of the DC motor. The current specified in the table is the "absorbed current".

Also it seems that not the IC sustained damage but rather the BTS7690 H-bridge, datasheets in links below:

BTS9760 motor driver module
BTS7960 H-bridge datasheet

schematic.PNG

dc motor characteristics.PNG

I don't see anything right off that is a problem. Does your motor turn properly either direction when connected directly to the power supply and does it come up to speed rapidly?

Paul

Hi Paul,

Yes the motor can move both directions and come up to speed rapidly. Planning on measuring the stall and starting current from the motor. But besides that , I cannot imagine what else could go wrong.

Thanks for reply an will update if their is progress.
Ockert

Perhaps the power supply doesn't like a PWM load at high power - how much decoupling do you have at the motor controller board - the existing capacitor shown on the unit is woefully inadequate, several 1000µF would be good to have at that current level to keep the PWM current ripple away from the supply.

What PWM frequency are you using - too low will require huge amounts of decoupling, too high will waste heat in the switching devices? Something like 8kHz might be a good starting point for reasonable compromise.

15A motor will pull perhaps 100 to 200A at stall, so its vital to ramp up the drive PWM, not snap to 100% instantly or both the controller and supply will be crow-barred. Some power supplies simply cut-out if overloaded, which is not very motor friendly. Current limiting is a far better behaviour.

Datasheet for your power supply?

BTW the heatsink on the controller is probably about right for 15A or so, but will need good ventilation.

Thank you Mark for the reply.

Could you please explain what you mean by 'decoupling at the motor controller', sorry I can not answer it straight away.

Thanks for the suggestion about the capacitor. I will do some research into that. Do you suggest that i replace the 330µF with a larger cap eg. 2000µF?

I am realizing now that i am using PIN 6 for my clockwise PWM signal and PIN 9 for my anticlockwise PWM signal. On the UNO board these two pins have different frequencies , 490Hz and 980Hz respectfully. Could the low frequencies be the cause of the problem, and could the difference in frequencies contribute to this?

I will keep speed ramp in mind thank you very much.

Attached below is the datasheet for the power supply.

I was think about attaching a secondary heatsink on top of the 2 H-bridges. The heatsink below is not as efficient. Would you recommend I do this and add an external fan for ventilation?

I appreciate any comments and suggestions.

0900766b8169c81c.pdf (269 KB)