Instructables
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!

 
Remove these adsRemove these ads by Signing Up

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

Step 2: Building the circuit - power connections

 USB powers the arduino, the batteries power the solenoid.  A jumper grounds the two together.

Step 3: Building the circuit - transistor time

 When the transistors labeled side is facing up the legs (from left to right) are B, C, E: Base, Collector, Emitter.

We will connect the output pin of the arduino to the Base leg of the transistor through a 1K resistor.  The Collector leg of the transistor will be connected to the ground leg of the device we are driving (our solenoid).  The Emitter leg is connected to the ground channel of our circuit.


Step 4: Building the circuit - connecting the solenoid

The "ground" leg of the solenoid is connected to the collector leg of the transistor.  The "power" goes to the high voltage power channel (from our batteries).  I put "ground" and "power" in quotation marks because none of the solenoids I've ever used have been polarized so it doesn't matter which lead is connected to ground and which goes to power.  

The diode connects the power channel to the solenoid-ground-leg/transistor-collector-leg, preventing the kickback voltage from damaging the circuit.  The diode is polarized and should be oriented with white/sliver stripe on the power channel side of the connection.

I'm using a pull-type solenoid rated for 12 to 24 volts (got it here), which has plenty of kick.  You'll need some kind of spring to pull the shaft back out after it's been pulled in - I used a small length of insulated wire wrapped around the shaft to create a makeshift spring.  In a different sort of configuration one could use gravity to pull the shaft back out (but you'd need some of stopper to prevent the shaft from falling all the way out).

Step 5: Program arduino and enjoy

Now just program the Arduino to drive the appropriate output pins and enjoy.  I've connected the transistor to pin 13 so I can see the built-in LED work in time with the solenoid.  The sketch I've used is a simple modification of the "Blink" sketch where I've reduced the on time to 80 milliseconds, which is more than enough time to pull the solenoid all the way in.



1-40 of 41Next »
effaowona3 months ago

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

bobin.jpg
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.

sonidiario.tumblr.com/post/35689237364

aavegbarole5 months ago

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.

sonidiario.tumblr.com/post/35689237364

Kvnn6 months 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 Kvnn4 months ago

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

Thanks
Mike

chrizbot MichaE4 months ago

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

tfedwards4 months ago

This was very helpful! Thanks!!

joesinstructables made it!4 months ago

Nice tutorial, thanks for sharing it.

image.jpg
ctang95 months 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..

nodoubtman5 months ago

TIP122 will also work ??

thanks!
marC:)

aavegbarole5 months ago

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

plzz rply soon

Filmguy1007 months ago

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

jts3k (author)  Filmguy1007 months ago
yes, two of everything (transistor, diode, resistor...). then just use another output pin on the arduino.
Filmguy100 jts3k7 months ago
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.

decon898 months ago

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

Hi,
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/
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 jamal1 year 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.
Hi

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.

Regards
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);
delay(1000);

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.
jts3k (author)  4lifenerdfighter2 years ago
i'm not sure what's most common, but the TIP120 is definitely BCE - http://www.fairchildsemi.com/ds/TI/TIP120.pdf
It might be because this transistor is in a voltage regulator style package instead of the normal half-cylinder. But I swear that to92 transistors are ebc.
plasma20023 years ago
You can just simply jump the grounds of different power supplies like that?
Yes you can.

This is only because it is the ground, which creates as he mentions a "common ground" which is needed when running to different power supplies on one system.

If you know anything about PCB design its essential the representation of having a ground plane and everything one the board being grounded to that plane while there could be more than one power supply input throughout the design.
3vilpenguin2 years ago
Is the reason it pulses because of your code? (ie. does the arduino alternate high and low?)

I want to implement this with a push button on/off.

Lastly, does it matter the mAh? I'd like to avoid using 9v batteries and instead use an AC adapter that outputs 12V natively
asyazrin3 years ago
what type solenoid used?
jts3k (author)  asyazrin3 years ago
I'm pretty sure it was this one:

http://www.goldmine-elec-products.com/prodinfo.asp?number=G16822

A "continuous duty" solenoid is preferable to "intermittent duty."
Poesis jts3k3 years ago
I bought some solenoids from that website and it didn't come with the springs are they included or was it something you got after to make the solenoid "spring" back?
jts3k (author)  Poesis3 years ago
you'll need to fabricate some kind of spring to pull the shaft back out after the solenoid pulls it in. in this tutorial i just wrapped some insulated wire around the shaft to create a make-shift spring (you can see this in step 4 and the video in step 5).
hi there,
as someone who has used solenoid valves for many projects heres a little word of the wise: 1. use the exact same circuit to drive a small relay, wich will then control the current to the solenoid, this allows for two things, no kickback current, and a intermediate that will allow for a safety switch/ debug point. but yea your probably not going to be doing anything too dangerous to have to deal with these kind of problems but thats just the policy ive stuck to for many years.
but still great work!
As a generic instruction "a 1n4001" also works may well be wrong, because if you have a big enough solnoid, the back emf will destroy a 1N4001, or a 1N4004. A 1N 4007 may be better, but even then ALL the inductive kickback energy is dissipated in the resistance of the diode and the coil. In some circumstances even bigger diodes are needed.
Thank You! This answered my question on how to wire my TIP120.
1-40 of 41Next »