I am building a circuit that will connect a raspberry pi to a solenoid. I'm following roughly this schematic: http://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf and modifying it so that it connects to pi GPIO pins instead of an arduino.

I need to pick a transistor, as shown in the schematic. I believe it needs to have at least 2.58 A to match my solenoid, and 5V to match the voltage from the Pi. However, when trying to pick a transistor it gets more complicated because I'm not sure what I need for V-EBO and V-CBO.

Can anyone help me figure out what specifications I should be looking for, or suggest a transistor? This one I found has a VCBO of 80V, but I believe that is too high because my Pi will have a power supply of 5-6V.

  • \$\begingroup\$ here is a list of other components I will be purchasing: RASPBERRY PI POWER SUPPLY raspberrypi.org/products/raspberry-pi-universal-power-supply SOLENOID POWER SUPPLY alliedelec.com/speco-technologies-psr4c/70146364/… SOLENOID gamut.com/p/… \$\endgroup\$
    – natalie
    Commented Oct 18, 2017 at 18:43
  • \$\begingroup\$ Do you see a problem just using TIP102 like recommended in the linked pdf? \$\endgroup\$
    – The Photon
    Commented Oct 18, 2017 at 18:45
  • 1
    \$\begingroup\$ Those 80V are a maximum rating. You can go as low as you want. \$\endgroup\$
    – Janka
    Commented Oct 18, 2017 at 18:46
  • \$\begingroup\$ I just looked at TIP102, it is 100 V so I thought that wouldn't work- but the previous comment clears that up, if it's a maximum that wouldn't be a problem? Because my Pi will be running at only 5V or so. \$\endgroup\$
    – natalie
    Commented Oct 18, 2017 at 18:50
  • \$\begingroup\$ The solenoid power supply (12 V) is what's producing \$V_{cb}\$, not the Pi supply. But 12 V is still less than 80 or 100 V. \$\endgroup\$
    – The Photon
    Commented Oct 18, 2017 at 19:02

1 Answer 1


V-EBO is the maximum reverse voltage applied between base and emitter. It doesn't really matter for your application because your circuit won't apply a reverse bias voltage to the transistor's base.

V-CEO and V-CBO do matter since they determine the maximum collector voltage of the transistor, and therefore limit the maximum solenoid drive voltage you can use. These voltages are maximum ratings, however - so if you use a 100 Volt transistor to switch 5 Volts, that's perfectly fine.

The BD679 is a bad choice for another reason, though. Its high collector-emitter saturation voltage, V-CE-SAT, means that the transistor will dissipate a large amount of power internally (solenoid current times V-CE-SAT). Your transistor has such a large saturation voltage because it's a so-called "darlington transistor": There's actually two transistors in there to get increased current gain. (Current amplification)

If you used the BD679, it would probably overheat and die.

You might be better off using a MOSFET for your application, since MOSFETs don't have a saturation voltage, only an on-resistance. You'd need a so-called "logic-level MOSFET", which is a special type of MOSFET that has a low turn-on gate voltage, because your Raspberry Pi only outputs 3.3 Volts and regular MOSFETs need about 10 Volts to turn on. The IRLZ34 is such a logic-level MOSFET and it is available on Mouser as well.


Connect the MOSFET's source to ground, gate to the Pi's GPIO pin through a small resistor (~100 ohms), and drain to the solenoid. It shouldn't need cooling for this application.

You may also need to add a "pulldown" resistor (~10 kOhms) from the MOSFET's gate to ground to make sure it stays OFF until the GPIO pin goes high.

  • \$\begingroup\$ @Irfann You should post your additional information as a separate answer. I recommend starting "In addition to Jonathan's answer..." In this way you can gain reputation from upvotes, and then be able to post comments. \$\endgroup\$
    – JYelton
    Commented Oct 18, 2017 at 20:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.