External Power


Hi Folks.

I need to give more power to the motors on my board through the transistor but it is not clear how to connect it.

I’m concerned about toasting the motor so if someone can point to an explanation on how to add an external battery to drive more power to the motors through TIP120 that would be appreciated.




Hi Antonio, thanks for the message.

From your description, I’m guessing that you have the Bricktronics Shield, is that correct? And you are using a non-LEGO motor with the TIP120 transistors via the EXT0 and EXT1 4-pin headers?

Which version of the PCB do you have? v1.03 / v1.04 / v1.05? There was a mistake in v1.03 with the diode protection circuit for the TIP120 transistors.

The TIP120 transistors get their power from Vmotor, which is the Vin provided to the Arduino’s barrel jack (typically 9v). The 4-pin headers (EXT0 and EXT1) provide these connections:

  1. Vmotor
  2. TIP120 (top)
  3. TIP120 (bottom)
  4. GND

The expected use is to connect your motor between pins 1 and 2, and then short-circuit pins 3 and 4 to connect the lower side of the TIP120 to ground. We included a back-EMF protection diode across pins 1 and 2. Here’s what that would look like:

If you want to provide a different voltage or different power supply for your motor, that is possible with slightly-different wiring. Be sure to connect all the grounds together so 0v is 0v everywhere. You also want to add a diode “backwards” across the motor wires, so that when we stop driving the motor, the voltage generated by the coasting motor (and by the collapsing magnetic field in the motor coils) can be shunted through the protection diode instead of building up on the turned-off TIP120.

Generally motors are rated by voltage, so if you use a power supply below that rated voltage, you should be ok. You can even use a higher voltage if you are careful. For example here is a small motor from Adafruit, with these stats:

  • Operating Temperature: -10°C ~ +60°C
  • Rated Voltage: 6.0VDC
  • Rated Load: 10 g*cm
  • No-load Current: 70 mA max
  • No-load Speed: 9100 ±1800 rpm
  • Loaded Current: 250 mA max
  • Loaded Speed: 4500 ±1500 rpm
  • Starting Torque: 20 g*cm
  • Starting Voltage: 2.0
  • Stall Current: 500mA max
  • Body Size: 27.5mm x 20mm x 15mm
  • Shaft Size: 8mm x 2mm diameter
  • Weight: 17.5 grams

So you’d want to use a 6v power supply here. They also mention using it with 9VDC so that should be fine too. You can expect the motor to draw 70 mA when nothing is connected, and draw 250 mA when it’s moving something heavy.

Why do you think you need to give more power to the motors? Are you currently using a motor and it’s too weak or too slow?


Actually I’m using a lego motor but I want to drive more current to it… so apparently this approach won’t help me on what I’m looking for.
WIth the Arduino power it will work with 5V but I want to have it working with 9V instead.


Are you using an NXT or EV3 servo motor?

If you provide 9v as input to the arduino’s barrel jack, then that voltage will pass through to the shield and be used to power the motors.


Ok then. I thought the shield was being fed by 5V from the board. That should work then.


The Arduino takes the 9v input and uses a voltage regulator to produce 5v, both of which are provided to the Bricktronics Shield. Most of the Arduino and shield circuitry is powered from 5v, but the 9v input is used by the TIP120s and the L293D chip to power the motors.


Thank you for you valuable info Layne !

Adrian G
Technical Consultant - Apps4Rent