Hola Marvic,
Yo estoy trabajando con este tipo de aplicación mediante PID, y la verdad que es preferible a la hora de manejar el duty cicle con el PWM, vamos diría que tendría que ser así. Si necesitas el código PID que se estoy usando, deberas definir muchas más variables para poder controlar tal fuente. Estos valores son:
Kp, Ki, Kd, Ti, Td, K, T, set_point, process_value y bang_gap
Un saludo,