I designed a simple adjustable constant current source that uses high side sensing but I can't seem to figure out where the oscillations on my output are coming from. The circuit is shown in a picture below and is designed to have a maximum current output of 2A. In simulation everything works as intended but when I populated my PCB I get really bad oscillations.
The potentiometer on the left is a 10k pot. The P-Channel MOSFET that is doing the switching is an FQP17P06 with a large heat sink and the two opamps are an LM4562MAX being driven with 12V on the positive rail and GND connected to the negative rail.
The output of my real circuit tracks the potentiometer set point roughly but oscillates wildly sometimes +-1.5A. The upper limit is also off. When I turn the potentiometer all the way up as shown in the picture my max current measured with a scope and a power supply is somewhere around 2.8-3A which is a lot higher than my intended 2A and is blowing my 2.5A fuse not shown.
Did I do something wrong by using the FET driving OpAmp in open loop mode or are the OpAmps powered ineffectively so they are behaving erratically near the rails?
EDIT (2019-June-11): I attempted to recreate the oscillations by making the circuit components more realistic in both Falstad and then in LTSpice and both refused to simulate or locked up. Turns out my computer was on the fritz and I had to borrow a different one to get a good simulation.
Adding Cgd to the FET and updating the beta value to 1/Rdson as suggested did cause the output to oscillate. I was then able to get it to stabilize using the recommended answer of slowing down the FET driving opamp with an integrator.