I am using 4 motor drive modules that are commonly found on EBay or Aliexpress.
I thought I would write some notes about it so that hopefully these notes will be of use to someone.
The modules look like this on top and have a thumping big heatsink on the back. More about that later. If you have a search about you will find there is a schematic for this on the net. This schematic appears in multiple places but appears to be the exact same schematic.
BTS7960 or BTN7960 which is it? The module can be listed as either or both on the usual sites.
The number refers to the part number of the power IC of which there are two on this board to make a full H bridge from two half H bridges.
The power IC is made by Infineon. The BTS7960B (TO263 package) was introduced Sep 2008 and end of life March 2009. The BTN7960B is listed as the replacement for the BTS7960 however its
announcement and retirement dates are the same. What is the difference? Not a great deal if you are doing a hobby project. Digging through the datasheets some parameters are a bit better on the BTN7960. Infineon list the current replacement as the BTN8982TA which pretty much looks the same but some parameters have got a bit better.
The module I got from Ebay has the BTS chips on it. I'm guessing that the reason there are so many of these boards out there for almost nothing is that this chip has not been made for 14 years so there probably was a lot of them left over surplus somewhere. Yay we get a really good high current drive board for very little. I don't know how long this will last. When the grey market surplus stock is used up they will probably disappear.
So some things I have noticed comparing the board to the schematic. They are different! There are 8 surface mount resistors on the board and we can group them into two blocks. Four resistors act as pull-down on A1-A4, the inputs to the 74HC244 octal buffer/driver. The other 4 are connected to the SR (slew rate) and IS (current sense and diagnostic) pins. In the circuit diagram all the resistors are 1K. On my board and all the boards I could find on line with a decent photo I could read have 10K resistors on SR and IS. The pull-down resistors are 30K. The schematic has the resistors as R2-R9 there is no R1. The sikscreen lists them as R1-R8. Oh dear
If you care about the slew rate or are using the current sense output have a look at the board not the schematic.
My module has a 74HC244 octal buffer driver for the input signal (IN) and the inhibit signal (INH). In the schematic this is a 74AHC244 and only half of it is used. On my board and photos of other boards this is a 74HC244. It is a bit of a mystery why this is here. The BTS7960 datasheet says that the inputs can be driven directly from a microprocessor. It says the inputs are TTL/CMOS compatible schmitt triggers. The datasheet says high level input voltage (section 4.4.6) is at most 2.15V so it will work directly from a 3.3V or 5Vmicro.
So the presence of the 74HC244 is a mystery. Its not acting as a level shifter if you are using a 3.3V micro.
A look at the silkscreen next to the 8 pin input connector shows the top row of pins (1,3,5) as RPWM, R_EN, R_IS. The bottom row of pins (2,4,6) as LPWM, L_EN, L_IS. You would expect that RPWM would be for the right hand BTS7960, U3 on the schematic and LPWM for the left one.
NOT SO
In the schematic and buzzing out my board the top row (1,3,5) goes to U2 on the left and the bottom row (2,4,6) goes to U3 on the right.
It might have been nice if they had kept the input pin names the same as the Infineon datasheet.
R/LPWM goes to IN pin. Yes this would probably be driven by a PWM output from an Arduino
R/L_EN goes to INH (inhibit pin) hold this pin HIGH. LOW turns everything off
R/L_IS is the IS pin. Current sense and diagnostic output pin. I'm not going to delve into how to use this, That would be a whole article to itself. Remember to check what resistor is actually connected to your board if you are going to use it.
The board has a great big heatsink on the back and this is a problem. It is there for show more than anything. The BTS7960B is a TO263 package. The tab (metal back) of the package is soldered to the PCB and the die inside is in close thermal contact with the tab. Almost all of the heat comes out of the tab into the PCB. For the real low down see Infineon application note AN-2021-02
The PCB top if you look closely has large copper areas between the tabs and the motor connector and this is a good thing. Its the top PCB copper that is the main heat conductor. Looking at the back of the PCB with the heatsink off.
There are two pads with an array of via holes to carry the heat from the tab, through the board and the heatsink is against this side.
This is a terrible terrible idea. All those via holes are electrically connected to the tabs. The tabs are connected to the motor outputs. Now screw a big piece of aluminium across them. The ONLY thing stopping this from shorting the motor outputs together is the paint on the heatsink.
Also, the screws holding the heatsink to the board do not have enough clearance on the top side copper layer. The only thing stopping the screw heads from electrically connecting the heatsink to whatever is the top side copper pour around the screws is the top solder mask.
The heatsink has no thermal grease or other thermal conducting material and is not likely to be in good thermal contact with the PCB bottom which in turn is only thermally connected to the tab where the heat is actually coming from by vias through the board. This is not how you remove heat from a TO263 package. See application note listed above.
I'm leaving the heatsink off in my project.
One last thing. The battery negative supply and pin 8 are both GROUND. There is only one GROUND reference on this board. The battery GROUND is going to be a big wire. Pin 8 is going to be a little wire. The obvious is to have the Arduino GROUND connected to the battery negative and ALSO run a small wire from a GND pin on the Arduino to pin 8. This will create a ground loop. You will probably find a document by Handson Technology on how to wire up and use a BTS7960. Don't do what they show with GND. Look up ground loops.
Conclusion. BTS7960 is cheap and a lot of motor drive for little money. Some of the design is poor. Some of the design is why is that there? Documentation (Such that it is) does not correspond with the actual board and they are likey to go away when whatever surplus stock of these power IC get used up.
Happy hacking. Hope this is of use to someone.