Vas a terminar haciendo algo parecido a lo que hice en mí fuente (con respecto al control de corriente).
Podrías simplicar 2 operacionales, el B y el C, haciendo directamente esto:
Del operacional D (el que usas como restador), lo conectás a un ADC, en base a un valor que asignás el límite de corriente (ya sea por USB/serial o algún control externo), hacés la comparación en el soft y salís con un puerto digital que maneja a Q3.
Te evitás:
- Manejar un 2do PWM
- Filtrar ese PWM
- Amplificar la continua de ese PWM
- Comparar la salida del restador con la continua del PWM
Son varias cosas que te evitás. Ahora si no tenés ADC, pero si comparadores, podés hacer exactamente lo mismo y mejor usando su interrupción.
Incluso, hasta Q3 te podés ahorrar, si detectás que sobrepasaste la corriente, directamente controlás que la tensión de salida sea 0v mediante la salida del PWM.