Hola, Yo en el código no veo nada que te pudiese hacer eso, sin embargo, el uso del PWM sobre la protoboard es lo que te puede estar infiriendo en errores, ya que tiene muchas capacidades parasitas, yo quitaría esos condensadres que tienes de un micro en las entradas de los switches (que addemás tienes poco filtrado, y ya es una señal buena) y metería la salida rectificada directamente, con un Pull-down y mas grande, de unos de 10 K. Prueba.