I'm trying to drive a solenoid with an arduino pro. I've assembled the typical MOSFET approach with a protection rectifier:


The circuit works, and the solenoid is triggered, but very weakly. In other words: it moves, but as soon as I attach what I want it to move, it doesn't have enough force to move it anymore. It works perfectly fine if I connect it straight to 12V, though. What might I be doing wrong?

The MOSFET is a BUZ91A.

The Solenoid is a 12 V ZYE1-0530Z (there seems to be 12V and 24V versions with the same part number). I couldn't find any specs regarding the impedance of this things, but I've measured 5 of them and they were all between 10.5 and 11 Ohms.

R2 is 2Mohm, no complaints there.

D1 is an 1N4001

I've tried increasing the voltage up to 16V and it gets better, but still weaker than directly supplying 12V from my PSU.

I suspect I'm not providing enough current, probably related to picking the wrong MOSFET?

I've tried a similar approach but using a TIP122 darlington array pretty much with the same results.

  • \$\begingroup\$ Are you using the 3.3V or 5V Arduino Pro? \$\endgroup\$
    – Majenko
    Commented Jan 11, 2015 at 22:41
  • \$\begingroup\$ I'm using a 5V version \$\endgroup\$ Commented Jan 11, 2015 at 22:42
  • \$\begingroup\$ I've tried triggering the gate with 12V as well, I experienced the same weak pull. \$\endgroup\$ Commented Jan 11, 2015 at 22:43
  • \$\begingroup\$ That MOSFET has a relatively high \$R_{DS-ON}\$ resistance. \$\endgroup\$
    – Majenko
    Commented Jan 11, 2015 at 22:44
  • \$\begingroup\$ If I'm reading the spec correctly, it's 0.9ohm. Is that high? \$\endgroup\$ Commented Jan 11, 2015 at 23:16

2 Answers 2


Assuming the MOSFET is being fully turned on, you have an ON resistance of around 1Ω.

The solenoid has a resistance of around 11Ω.

Add the two together you get a total resistance of 12Ω.

Powered from 12V you get \$I=\frac{V}{R}=\frac{12}{12}=1A\$.

That ties in nicely with the google results I get which include "Brand New DC12V 1A 10mm Stroke Push Type Open Frame Solenoid Electromagnet".

The voltage drop across the MOSFET would be \$V=R{\times}I=1{\times}1=1V\$. The solenoid would therefore be getting just 11 of the 12 volts it needs to work properly.

When you increase the voltage to 16V the sums change a little.

  • Current is \$I=\frac{V}{R}=\frac{16}{12}=1.33A\$
  • Voltage drop is \$V=R{\times}I=1{\times}1.33=1.33V\$

So the coil gets \$16-1.33=14.67V\$.

If the MOSFET isn't switching on fully, which may be the case since the threshold voltage could be as high as 4V, the resistance would be considerably more. However you mention you have tried driving the gate with 12V and it makes no difference. So we assume it must be fully switching on.

You should consider finding a MOSFET that has a much lower on resistance. 1Ω is a relatively high value by current standards. An on resistance of a few mΩ is better for this kind of application. Also look for one with a lower max threshold voltage, say nearer the 3V mark or below. They are often termed "Logic level" MOSFETs.


If you cannot find an adequate N channel part with a low threshold spec you could use a general purpose NPN transistor and a P channel MOSFET part, (one with a relatively high threshold spec can be used).

The P channel MOSFET goes on the +V side of the relay, with Source to +V, Drain to relay +, low side of the relay to GND, the high value resistor goes from the gate to +V, the NPN collector goes to the gate. A resistor on the NPN base and the emitter to GND.

Then just a small 3v signal into the NPN will switch it on and then fully drive the P channel's gate to near 0v (for a full turn on).

Even with a P channel MOSFET still look for a part with a low Rds-on value to reduce IR loses.


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.