Picture of Controlling solenoids with arduino
tip 120 solenoid breadboard view_bb.png
tip 120 solenoid schematic view_schem.png

In this instructable we will be building a simple circuit that will allow us to control a solenoid using the popular physical computing platform arduino. I became interested in controlling solenoids for robotic music applications. A similar circuit can be used to control a motor or other devices that require more current than the arduino can provide directly from its output pins.

Since the solenoid requires higher current than the arduino can provide we will be using an alternative power source for the solenoid (a couple batteries) and will be "driving" it with a TIP120 transistor.

The circuit we're using can be found online here. This instructable draws from the excellent documentation in Tod Kurt's bionic arduino workshops.

Build time was exactly one-beer. Excluding the arduino and computer you use to program it, we are using less than $10 in parts. Ok!

Step 1: Parts

Picture of Parts

• Arduino board
• USB cable for programming and powering the Arduino
• Breadboard
• Some jumper cables
• A 1K resistor
• TIP120 transistor (TIP102 will also work fine)
• 1N4004 diode (1N4001 also works)
• Some batteries and connectors for solenoid power
• A solenoid with leads to connect to the breadboard

1-40 of 53Next »
effaowona11 months ago

Hello, the solenoid i'm trying to control has 3 pins. where should i connect these pins? thanks!


I'd be interested to know as well. I've you figured out how to wire it?

*Have you? (late night typing)

I know this question is a month old, but it might be usefull for other people.

In valves like these, you have 2 parallel and 1 perpendicular pins. The parallel ones need to be connected to your output driver. It doesnt matter which pin gets the positive/negative or live/neutral. The perpendicular pin is for grounding.

Thanks for the reply :)
I believe that is a solenoid valve for water.
mjtrac3 months ago

Thank you, this is very helpful to us newbies.

trimitsos4 months ago

How do you modify the code in order to run twice a day?

Every 12hrs for exaple for watering plants needs to stay open for 2 mins and repeat?

What is the difference if i use a relay instead a transistor?

Thank for sharing

TeamJaeger made it!5 months ago

I've used this circuit many times now to control solenoids but also to control motors via pwm. Good Stuff - Thanks for Sharing!

saddi malik5 months ago
djmoll96 months ago

Can this be accomplished without usb power?

nodoubtman8 months ago

when the solenoid is active, it tends to heat a lot, what do you do with yours?



nodoubtman8 months ago

when the solenoid is active, it tends to heat a lot, what do you do with yours?



iangoh1 year ago
Could an arduino control nine solenoids (though only one would be in use at any time)? I was thinking how much work it would be to make an automated whack-a-mole out of http://www.thinkgeek.com/product/1270/

See this link, maybe can helpyou.


how many solenoid valves can i trigger using ardunio......i am using it to make programmable fountain.

plzz rply soon

Maybe this link can help you.


Kvnn1 year ago

I have done all the steps, but with a TIP126 transistor and a IN4007 diode... when I connect the batteries to the breadboard, the solenoid opens, but nothing related with the Arduino seems to work... what can I do? Is it because of the different diode or transistor?

MichaE Kvnn1 year ago

Hi Kvnn,
I have the same problem, have you found a solution?


I had the same problem because I had connected the diode to the GND rails rather than the SOLENOID V+ rail.

tfedwards1 year ago

This was very helpful! Thanks!!

joesinstructables made it!1 year ago

Nice tutorial, thanks for sharing it.

ctang91 year ago

hello..i aldy connect all the components correctly..but when i turn on my power supply..my arduino suddenly give error..i am using 24V solenoid..and using labview interface with arduino..is it happened because the power supply is unstable?when i measure the power supply it gives 32V instead of 24V..

nodoubtman1 year ago

TIP122 will also work ??


how many solenoid valves can i trigger using ardunio......i am using it to make programmable fountain.

plzz rply soon

Filmguy1001 year ago

Great tutorial. If I want to control two solenoid a do I need two of everything here?

jts3k (author)  Filmguy1001 year ago
yes, two of everything (transistor, diode, resistor...). then just use another output pin on the arduino.
Thanks for the reply! Can I use the same breadboard for both or do I need two of them?

You can use one breadboard, just use two different rows.

decon891 year ago

Nice little tut.. Would be nice to have a little schematic though :)

I have a question. I am trying to create a self watering cabinet. I have bought brass solenoid valve which requires 12V DC to open. Now I would like to control this with my Raspberry Pi. Could I use the same method for my 12V brass solenoid?

This is the valve: http://www.voc-electronics.com/a-29507043/home/brass-liquid-solenoid-valve-12v-1-2-npt/
saleh jamal2 years ago
Hi ,
i have the same project,, but my solenoid only push and is difficult to get back ..
could you please post here the program code that u write to control the solenoid ..
thanks in advance
jts3k (author)  saleh jamal2 years ago
That does not sound like it is an issue with your code. You need a spring or some other mechanism to pull the solenoid back. The solenoid can only pull in one direction so you'll need something mechanical to pull it back in the other direction. In this example I used a coiled up piece of wire to function as a spring pulling the shaft back out.

I purchased a solenoid valve . i want to control it from my arduino. I did not get
TIP 120/102 transistor. I got TIP 122 only. Can that be an alternative yo TIP 120? If yes is there any change i need to make with the above circuit? Please reply asap.

ddd16002 years ago
Which pin is the 1K resistor in. Is that pin 13?
ddd16002 years ago
Is there any difference between any of the three GND plugs on the Arduino?
aadot2 years ago
would you be so kind to point out exactly the type of insulated wire for the springs? im having the same problem, i need to fabricate springs for my solenoids...
How do you control how long the solenoid stays open? Thanks!
He is using the basic sketch for a blinking light. Usually this sketch comes with the arduino software for free. The blinker sketch basically flips pin 13 from HIGH to LOW at an interval to blink an LED. In this case pin 13 goes to the solenoid so just modify the delay in the code to make it stay open longer, etc.

If you are looking at the sample code the line you need is:
digitalWrite(ledPin, HIGH);

changing that delay (in miliseconds) will make it stay open longer.

If you need info on uploading or getting the sketch you can check a great tutorial here http://www.ladyada.net/learn/arduino/lesson1.html
I always thought transistors were universally Emitter-Base-Collector.
1-40 of 53Next »