# BJH H-bridge going in reverse but not forward, LL transistor overheating

I've built one of this BJT H-bridge to control a DC motor in an old R/C car of mine, but I'm having problems with it and wanted a few tips to help me debug the board.

The motor is a 2-wire DC with about 1.2A stall current.

Below is my schematics.

Note that I've used TIP102 and TIP107 in the actual board, as presented in the original design. I've replaced them for TIP122 and TIP125 in schematics because those were the closest parts I could find in Eagle CAD libraries. All other components I used match exactly the schematics.

Below is my board.

The truth table for the inputs FWA, REV and ENA is shown in the link I provided above, a bit down in the page. In summary, assuming ENA (ENAble, which is active low) is always low (active) we have the following situations:

1. FWA=HIGH, REV=LOW - The motor gets positive voltage and current, thus going forward.
2. FWA=LOW, REV=HIGH - The motor gets negative voltage and current, thus going in reverse.

I omitted the other 2 cases (braking and coasting) for brevity.

The board works fine in reverse (situation in the list 2 above). It runs at full speed as it should. The upper-left (UL) and lower-right (LL) transistors heat up a little while the lower-left (LL) and upper-right (UR) transistors remain cold, just as expected.

The problem I'm having is that it doesn't run forward. In that configuration of inputs (situation 1 in the list above), the motor doesn't run at all and the LL transistor alone heats up quickly.

Here's what I know and measured:

1. Vin = 12V, HIGH logic leve is 5V, while LOW is 0V.

2. With the motor terminals disconnected, I get +Vin at the terminals with the inputs configured to move the motor forward. With the inputs in reverse, I get -Vin at the terminals, which is expected.

What could be wrong with my board? What other measurements should I make to determine if there are faulty components, short circuits or bad solders or contacts somewhere?

Edit: I found the problem, thanks to Dave Tweed's comment about double-checking the resistor values. The answer was that I switched a pair of the 1K and 10K resistors when routing the board and assembled them incorrectly, thinking they all followed two lines of resistors of equal values. The 1K resistor is highlighted in the image above.

• Could you describe in more detail how the signals on JP3 are supposed to work? – jippie Dec 8 '13 at 15:23
• @jippie The complete truth table is at the web page I've given as the first link. Look down the page in a heading named Processor Interface. Is that enough? – Ricardo Dec 8 '13 at 15:27
• @jippie Basically, the board is controlled by an MCU. FWA means FORWARD, REV means REVERSE and ENA means ENABLE. To move the motor forward, you make FWA=1, REV=0, ENA=0. To move it in reverse, you make FWA=0, REV=1, ENA=0. You can control speed by feeding ENA with a PWM signal. – Ricardo Dec 8 '13 at 15:30
• @jippie Finally, FWA=1, REV=1, ENA=0 breaks the motor and FWA=0, REV=0, ENA=0 lets it coast. – Ricardo Dec 8 '13 at 15:32
• Double-check that you have installed the correct value of resistor in each location. BTW, the traces that are carrying the heavy currents between the two lower connectors and the four transistors look awfully wimpy to me. In the next rev of the board, beef up (and shorten) those traces as much as possible. – Dave Tweed Dec 8 '13 at 15:50