Este semestre estoy cursando la materia de control digital en la universidad, uno de las practicas planteadas fue aplicar un control PID sobre un motor DC. La idea es medir la velocidad del motor y controlarla usando una señal de PWM, el programa de control PID correrá en LabVIEW y las conexiones con el exterior serán manejadas con un microcontrolador PIC18F2550, en esta publicación comentare todo lo referente al proceso de medición de la velocidad y a el manejo de la potencia del motor.
Se utiliza un motor DC de 12000rpm a 24V y 1A (sin carga). Para la practica se alimenta con 15V, voltaje suficiente para que su velocidad máxima sea de unas 7500rpm. Al eje del motor se le adapta un encoder óptico de 40 pasos, la lectura la hace un sensor infrarrojo GP3S62 (herradura), en este caso cada vez que detecta una ranura en el encoder genera un voltaje alto, este voltaje es leído por una entrada del microcontrolador que almacena el numero de pulsos en determinado tiempo y genera la equivalencia en rpm para luego enviarlo al programa de LabVIEW. Para la captura de los pulsos se utiliza el Timer1 y su entrada externa contando pulsos cada 200ms.
En el proceso de lectura se presenta un problema de voltajes ya que en algunos momentos el voltaje alto generado por el sensor es inferior al voltaje que puede leer el microcontrolador y considerar como alto, para solucionar esto se utiliza un disparador smith trigger (74LS14), el funcionamiento de este integrado es fácil de explicar: si el voltaje de entrada es inferior a 3V, el voltaje de salida será de 0V y si el voltaje de entrada es mayor a 3V el voltaje de salida sera de 5V.
Luego de que se procesa el dato de la velocidad del motor y se calcula la magnitud de la salida de el PID en LabVIEW, este dato es enviado al microcontrolador en donde se ve reflejado variando el duty del PWM generado por el microcontrolador. Como se menciono antes el motor se alimenta con 15V así que se usa un MOSFET (IRF540) para manejar este voltaje, para la activación del MOSFET se utiliza un juego de transistores NPN (2N3904) y PNP (2N3906), ademas se aísla este circuito del microcontrolador con un optoacoplador (4N35) ya que su salida es a transistor. Ademas se usa un diodo se marcha libre en paralelo con el motor.
El valor de R3 es de 330Ω, el de R4 y R5 es de 1KΩ y el de R6 debe ser inferior a 50Ω.
En la publicación Control PID para motor DC (Programación) esta disponible el código usado en el microcontrolador y los VIs de LabVIEW.
Si tienes alguna inquietud no dudes en comentar.
Se utiliza un motor DC de 12000rpm a 24V y 1A (sin carga). Para la practica se alimenta con 15V, voltaje suficiente para que su velocidad máxima sea de unas 7500rpm. Al eje del motor se le adapta un encoder óptico de 40 pasos, la lectura la hace un sensor infrarrojo GP3S62 (herradura), en este caso cada vez que detecta una ranura en el encoder genera un voltaje alto, este voltaje es leído por una entrada del microcontrolador que almacena el numero de pulsos en determinado tiempo y genera la equivalencia en rpm para luego enviarlo al programa de LabVIEW. Para la captura de los pulsos se utiliza el Timer1 y su entrada externa contando pulsos cada 200ms.
En el proceso de lectura se presenta un problema de voltajes ya que en algunos momentos el voltaje alto generado por el sensor es inferior al voltaje que puede leer el microcontrolador y considerar como alto, para solucionar esto se utiliza un disparador smith trigger (74LS14), el funcionamiento de este integrado es fácil de explicar: si el voltaje de entrada es inferior a 3V, el voltaje de salida será de 0V y si el voltaje de entrada es mayor a 3V el voltaje de salida sera de 5V.
Luego de que se procesa el dato de la velocidad del motor y se calcula la magnitud de la salida de el PID en LabVIEW, este dato es enviado al microcontrolador en donde se ve reflejado variando el duty del PWM generado por el microcontrolador. Como se menciono antes el motor se alimenta con 15V así que se usa un MOSFET (IRF540) para manejar este voltaje, para la activación del MOSFET se utiliza un juego de transistores NPN (2N3904) y PNP (2N3906), ademas se aísla este circuito del microcontrolador con un optoacoplador (4N35) ya que su salida es a transistor. Ademas se usa un diodo se marcha libre en paralelo con el motor.
El valor de R3 es de 330Ω, el de R4 y R5 es de 1KΩ y el de R6 debe ser inferior a 50Ω.
En la publicación Control PID para motor DC (Programación) esta disponible el código usado en el microcontrolador y los VIs de LabVIEW.
Si tienes alguna inquietud no dudes en comentar.