I'm wanting to control a 6V Solenoid valve from an Arduino using only a single power supply. To do this I was planning to use an external 9V power supply.

There are a few issues I am not quite sure how to resolve

1) Providing power to both components via a single power supply. Whilst the Arduino can accept up to 11V input it is not able to power "high" voltage external components. What would be the recommended route for this scenario? I have taken a look at the Motor Shield v2 however it does not appear suitable for this scenario.

2) Confirmation of Solenoid power requirements, the specification for the Solenoid valve only mentions a voltage and power consumption.

Solenoid Specifications:
Voltage: 6VDC (continuous), 6-12VDC subject to duty cycle
Power Consumption: 1.6 Watts - at 6VDC

Using the above specification I've calculated that a current of 267mA should be supplied to the Solenoid, using a 23 Ohm resistor (or whichever is nearest commercially available) would give the desired outputs.

3) Apart from a MOSFET used to control the on/off signal to the solenoid and a flyback Diode to reduce the change of voltage spikes reaching the Arduino. Are there any other components I would be missing?



2 Answers 2

  1. You don't power the solenoid by connecting it somehow to the arduino. You connect the circuit consisting of the solenoid, voltage limiting resistor, flyback diode and MOSFET in parallel with the arduino. You'd connect the +9 V to both the arduino DC positive and the solenoid, and you'd connect the ground to both the arduino DC negative and the MOSFET drain pin.

  2. A solenoid which dissipates 1.6 W at 6 V will indeed draw 1.6/6 = 267 mA. However, using a 23 ohm resistor for dropping the 9 V supply voltage to 6 V won't work; 23*0.267 = ~6 V. You calculated the resistance of the solenoid, not the extra resistance needed for 9 V operation (which is 11.25 ohms, 0.8 W).

  3. That should be all you need, but I'd add a capacitor (0.1 - 10 uF) between the 9 V supply and ground for good measure, to prevent voltage transients from coupling to the microcontroller on the arduino board. Be sure to use a "logic level" MOSFET with a gate threshold voltage (Vgsth) below 3.5 V.

In summary, the circuit I propose:


simulate this circuit – Schematic created using CircuitLab

  • \$\begingroup\$ Thanks for the reply jms, I've drawn up a schematic design of the board including your additional recommendations. [link]prnt.sc/eby4jh \$\endgroup\$ Commented Feb 22, 2017 at 11:06
  • \$\begingroup\$ @user3424480 No offense, but that circuit doesn't make much sense. That transistor is a BJT, not a MOSFET, that capacitor doesn't accomplish anything, the arduino isn't being powered and there is no path for current to flow from the transistor back to the 9V power supply. See my updated answer. \$\endgroup\$
    – jms
    Commented Feb 22, 2017 at 16:38

A cheaper option would be to get a single relay with an on board octocoupler and use it to drive whatever you need. It obviously doesn't work with very high frequencies but it it's much easier and cheaper to do. I actually bought some for $0.60 each on aliexpress and they work flawlessly.
Relay link


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.