Electronic – Current control circuit doesn’t work in practice

mosfet

A control circuit works in simulation, but don't in real. What is my mistake?
enter image description here

enter image description here

Current through R5 or Mosfet proportional with V1 voltage in linear region. But in practice even when V1=0, the current through R5 is more than 1A !!. Power supply limit the current consumption and the mosfet very hot.

BestRegards

EDIT

I changed the circuit after comments.
enter image description here

This works similar to simulations. But MOSFET very hot even 0.5A through R5. I can't give exact temperature degree. But it was very hot.
Is this circuit structure ideal? Should I continue here?
I can connect heatsink if this circuit is best.

Best Answer

The 741 output cannot swing to the negative supply rail, so you'll always get a fair bit of current through the MOSFET (depending on the threshold voltage of the MOSFET you happen to have).

The inputs cannot respond down to the negative rail, and you should take the feedback from the 3.7\$\Omega\$ current sense resistor, so you're feeding back a voltage proportional to the current. You may not need R2, it may be better to just reduce R5 proportionally.

Using an LM358 or similar single-supply op-amp rather than a 741 and changing the circuit will help a lot, though there is still the possibility of oscillation (compensation for which has been dealt with frequently here).

It's a linear circuit and power dissipation is maximized when it's operating into a shorted load (load in this case is between +12 and the drain of the MOSFET). So you will get power dissipation in the MOSFET plus resistor of Iout * 12V.

If you want a current source with the load grounded, you'll have to use a more complex circuit that shifts the ground-referenced input voltage up to the 12V rail.

Note: There may be something else wrong with your circuit. Measure the Vgs and if it is less than about 3V you should not be getting 1A through the MOSFET. Maybe a connection issue or something else.