Current regulator with controller?
It will basically work, but there are gotcha's:


the DiffAmp, A/D microcontroller, PWM, low-pass-filter and buffer are all in the control loop, so they limit the response time, and you might need to ananlyse the loop behaviour to avoid oscillation
to turn the FET on, you will need a voltage much higher than the 3.3V output of the PWM/low-pass/buffer. You might consider a BJT instead.
the diffAmp must handle 0..20V inputs with a 3.3V supply. Might be tricky. If you can use a ground-based refernce (floating ground for your load) this will make things much easier.
5A with a 2Ohm load leaves 10V* 5A = 50W to burn in the transistor. Will keep you warm. Note that when the load can go to 0Ohm the transistor will dissipate 100W.