Controlling Solenoid Valves with ULN2003A, Inrush Current, Arduino

I want to control a total of five solenoid valves with my Arduino. The solenoid walves operate at 12 volts and have a power consumption of 5 watts per solenoid valve, which equals a current of roughly 420 milliamps.

My idea is to use a ULN2003A transistor array to do this. The ULN2003A datasheet says it supports voltages of up to 50 volts and a maximum current of 500 milliamps per output.

My question is: Is the ULN2003A with its 500 milliamps maximum current rating per output sufficient to reliably switch the solenoid valves? I'm asking because solenoid valves are inductive loads and if I'm not mistaken, they are subject to inrush current that far exceeds the normal current.

• Solenoids are inductors. On DC there is no surge current. In fact it takes a while for the current to reach full value. You can think of inductors as "liking to keep the current constant". At the point of switch on the current is zero so it rises at a controlled rate. See hyperphysics.phy-astr.gsu.edu/hbase/electric/indtra.html. – Transistor Oct 13 '18 at 8:26

You need to read the data sheet carefully- the maximum current per output can be closer to 50mA than 500mA, depending on the conditions. See figures 4 and 5 in the datasheet.

Surge is not an issue with DC solenoids, but you do need to connect the COM to the supply voltage.

For such high current I would recommend discrete MOSFETs (logic level) and diodes across the solenoids. For example, AO3400A and 1N40005/M5.

• And don't forget there is a maximum total current for the chip. It all has to come out on the ground pin via a tiny gold bonding wire inside. – Transistor Oct 13 '18 at 8:23
• Thanks for your reply. I'm pretty new to electronics and I'm not sure if I understand duty cycle correctly. If I want to switch a solenoid valve and keep it open for a minute, would that mean it has a 100% duty cycle during that time? I want to be able to run 3-4 solenoid valves at the same time. What I like about the ULN2003A is its small size and that it's just one component. Are you aware of a MOSTFET transistor array that's similar? My initial plan was to use a cheap 8-channel relay board with 1N4007 diodes. Maybe I should just stick with this option. – Chris1309 Oct 13 '18 at 11:15
• For a minute you should use the 100% duty cycle number to be safe. 420mA * 4 = 1.6A. I don't know of anything like that offhand that is common. You can use relays with diodes as you suggest, however the relays will eventually wear out, after maybe 100,000 operations or more, depending on the relay rating and design (and assuming you put diodes across the solenoids- without that they will wear out much more quickly). – Spehro Pefhany Oct 13 '18 at 14:05

The current won't surge as you expect. Because the solenoids are intended for constant application of the rated 12VDC, they are built with enough internal resistance to limit the current; the rated current is the largest that (with 12V) they will ever have.

In addition to inductance (which can be subject to nonlinear effects), the solenoid has internal resistance, by design.
Solenoids for AC application with less internal resistance, would also limit current according to AC frequency and their inductance.

As a practical matter, the ULN2003A also has thermal limits and (at the ground pin) a total-of-all-outputs current that cannot exceed 2.5A; at 420 mA per section, six solenoids will be too much to drive simultaneously.

A few things on solenoids (either relays or valves), since you are using a ULN2003 I'll assume you are going to drive it with a voltage step:

1. When apply a voltage step, the current will rise until the electro-magnetic force exceeds static friction.
2. At this point the plunger (for a valve) or the armature (for a relay) will start moving and create back-EMF which will reducing the current as movement accelerates.
3. Once the movement ends (usually abruptly), back-EMF goes to zero and the current will raise to stall value.
4. Usually at this point the voltage is reduced (by PWM) to ~40% of initial value as less force is needed to maintain position as opposed to initiate motion (keep in mind that force is linked to current, not voltage).

Datasheets often specs both values: boost (initiate movement) and hold (maintain position).

A good rule of thumb is that hold is ~40% of boost.

By default, I'd assume the power is given in static (where the valve will be most of the time) so the 420mA would be the hold current then you'd need overhead to be able to activate it properly (~800mA).

• Are you referring to a voltage booster? My plan was to use one 12v power supply for the solenoid valves and to use a buck converter to get 5v from the 12v supply to power the Arduino and control of the ULN2003. I would then hook up GND of the valves to the ULN2003 (plus 12v VCC to 9) and VCC of the valves with the 12v supply. If I understand you correctly, your point wouldn't be an issue if the power supply can supply enough current (800 mA per switching valve). The transistor doesn't have to support 800 mA because back EMF will make sure the current that flows through it doesn't increase? – Chris1309 Oct 13 '18 at 11:33
• many question in a comment :) high-level your approach is correct, my main point was to share some background as to why it was likely the peak current is likely higher than the figure you had in your question. The final decision depends on how your circuit is built and the valve you end up choosing. – matt__chv Oct 13 '18 at 20:10
• The 'boost' phase starts with the plunger stalled, i.e. no significant back-EMF. That is identical to 'hold' current, is it not? PWM is not necessary nor indicated here. – Whit3rd Oct 14 '18 at 7:54
• @Whit3rd The hold phase starts when the plunger stalls. The boost (which is just another word for stronger: sometime just full supply voltage, sometimes even boosted voltage -hence the name) is when the stronger voltage -hence current, hence force- is applied to allow movement. Once actuation is over, PWM is a very common choice to reduce dissipation. Mentioning PWM was needed -in my opinion- to explain how the current in hold phase is specified with a lower value than needed in activation - boost- phase (as otherwise stall current would be higher, since there is no back-EMF). – matt__chv Oct 14 '18 at 10:52