CAPITULO II. DISEÑO DEL SISTEMA DE CONTROL
2.4 ESTRATEGIA DE CONTROL
2.5.3 ARDUINO Motor Shield R3.
La tarjeta ARDUINO Motor Shield R3, mostrada en la figura 2.13., está basada en el circuito integrado L298P, que es un puente H dual para el manejo de cargas inductivas
59
como relés, solenoides, motores de corriente continua y motores a pasos, y debe ser usada en complemento a la tarjeta ARDUINO Mega 2560.
Figura 2.13. Diagrama físico de la Tarjeta ARDUINO Motor Shield R3.
Esta tarjeta ARDUINO fue seleccionada para realizar el control de ambos motores, debido a las características técnicas mencionadas en la Tabla 2.11., así como su práctica compatibilidad con la Tarjeta ARDUINO Mega 2560, y la sencilla conexión con esta.
Tabla 2.11. Especificaciones técnicas de la tarjeta ARDUINO Motor Shield [21].
Voltaje de operación 5 a 12 volts Controlador de motor L298P Corriente máxima 2A por canal Detección de corriente 1065 V/A Función de freno y rotor Libres
60
Permite controlar 2 motores de corriente continua; control de velocidad y dirección de cada uno en forma independiente, cuenta con dos canales separados, A y B, cada uno de los cuales usa 4 pines para elegir la dirección de rotación, variar la velocidad, freno rápido o sensor de la corriente que está fluyendo a través del motor como se observa en la tabla 2.12.
Tabla 2.12. Distribución de los pines para la conexión de dos motores.
Función Pines canal A Pines canal B
Dirección D12 D13
PWM D3 D11
Freno D9 D8
Detección de corriente A0 A1
2.5.5 Programación
La programación del control de motores se lleva a cabo, como se mencionó anteriormente, mediante el software de programación grafica LabVIEW. Esta programación se logra a través de la interconexión de bloques funcionales, los cuales serán descritos para su mejor comprensión en la tabla 3.4. A continuación se realiza una descripción de la secuencia grafica utilizada para la programación del control de velocidad y sentido de giro del motor de acimut.
Para comenzar es necesario inicializar las variables de la tarjeta que se está utilizando, en este caso es una tarjeta Arduino Mega 2560 para el procesamiento y una Arduino Motor Shield para el control de motores.
61
Figura 2.14. Inicialización de la tarjeta Arduino Mega 2560
Se inicializan 3 bloques por cada motor, 2 de escritura digital y 1 de escritura PWM.
Dentro de un “while loop” se realiza la conexión de los bloques, teniendo 2 variables
locales que están dadas desde el programa de control, la primera es el valor de la acción de control y la segunda el error. La señal del error es utilizada como la referencia, para decidir el sentido de giro del motor, esto se hace con tres comparadores, uno es utilizado para el frenado del motor si el error es igual a 0 este nos entrega una salida verdadera, esta salida entra a una función llamada “bolean
to(0,1)” , la cual pone 1 en el bloque de escritura digital que cuenta con un pin preestablecido. Los 2 comparadores restantes son para seleccionar el sentido de giro del motor, si el error es menor a 0 uno de los 2 comparadores nos entrega una salida verdadera, esta salida entra a un selector que tiene conectadas 2 entradas una, la acción de control y la segunda una constante que en este caso es 0, si el valor proveniente del comparador es 1 o verdadera, el selector deja pasar el valor de la acción de control y si la entrada del selector es falsa o 0, el valor que deja pasar es una constante que en este caso es 0. De la misma manera funciona si el error es mayor a cero en cuanto al selector, uno de los 2 comparadores envía la señal a un bloque de escritura digital, el cual escribe en el pin designado para el sentido de giro del motor según sea el canal elegido, activa el sentido dependiendo de qué estado tenga en la entrada.
62
Figura 2.15. Utilización de comparadores para el modo automático.
La salida de los selectores entra a un bloque llamado “in range”, esto con la finalidad
de mantener la salida en un rango y no exceder y por consecuencia provocar un error en la tarjeta. La salida de esos bloques se conecta con un sumador para tener una entrada al bloque PWM.
Figura 2.16. Utilización del Bloque “in Range”.
Al sistema anterior se le agrega un botón deslizable booleano para hacer la selección del tipo de control, que puede ser manual o automático. Para el control manual se
cuenta con 4 botones de tipo “Push Botton”; 2 botones de los cuales son para el
movimiento en acimut y 2 para el movimiento en elevación. Para realizar este cambio de manual a automático se utilizan selectores, uno de ellos para seleccionar si se trabaja con la acción de control o con un valor preestablecido que es la velocidad del
63
motor. Cuando el botón deslizable esta en nivel alto el selector deja pasar el valor que fue introducido como una constante. EL segundo selector se utiliza en el bloque que escribe en el pin para cambiar el sentido de giro del motor, si el botón deslizable está
en nivel alto el selector deja pasar el valor proveniente de un “Push Botton” que solo puede tomar valor de 0 o 1, si el “Push Botton” es presionado el motor realiza un
movimiento hacia un sentido, si ninguno de los “Push Botton” están presionados, el
motor se detiene, debido a la condición que existe, en que si ambos botones se
encuentran en un estado bajo, la salida va a una compuerta “and” negada para que el
valor sea alto y pueda detener el motor. En el tercer selector, si el botón selector del tipo de control tiene un nivel alto, deja pasar el nivel alto que proviene de la compuerta
“and” negada, y escribe en el pin que utilizado para realizar el frenado de los motores.
Figura 2.17. Programación para el control de velocidad y sentido de giro del Motor de Acimut.
Para el Motor de elevación la programación cambia en la designación de pines de escritura digital y PWM. La programación de ambos motores se anexa en el apéndice A para mejor comprensión.
64