I’m trying to drive a solenoid with a GPIO on a Raspberry Pi. Here’s the schematic:
![enter image description here]()
The current through the solenoid and MOSFET should be:
![enter image description here]()
So the voltage drop across the MOSFET should be:
![enter image description here]()
leaving us with 13.8V
across the solenoid, which should be enough to actuate the 12V
solenoid.
Naturally I’ve tried actuating it directly:
![enter image description here]()
This works just fine.
Suspecting that maybe the MOSFET wasn’t fully switched on, I took the Raspi out of the mix and tried applying 4V
directly to the gate:
![enter image description here]()
but it doesn’t actuate…
I’ve also tried replacing the solenoid/diode with a simple LED/resistor combo and it lights up as expected in both the Raspi/non-Raspi configurations, so the MOSFET appears to be switching as expected…
What am I missing here?? Why won’t the solenoid actuate when I have the MOSFET in the mix?
Parts:
Solution
As pointed out by Respawned Fluff and The Photon, I was fundamentally confused about some of the parameters of my MOSFET. Specifically, $V_{gs(threshold)}$ is not the point at which $R_{ds}$ becomes $R_{ds(on)}$. $V_{gs(threshold)}$ on this MOSFET is 2-4V, so I thought I could switch it on with 3.3V. However, the value I needed to switch this guy on is actually 10V (read from the $R_{ds(on)}$ row on the datasheet).
Per Respawned Fluff’s suggestion, I added a MOSFET driver between my logic output and the MOSFET and, sure enough, things started working perfectly. I probably also could have swapped out my MOSFET for a logic-level one. Here’s the final working circuit:
![enter image description here]()
The MOSFET driver is MIC4452YN.