En primer lugar, algunas premisas del diseño están relacionadas con la alta velocidad necesaria (el máximo posible) y el punto de parada preciso. El motor se alimenta a un máximo de 40 V y consume a un funcionamiento normal de 1,5 A. Debido a esto, confié en el L6203 , que al principio parece una buena opción.
La máquina funciona en un ciclo que avanza y luego retrocede. Debe hacerse en el menor tiempo posible a menos que el usuario seleccione una velocidad más baja. También tiene que detenerse cada vez en aproximadamente el mismo punto (elegido por el usuario). Algunas pruebas nos mostraron la gran variación a la velocidad en diferentes condiciones, como la temperatura, el nivel de voltaje en la red o las diferencias mecánicas. Debido a los requisitos de velocidad y porque no hay un excedente aceptable (la máquina no puede retroceder mientras se ejecuta un comando de avance), he descartado un implemento de un PID u otro control simple. La máquina conoce el punto de parada por un codificador óptico y se está comportando bien (el problema es realmente las variaciones en la velocidad).
Incluso si no se detiene como se desea, se valida la robustez. La máquina se está probando en varias semanas, a veces las 24 horas del día y no mostró ningún problema preocupante, incluso sin ningún ventilador conectado al L6203. Ha funcionado en una rutina continua desde el viernes hasta casi ahora.
Creo que la forma más fácil de detenerlo es con un freno electrónico. Pero el L6203 aparentemente no permite esta función (ya busqué Appnotes, releí DS y busqué en un montón de sitios). Más allá de esto, creo que el L6203 tiene algunos problemas con respecto a dI / dT, porque al inicio del proyecto se rompieron algunos puentes, resueltos por un mayor retraso entre la inversión de dirección.
Entonces, para frenarlo, he creado un PCB auxiliar y he hecho modificaciones menores en el código de la unidad de usuario. La PCB consiste en un TRIAC que se dispara cuando A y B son 0 (NOR transistorizado) cerrando un bucle y frenando el motor. Para evitar daños en el L6203, he programado enviar 0 a su puerto de habilitación justo antes de enviar 0 a ambas direcciones (así que estoy seguro de que el L6203 está apagado cuando el motor está frenando). Además, para evitar volver a encenderlo mientras el motor está en cortocircuito, tiene un retraso entre el disparo en alguna dirección y habilita el L6203 (así que estoy seguro de que el freno se corta antes de que el L6203 se vuelva a habilitar).
El amortiguador, aunque retrasa un poco el freno, se agregó para limitar el dI / dT (una especificación crítica en triacs).
Mi último L6203 se ha quemado por un error durante la prueba con el tablero de frenos. Creo que debido a un error al conectar el comando (A y B). Así que no puedo probarlo antes del jueves.
Las preguntas son:
-
¿El TRIAC (precisamente el BT139-800E) proporciona una operación confiable en este diseño?
-
¿Existe alguna forma más sencilla (y más económica) de frenar el motor mientras se usa el L6203?
-
¿Hay algún otro problema con todo lo que he descrito anteriormente?
Si es necesario, también puedo cargar el esquema completo o el código.