martes, 7 de junio de 2011

Control de motores DC con microcontroladores PIC

NOTA: este articulo ha sido extraído del original proveniente del sitio web varper-tech.com en la dirección http://varper-tech.com/articulo.php?idart=77Allí podrás conseguir informacion mas detallada sobre la descarga de los archivos de código del microcontrolador y los archivos de simulación. 

Resumen

En este articulo se dará a conocer las formas de hacer correcciones en la velocidad de un motor DC con escobillas haciendo uso de un microcontrolador PIC18F4550. Estos microcontroladores nos brindan una herramienta muy util a la hora de controlar la corriente en un motor DC, un modulo CCP/PWM; este modulo es el que nos trae la posibilidad de generar una señal manipulable para asi controlar la corriente promedio que circula por los devanados del motor. 
No obstante esta no es la unica aplicacion que tiene este modulo, tambien se puede utilizar para sistemas de control automatico, en los que se requiera variar la intensidad de un campo magnetico, la temperatura, para el control de servomotores. Existe una gama muy amplia de posibilidades para este modulo, de las cuales estaremos describiendo una de ellas en este articulo, el control de motores DC con escobillas.

Materiales

  • Microcontrolador PIC18F4550
  • 1 CI L298
  • Fuente de poder de 12V y 5V
  • 4 Pulsadores
  • Cristal de 4 MHz
  • 2 Condensadores de 470nF
  • 4 Resistencias de 10K
  • 4 Diodos 1N4007
  • 1 Bornera
  • Motor DC con escobillas con un consumo menor a 1,5 A
  • Fuente DC de 12 voltios

Herramientas utilizadas

Para el desarrollo del sistema se utilizaron las siguientes herramientas de desarrollo:
  • MPLAB C18.
  • Proteus 7.4 SP3

Descripción

El circuito basicamente esta constituido por un "cerebro", el microcontrolador PIC18F4550, es este quien controla la velocidad del motor mediante una señal PWM, la cual es generada por un modulo independiente. Es por ello que a continuación daremos una explicación en principio del circuito y posteriormente el diagrama de flujo simplificado para un completo entendimiento del software del microcontrolador.

Diagrama circuital

Circuito para el control de un motor DC
Gráfico 1. Circuito para el control de un motor DC.
A este punto tenemos detalles de como nos quedara el circuito final, como podemos notar, el CI L298 es el que se encarga del control del paso de la corriente, este tiene internamente dos puentes H, de los cuales solo utilizaremos uno. Los diodos de protección son muy necesarios porque recordemos que estamos trabajando con cargas inductivas los cuales pueden producir picos de corriente muy altos y pueden ocasionar daños al CI L298 o incluso a nuestro microcontrolador, esto sin contar algunos problemas de reset ocasionados por estos picos de corriente. Aun así los 4 diodos únicamente no son suficiente, para completar la estabilización de la alimentación del microcontrolador es necesario la puesta de 2 filtros bypass, uno para cada fuente de alimentación. Se probo con filtros cerámicos de 470nF y funcionaron excelente. Otros valores mas bajos pueden ocasionar una respuesta indeseada y permitir resets en el microcontrolador o incluso un daño permanente.
Por otro lado, tenemos los pulsadores que tienen cuatro funciones básicas: aumentar, disminuir, apagar y cambiar el sentido de giro del motor. Todos los pines a los cuales irán conectados estos pulsadores deben estar configurados como entradas y debemos recordar colocar las 4 resistencias de 10K a tierra para evitar entradas al aire que ocasionen un comportamiento indeseado.

Configuración del L298

El CI L298 forma parte importante del sistema ya que permite la entrega de altas corrientes al circuito, sin embargo, la configuración de este debe ser preparada cuidadosamente. Cabe destacar que en este caso estamos trabajando con cargas inductivas, por lo que la corriente no esta en fase con el voltaje y esto genera sobreimpulsos cuando trabajamos con ondas cuadradas. Es de vital importancia la colocación de los condensadores ByPass tanto para la alimentación del microcontrolador como para la alimentación del L298, si no colocasen estos condensadores, lo mas probable es que el microcontrolador se resetearía e incluso podría causar daños al programa, o en el peor de los casos, dañar el microcontrolador. 
Notese que en la salida del L298 se deben colocar 4 diodos como se muestra en el circuito, esto es para evitar picos de corriente que pueden dañar los transistores del L298 o dañar el microcontrolador, los 4 son necesarios, y la demostración a esto se puede observar en el gráfico siguiente:
Ciclo de onda de la señal con diodos
Gráfico 3. Ciclo de onda de la señal con diodos.
Ciclo de onda de la señal sin diodos
Gráfico 4. Ciclo de onda de la señal sin diodos. 

En el gráfico 3 se puede observar una limpia señal cuadrada muestreada en el anodo del diodo D1. Observen unos pequeños picos que intentan exceder los niveles de voltaje del PWM, esto se debe a la acción correctiva de los diodos puesto que eso que se ve alli no es mas que el sobreimpulso (recortado) generado por la descarga de la bobina del motor durante el cambio de nivel de voltaje. De no existir diodos protectores sucederia lo visto en el gráfico 4. En este gráfico observamos que el sobreimpulso que se genera cuando el nivel de voltaje llega a los casi 40 voltios sigue su camino hasta que es amortiguado por los transistores internos del L298, observese que el nivel máximo del sobreimpulso es de aproximadamente 50V que es lo que soporta el L298. 
Por otro lado, en el sobreimpulso inferior se nota un subamortiguamiento de la señal muy pronunciado debido a la respuesta de la bobina del motor al descargarse. Estos sobreimpulsos son particularmente dañinos ya que pueden interferir en el buen funcionamiento del microcontrolador u otro dispositivo analógico o digital, produciendo fallos en las lecturas, alteración en el contador de programa o incluso en los datos de la memoria, reseteo del microcontrolador o en el peor de los casos podría causar el daño permanente del mismo.

Algunos cambios

El circuito constituido por el L298 puede ser ligeramente modificado para realizar algunas pruebas y mejoras; las terminales 1 y 15 están puestas directamente a tierra ya que no se necesita un sistema de sensado de corriente por los momentos, sin embargo, es posible que ud lo desee. Estos sistemas de sensado pueden ser constituidos simplemente por una resistencia (de muy bajo valor) colocada en lugar de un cable, o en dado caso, si se requiere un mínimo de perdidas, se podría utilizar directamente un cable con un circuito amplificador para obtener una señal a partir de estas mediciones y así realizar cálculos como, por ejemplo, la corriente promedio que circula por el motor, implementar algún tipo de controlador o regulador de corriente para evitar sobrecalentamiento, existen muchas alternativas con respecto a esto. En los articulos relacionados podra conseguir algunos temas sobre el sensado de señales, que es muy util para este caso.

Diagrama de flujo

El diagrama de flujo es una herramienta importantisima a la hora de describir el funcionamiento basico del codigo del programa, es una forma muy entendible y se las mostrare en las siguientes lineas. Lo que se pretende es dar una explicacion simplificada y generalizada acerca del funcionamiento del firmware del microcontrolador. 
Diagrama de flujo del firmware
Gráfico 3. Diagrama de flujo del firmware del microcontrolador.
En este sencillo diagrama tenemos un proceso en el cual primeramente se deben iniciar los puertos como debería ser para todo inicio de un microcontrolador, ademas tenemos la configuración inicial del modulo PWM, es de recordar que el modulo PWM del PIC18F4550 utiliza el timer 2 para generar su señal. Posteriormente se inicializan los modulos PWM1 y PWM2 para posteriormente ser utilizados.
Por otro lado tenemos la deteccion de cada uno de los pulsadores correspondientes, los cuales primeramente deberan hacer un recorrido por un subproceso para la omision de rebotes (mediante retardos), luego para cada caso tendremos las siguientes acciones:
  1. Boton +: En este caso se verifica que no se haya excedido el limite permitido por el ciclo util del microcontrolador (1023) luego se verifica la direccion actual para determinar a cual de los dos PWMs se les asignara el valor del ciclo util.
  2. Boton -: En este caso tenemos el mismo procedimiento con la unica diferencia de que en ves de realizar una validacion en un limite superior para el valor del ciclo util, la haremos por el limite inferior, es decir, 0. El resto del proceso es el mismo que para el anterior.
  3. Switch: Para este boton hacemos una verificacion del sentido de giro actual y posteriormente tenemos que hacer el cambio del mismo para que la proxima ves que se vuelva a presionar el sentido estara cambiado. Seguidamente, se alternan los valores de los PWMs.
  4. ON: En este caso tenemos que verificar la salida Enable (entrada 6 del L298) para alternar su valor; en caso de que esta banderilla este activada, se desactiva, y en caso contrario, se activa y se asignan los valores correspondientes a cada uno de los PWMs dependiendo del sentido de giro.
Una rutina que no se comento en la lista anterior pero que no deja de ser importante en el manejo de pulsadores es el proceso para verificar el levantamiento del pulsador, el cual solamente consta de un bucle que durara hasta que el usuario suelte el botón pulsado. Esto se hace para evitar que una ves pasado el tiempo de detección de rebotes (20ms aprox.) el ciclo se repita violentamente mientras tengamos el pulsador presionado, lo que ocasionaría un comportamiento indeseado en el sistema completo.

No hay comentarios:

Publicar un comentario