I'm trying to drive a solenoid with a GPIO on a Raspberry Pi. Here's the schematic:
The current through the solenoid and MOSFET should be:
So the voltage drop across the MOSFET should be:
leaving us with 13.8V
across the solenoid, which should be enough to actuate the 12V
solenoid.
Naturally I've tried actuating it directly:
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:
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:
- IRF510 MOSFET (from Radioshack)
- 1N4148 Diode
- DC 12V Solenoid (amazon)
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:
The MOSFET driver is MIC4452YN.