Electronic – Solenoid doesn’t actuate when driven through MOSFET

mosfetsolenoid

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.

Best Answer

Well, the datasheet of your MOSFET does try to spoonfeed you how to use it properly (as a switch):

enter image description here

You need 10V Vgs to get that Rds(on). You're giving it 4V Vgs and expecting the same Rds(on)? Alas it doesn't work that way. It seems to me you've used the Vgs(th) value in your design, but that only guarantees you 250uA on the drain:

enter image description here

That actually translates (in the datasheet test conditions with Vds=Vgs) to 4V/250uA=16Kohm Rdson at threshold. So most of the voltage drop would be on the MOSFET and almost nothing on the solenoid's coil if that's the Rdson you're actually getting. (Put your solenoid in series with a 10K or 15K resistor, straight to the source sans MOSFET and see if it still turns on. I bet it won't.) Of course this Rdson a worst case scenario since that Vgsth is the max [=worst case] value. More on how to navigate a MOSFET datasheet is found in my previous answer to a very similar question. Expecting awesome Rds(on) at Vgs(th) is a perennial newbie gotcha, it seems.

Your Amazon solenoid doesn't have anything resembling a datasheet, but you can measure the voltage drop across the solenoid's coil and/or the current through it to see exactly what's going on.

A respectable solenoid datasheet has data that lets you know exactly how much voltage you need to turn it on (and how much current it draws at that point). For example, this series:

enter image description here

If were using their "12V" (nominal) solenoid, at least 9.6V are needed to turn it on and it will pull at least 1.52mA at this point. (It also gives you the turn-off voltage.) Since you don't have such data available for your solenoid, you'll have to determine it experimentally (e.g. using it directly with a variable voltage source) and then decide what you need to switch it on.

Related Topic