Op-Amp + MOSFET = Constant Current Power Source (?)

I'm trying to make my first circuit from Horowitz and Hill- a constant current source that sits above the load, and can (hopefully) source 1A.

I decided to use the components I had on hand- an LMP2231 as the op-amp, a p-channel MOSFET NDS356A as the switch, a 0.5 $\Omega$ resistor to act as the sense resistor, and a voltage divider that provides the reference for the Op-amp. I've attached a schematic that also has the component labels.

The problem is, when I connect a resistor from the MOSFET drain to ground, no current flows through the circuit. I'm not sure what I've done wrong here, but I am wondering if maybe it has to do with the Op-Amp not being able to pull the gate on the MOSFET? If this is the case, What are the criteria for matching an Op-amp with a mosfet so it will work?

simulate this circuit – Schematic created using CircuitLab

=========== EDITS ==========

EDIT: So in response to the well-thought out replies below I've gone and repicked some (all) of the components to get a circuit that looks like it will work:

• selected an Op-Amp (AD8605) that has a maximum differential input voltage of 6V
• altered the values of $R_1$, $R_2$, and $R_3$ such that the operating voltage is now 3 V @ 1 A
• selected a MOSFET (STD26P3LLH6) that is rated to 20 W of power dissipation, and whose on-state characteristics are such that it would appear to be able to provide 1 A at $I_d$ for a $V_{GS}$ of 3V

I will order these components and report back, but am I missing anything? Any obvious gotchas?

simulate this circuit

• Good to see a computer scientist/roboticist get into electronics. That book is good stuff, I learned plenty of neat tricks from that. Also nice choice in online name. – KyranF Jul 4 '15 at 0:24
• low side fet and sense resistor is more robust – hassan789 Jul 4 '15 at 3:44

Common mode range of the LMP2231 on a 3.3V supply is up to 2.5V. You have 2.77V on the non-inverting input.

If you decrease R3 (to get say 2.4V) and increase R1 it might work, but the MOSFET is not guaranteed to give you even 250uA at 2.4V Vgs, so it would be a random non-design kind of working.

Your power supply voltage is too low for the opamp to be able to drive that MOSFET.

Look at the output characteristics of the NDS356:

To be able to provide 1A of current it should be driven with at least 3V of Vgs (more or less). You have very little margin in your design and any spread in the curves could make it non-working.

You could try to increase the supply voltage to 5V, since the LMP2231 allows it, and gain some headroom, but still it won't be much.

Among concerns posted in other answers, by other cool and froody people, I feel remiss if I do not point out a few other very important things.

You selected a set-point for 1.06-ish ampere with 528mV over your 500mOhm resistor. Your MOST cannot regulate currents like that. The MOSFET you use is positively tiny. It might do for 500mA, but if you want good regulation you'll have a small voltage across the MOST. At 1A even a tiny voltage would quickly get you to the 0.3W~0.5W range that SOT23 types can handle. You cannot just assume a 1A switching current limit applies in regulation set-ups.

So, since you are probably going to have to replace the MOST, because of its limited current capability at the lower gate voltage swings achievable if you stick to 3.3V, pick one that can handle the power requirement for your worst-case scenario.

The more variation in loads you have, the more variation in voltage across the MOST, the more power it will have to handle.

Then, there's the point of the load: I think the 100Ohm may be a "defaultitis" type mistake, but I should point out that with 100Ohm the maximum current would be below 30mA in a set-up like this. So if you may have no load or light load, if you do replace the op-amp you should be sure it can behave normally/safely with the full range of voltages it could see at its negative terminal. The one you have can't. It has a differential voltage limit of +/- 300mV next to the common-mode limit of 2.5V when powered by 3.3V.

The differential limit means the - input can only differ 300mV or less from the + input for the device to work properly. Unless specified somewhere abhorrent behaviour when outside of those bounds can be anything from not working to damage.