UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. VIII. CONTROL USANDO SIMULINK Y ARDUINO Los entornos de Diseño de Sistemas de Control Asistido por Ordenador (CACSD) están experimentando notables cambios durante los últimos años. Estos avances afectan a las distintas fases de diseño de los sistemas de control como pueden ser el modelado, la identificación y la validación de estos modelos, así como a la posterior fase de diseño del controlador propiamente dicho. Figura No. 1 Este trabajo describe una herramienta cuyo principal objetivo consiste en la integración en un único entorno de un conjunto de funciones que permiten el control por realimentación de estados para sistemas SISO. Es decir, cubren la última fase de las comentadas anteriormente, y supone que el modelo del sistema ya ha sido obtenido por algún método. Existen numerosas y bien conocidas razones para utilizar este tipo de control, como pueden ser su implantación industrial, robustez, facilidad de empleo, etc. 99 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Ahora utilizaremos el microcontrolador Arduino y Matlab (Simulink) para hacer un control real del sistema. EL MICROCONTROLADOR ARDUINO En estas clases siguientes intentaremos una forma de acercarnos al diseño y desarrollo de proyectos basados en Arduino. Dado que tenemos los conocimientos adecuados programación, para hacerlo fácil, en electrónica y he pensado en que nos centremos en los aspectos más básicos de las características y la programación de Arduino. Otro de los objetivos de estas guías es organizar un poco la gran cantidad de información que sobre este tema existente en la red. Para ello casi toda la información se ha obtenido a través de la fuente http://www.arduino.cc o de manuales basados en ella pero algo más estructurados. Por último, las clases están pensadas como soporte para la realización de nuestro proyecto final que es el control de un sistema real. Qué es ARDUINO? Arduino es una plataforma de prototipos electrónica de código abierto (open- source) basada en hardware y software flexibles y fáciles de usar. Está pensado para artistas, diseñadores, como hobby y para cualquiera interesado en crear objetos o entornos interactivos. 100 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Arduino puede sentir el entorno mediante la recepción de entradas desde una variedad de sensores y puede afectar a su alrededor mediante el control de luces, motores y otros artefactos. El microcontrolador de la placa se programa usando el Arduino Programming Language (basado en Wiring1) y el Arduino Development Environment (basado en Processing2). Los proyectos de Arduino pueden ser autónomos o se pueden comunicar con software en ejecución en un ordenador, en nuestro caso Matlab y Simulink. Existen muchos otros microcontroladores y además plataformas microcontroladoras disponibles para computación física. Parallax Basic Stamp, Netmedia's BX-24, Phidgets, MIT's Handyboard, y muchas otras ofertas de funcionalidad similar. Todas estas herramientas toman los desordenados detalles de la programación de microcontrolador y la encierran en un paquete fácil de usar. Arduino también simplifica el proceso de trabajo con microcontroladores, pero ofrece algunas ventajas para profesores, estudiantes y aficionados interesados sobre otros sistemas: Barato Multiplataforma Entorno de programación simple y claro Código abierto y software extensible Código abierto y hardware extensible Hay múltiples versiones de la placa Arduino. La mayoría usan el ATmega168 de Atmel, mientras que las placas más antiguas usan el 101 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. ATmega8. En nuestro caso nos dedicaremos exclusivamente al trabajo con Arduino Uno. Arduino Uno es una tarjeta basada en el microcontrolador ATmega328 (datasheet). Tiene 14 entradas/salidas digitales, de las cuales 6 pueden ser utilizadas como salidas PWM, 6 entradas análogas, un cristal oscilador de 16Mhz, conexión USB, conector de alimentación, conector ICSP y botón de reset. Contiene todo lo necesario para hacer funcionar al microcontrolador, simplemente se conecta al PC con un cable USB o se alimenta con una fuente AC/DC o una batería de 9VDC. La nueva Arduino UNO. Adicional a todas las características de su predecesora Arduino Duemilanove, UNO ahora utiliza un microcontrolador ATMega8U2 en vez del chip FTDI. Esto permite mayores velocidades de transmisión por su puerto USB y no requiere drivers para Linux o MAC (archivo inf es necesario para Windows) además ahora cuenta con la capacidad de ser reconocido por el PC como un teclado, mouse, joystick, etc. INSTALACION DEL SOFTWARE ARDUINO Esta sección explica como instalar el software Arduino en un computador que ejecute Windows. Estos son los pasos para instalar los controladores o drivers de Arduino UNO. Lo primero que debemos hacer es descargar el entorno de desarrollo y los drivers del Arduino, lo puedes bajar de la página http://arduino.cc/es/Main/Software. 102 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Conecta la board y espera a que windows inicie el proceso de instalación, después de unos minutos este fallará. Haz Click en Menu Inicio, posiciona el mouse en equipo y presiona click derecho, eligiendo la opción de propiedades. Ahora elije la opción de administrador de dispositivos, mira debajo de los puertos (COM & LPT) o en otros dispositivos, debe aparecer Arduino UNO. Da Click derecho en "Arduino UNO " y elije la opción de actualizar software del controlador. Después elije la opción buscar software de controlador en el equipo y selecciona la carpeta donde descargaste Arduino UNO o superior. Busca la carpeta drivers y selecciónala (sólo la carpeta drivers no la FTDI QUE SE ENCUENTRA INTERNA), sigue la instalación de manera normal. Ahora ya está listo el PC para trabajar con la board Arduino UNO. INICIANDONOS EN ARDUINO: Esquema: En la figura, podemos observar resaltadas las partes que es necesario conocer para el correcto conexionado de la tarjeta. 103 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. 1. Línea de comunicaciones pines 0 y 1 no se usan. Entradas/salidas digitales pines del 2 al 13. 2. Botón “reset” de la tarjeta (Permite el re-inicio de la misma). 3. Línea de Entradas analógicas (De la A0 a la A5). 4. Línea de alimentación. En estos pines podemos encontrar Vin, GND, 5V, 3.3V y reset. 5. Plug de alimentación de la tarjeta (Para voltajes entre 7 a 12 volts máximo). 6. Regulador de voltaje. 7. Conector USB. Una vez instalado el paquete programa con sus drivers, en Windows 7, vamos a ejecutar la aplicación y después seleccionaremos el tipo de placa que tenemos y el puerto COM por el que se van a enviar los datos, para ello hacemos doble click sobre el fichero con nombre arduino y se abrirá la aplicación. Nos encontraremos con una ventana como la mostrada en la figura siguiente. Como se puede ver, en la parte superior hay una serie de menús, si pinchamos en tools podemos ver que tenemos disponibles las opciones "Board" y "Serial Port", en board seleccionamos nuestro tipo de placa y en serial port el puerto de comunicaciones donde 104 se UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. encuentra nuestro Arduino, puedes comprobar cómo se ha instalado si buscas en el Administrador de Dispositivos de Windows en la pestaña "Puertos (COM yLPT)" el dispositivo con nombre "USB Serial Port (COMx)". Ahora nos podríamos preguntar el por qué de que se llame "USB serial Port" y por qué transferir archivos por puerto COM si nuestro Arduino está conectado por USB, la respuesta es fácil, el Arduino en realidad se comunica por puerto COM y en su placa lo que tiene es un convertidor de puerto Serie a USB para que así podamos usarlo por USB que es mucho más cómodo y está más extendido que el COM. Una vez que tenemos nuestro Arduino conectado y configurado podemos cargar un programa de ejemplo para comprobar su funcionamiento, en el paquete que nos hemos descargado tenemos una serie de ejemplo que podemos subir. Para esto pulsamos en el botón File -> Examples -> 1.Basics -> Blink con esto cargamos un pequeño código que hará que un led conectado a la salida 13 se encienda y se apague con una frecuencia de un segundo. Ejecute el programa con el diodo ya conectado como se muestra en la figura. 105 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Como eso es muy sencillo y poco atractivo, lo podemos modificar ligeramente para que cuando el led del terminal 13 este encendido, el del terminal 12 este apagado y justo lo contrario así conseguimos que parpadee uno si y uno no, copie, analice y ejecute el código siguiente: void setup() { pinMode(13, OUTPUT); // Inicializa pin 13 como salida pinMode(12, OUTPUT); // Inicializa pin 12 como salida } void loop() { digitalWrite(13, HIGH); // LED on digitalWrite(12, LOW); // LED off delay(1000); // Tiempo de espera digitalWrite(13, LOW); // LED off digitalWrite(12, HIGH); // LED on delay(1000); // Tiempo de espera } Realizando algunos arreglos en las líneas podemos hacer un semáforo o jugar con una combinación de LED´s. Intente montando un circuito como el de la figura. 106 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. TRABAJANDO CON EL HARDWARE DE ARDUINO En este tema les muestro cómo añadir soporte hardware Arduino con el producto Simulink de Matlab. Una vez completado este proceso, se pueden ejecutar modelos de Simulink en su hardware Arduino. El proceso de instalación agrega los siguientes elementos a su computador. Herramientas de desarrollo de software, tales como el software de Arduino. Una librería de bloques de Simulink para configurar y acceder a los sensores, actuadores, y a las interfaces de comunicación de Arduino. Demos para empezar a aprender acerca de las características específicas de Simulink y Arduino. Para instalar Arduino siga los siguientes pasos: (debe estar conectado a internet) Abra en Simulink un documento nuevo. Selecciones Tools, y luego Run on Target Hardware > Install/Update Support Package. La velocidad de instalación depende de su conexión a internet. Después de unos segundos se le presenta: 107 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Seleccione internet y presione siguiente. Ahora se presenta: Seleccione la tarjeta a instalar, en nuestro caso Arduino Uno y presione siguiente. Ahora tenemos: 108 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Al presionar Install se presenta un displays de carga de Arduino. Después de una espera aparecerá Presiono Finish y listo. Ya podemos usar Arduino. 109 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. En las librerías de Simulink debe aparecer un nuevo menú de bloques con el nombre Simulink Support Package for Arduino Hardware. Para instalar las otras librerías, le solicito que descarge los programas ArduinoIO y Arduino_Simulink de la página www.javalmu.wikispaces.com y los instale en una carpeta ubicada en c: con los nombres ArduinoIO y arduino_simulink repectivamente. Abrimos Matlab y en el promt escribimos: >> cd c:\arduino_simulink >>addpath(fullfile(pwd,'arduino'),fullfile(pwd,'blocks'),fullfile(pwd,'d emos')) >>savepath Las instrucciones anteriores son para cargar a simulink el Arduino Target y para cargar el Arduino IO Library escribimos >> cd c:\arduinoIO >> addpath(fullfile(pwd,'examples'),fullfile(pwd,'simulink')) >>savepath Cierre Matlab y vuélvalo a abrir. Al abrir SIMULINK deben aparecer en las librerías: Arduino IO Library 110 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Arduino Target Simulink Support Package for Arduino Hardware ARDUINO COMO GENERADOR DE DATOS DESDE SIMULINK Ahora solamente queda conectar la tarjeta Arduino UNO, como si fuera una tarjeta de interface o de transferencia de datos, con MATLAB, sigamos los siguientes pasos: 1. Asumiendo que ya tiene instalado el IDE ARDUINO, abra desde este entorno, el archivo “adiosrv.pde” que está dentro de la carpeta “adiosrv”, que a su vez está dentro de la carpeta “pde” , una de las que se descomprimió. 2. Cargue en la tarjeta, este programa. Este sketch, contiene el código necesario para que la tarjeta Arduino “escuche” los comandos ejecutados desde Matlab, ejecute instrucciones, interactúe con dispositivos conectados a la tarjeta y transfiera datos desde sensores y dispositivos, hacia Matlab. 3. Una vez cargado el programa en la tarjeta Arduino, es recomendable cerrar el IDE ARDUINO, para que Matlab pueda acceder al puerto serial que se abre cuando se conecta la tarjeta. Bien, ahora realicemos una práctica en la cual deseamos enviar un escalón de 1 voltio a través del pin 9 de la tarjeta Arduino. Montemos en Simulink los siguientes bloques: 111 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Los bloques Arduino IO setup y Real-Time Pacer deben presentarse siempre porque son los que permiten direccionamiento con la tarjeta y el manejo en tiempo real. Note que el bloque Arduino IO debe tener el puerto al cual esta asignada la tarjeta. Al escalón se le asigna una ganancia 55 para que se pueda generar 1 voltio a la salida del pin 9. Coloque un LED entre el pin 9 y tierra y ejecute el programa. Usted puede manejar el tiempo del escalón. 112 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. ARDUINO COMO GENERADOR DE DATOS HACIA SIMULINK Uno de los ejemplos más básicos consiste en leer datos de un sensor conectado al Arduino y transmitirlos al PC mediante comunicación serie y visualizarlo en el osciloscopio de Simulink. El objetivo será pues leer una señal analógica de dos (extensible fácilmente a más) sensores (en este caso potenciómetros) y transmitirla a Matlab (simulink), a fin de poder trabajar con ella. En primer lugar, vamos a preparar el Arduino. Conectamos los potenciómetros entre los pines de +5V y Gnd (neutro) y sus pines centrales (que por tanto presentarán un voltaje entre +5V y 0V) a las entradas analógicas A0 y A1 del Arduino, como se muestra a la derecha. Por supuesto, cualquier otro sensor analógico sirve exactamente igual para este ejemplo. Veamos ahora como leemos información de voltaje real desde los potenciómetros a través de la tarjeta Arduino y visualizarlo en el osciloscopio de Simulink. Montemos en Simulink los siguientes bloques: 113 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Ahora se han utilizado los bloques Analog Read para lectura de datos analógicos y un bloque de ganancia , esta ganancia debe aparecer para convertir la salida en Simulink a como si fuera real. EJERCICIO No. 1 Diseñemos un circuito con 5 LEDs, conectados a las salidas de 9 a 13 y con 4 modos de operación manejados entre Arduino y Simulink tal que: Modo 1: Todos los LEDs apagados 114 UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. Modo 2: Todos los LEDs encendidos Modo 3: LEDs parpadenado a la misma frecuencia variada por un potenciómetro. Modo 4: LEDs parpadeando uno tras otro con velocidad variable por un potenciómetro. El usuario puede seleccionar el modo mediante un interruptor. Selector de modo Variador de frecuencia Protoboard 115
© Copyright 2025