arduino como generador de datos desde simulink

17
UNIVERSIDAD SANTIAGO DE CALI FACULTAD INGENIERIAS PROGRAMA DE INGENIERIA ELECTRONICA CONTROLES II Profesor: MSc. JAVIER A. MURILLO M. 99 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.

Upload: fran-bauti-mendez-hernandez

Post on 09-Nov-2015

50 views

Category:

Documents


6 download

DESCRIPTION

Arduino Como Generador de Datos Desde Simulink

TRANSCRIPT

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    99

    VIII. CONTROL USANDO SIMULINK Y ARDUINO

    Los entornos de Diseo de Sistemas de Control Asistido por

    Ordenador (CACSD) estn experimentando notables cambios

    durante los ltimos aos. Estos avances afectan a las distintas

    fases de diseo de los sistemas de control como pueden ser el

    modelado, la identificacin y la validacin de estos modelos, as

    como a la posterior fase de diseo del controlador propiamente

    dicho.

    Figura No. 1

    Este trabajo describe una herramienta cuyo principal objetivo

    consiste en la integracin en un nico entorno de un conjunto de

    funciones que permiten el control por realimentacin 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 algn mtodo.

    Existen numerosas y bien conocidas razones para utilizar este tipo

    de control, como pueden ser su implantacin industrial, robustez,

    facilidad de empleo, etc.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    100

    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

    diseo y desarrollo de proyectos basados en Arduino. Dado que

    tenemos los conocimientos adecuados en electrnica y

    programacin, para hacerlo fcil, he pensado en que nos

    centremos en los aspectos ms bsicos de las caractersticas y la

    programacin de Arduino.

    Otro de los objetivos de estas guas es organizar un poco la gran

    cantidad de informacin que sobre este tema existente en la red.

    Para ello casi toda la informacin se ha obtenido a travs de la

    fuente http://www.arduino.cc o de manuales basados en ella pero

    algo ms estructurados.

    Por ltimo, las clases estn pensadas como soporte para la

    realizacin de nuestro proyecto final que es el control de un sistema

    real.

    Qu es ARDUINO?

    Arduino es una plataforma de prototipos

    electrnica de cdigo abierto (open-

    source) basada en hardware y software

    flexibles y fciles de usar. Est pensado

    para artistas, diseadores, como hobby

    y para cualquiera interesado en crear

    objetos o entornos interactivos.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    101

    Arduino puede sentir el entorno mediante la recepcin 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 autnomos o se pueden comunicar con

    software en ejecucin en un ordenador, en nuestro caso Matlab y

    Simulink.

    Existen muchos otros microcontroladores y adems plataformas

    microcontroladoras disponibles para computacin fsica. 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 programacin

    de microcontrolador y la encierran en un paquete fcil de usar.

    Arduino tambin simplifica el proceso de trabajo con

    microcontroladores, pero ofrece algunas ventajas para profesores,

    estudiantes y aficionados interesados sobre otros sistemas:

    Barato

    Multiplataforma

    Entorno de programacin simple y claro

    Cdigo abierto y software extensible

    Cdigo abierto y hardware extensible

    Hay mltiples versiones de la placa Arduino. La mayora usan el

    ATmega168 de Atmel, mientras que las placas ms antiguas usan el

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    102

    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

    anlogas, un cristal oscilador de 16Mhz, conexin USB, conector de

    alimentacin, conector ICSP y botn 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 batera de 9VDC.

    La nueva Arduino UNO. Adicional a todas las caractersticas de su

    predecesora Arduino Duemilanove, UNO ahora utiliza un

    microcontrolador ATMega8U2 en vez del chip FTDI. Esto permite

    mayores velocidades de transmisin por su puerto USB y no

    requiere drivers para Linux o MAC (archivo inf es necesario para

    Windows) adems ahora cuenta con la capacidad de ser reconocido

    por el PC como un teclado, mouse, joystick, etc.

    INSTALACION DEL SOFTWARE ARDUINO

    Esta seccin 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 pgina

    http://arduino.cc/es/Main/Software.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    103

    Conecta la board y espera a que windows inicie el proceso de

    instalacin, despus de unos minutos este fallar.

    Haz Click en Menu Inicio, posiciona el mouse en equipo y presiona

    click derecho, eligiendo la opcin de propiedades.

    Ahora elije la opcin 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 opcin de actualizar

    software del controlador.

    Despus elije la opcin buscar software de controlador en el

    equipo y selecciona la carpeta donde descargaste Arduino UNO o

    superior.

    Busca la carpeta drivers y seleccinala (slo la carpeta drivers no

    la FTDI QUE SE ENCUENTRA INTERNA), sigue la instalacin 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.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    104

    1. Lnea de comunicaciones pines 0 y 1 no se usan.

    Entradas/salidas digitales pines del 2 al 13.

    2. Botn reset de la tarjeta (Permite el re-inicio de la misma).

    3. Lnea de Entradas analgicas (De la A0 a la A5).

    4. Lnea de alimentacin. En estos pines podemos encontrar Vin,

    GND, 5V, 3.3V y reset.

    5. Plug de alimentacin de la tarjeta (Para voltajes entre 7 a 12

    volts mximo).

    6. Regulador de voltaje.

    7. Conector USB.

    Una vez instalado el paquete programa con sus drivers, en

    Windows 7, vamos a ejecutar la aplicacin y despus

    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 aplicacin. Nos

    encontraremos con una ventana como la mostrada en la figura

    siguiente.

    Como se puede ver, en la parte

    superior hay una serie de mens, 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 se

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    105

    encuentra nuestro Arduino, puedes comprobar cmo se ha

    instalado si buscas en el Administrador de Dispositivos de Windows

    en la pestaa "Puertos (COM yLPT)" el dispositivo con nombre "USB

    Serial Port (COMx)".

    Ahora nos podramos 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 fcil, 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 ms cmodo y est ms 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 botn File -> Examples -> 1.Basics ->

    Blink con esto cargamos un pequeo cdigo 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.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    106

    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 cdigo

    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 lneas podemos hacer un

    semforo o jugar con una combinacin de LEDs. Intente montando

    un circuito como el de la figura.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    107

    TRABAJANDO CON EL HARDWARE DE ARDUINO

    En este tema les muestro cmo aadir 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 instalacin agrega los siguientes elementos a su

    computador.

    Herramientas de desarrollo de software, tales como el

    software de Arduino.

    Una librera de bloques de Simulink para configurar y

    acceder a los sensores, actuadores, y a las interfaces de

    comunicacin de Arduino.

    Demos para empezar a aprender acerca de las

    caractersticas especficas 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 instalacin depende de su conexin a internet.

    Despus de unos segundos se le presenta:

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    108

    Seleccione internet y presione siguiente. Ahora se presenta:

    Seleccione la tarjeta a instalar, en nuestro caso Arduino Uno y

    presione siguiente. Ahora tenemos:

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    109

    Al presionar Install se presenta un displays de carga de Arduino.

    Despus de una espera aparecer

    Presiono Finish y listo. Ya podemos usar Arduino.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    110

    En las libreras de Simulink debe aparecer un nuevo men de

    bloques con el nombre Simulink Support Package for Arduino

    Hardware.

    Para instalar las otras libreras, le solicito que descarge los

    programas ArduinoIO y Arduino_Simulink de la pgina

    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 vulvalo a abrir. Al abrir SIMULINK deben aparecer

    en las libreras:

    Arduino IO Library

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    111

    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

    cdigo necesario para que la tarjeta Arduino escuche los

    comandos ejecutados desde Matlab, ejecute instrucciones,

    interacte 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 prctica en la cual deseamos enviar un

    escaln de 1 voltio a travs del pin 9 de la tarjeta Arduino.

    Montemos en Simulink los siguientes bloques:

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    112

    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 escaln 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 escaln.

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    113

    ARDUINO COMO GENERADOR DE DATOS HACIA SIMULINK

    Uno de los ejemplos ms bsicos consiste en leer datos de un

    sensor conectado al Arduino y transmitirlos al PC mediante

    comunicacin serie y visualizarlo en el osciloscopio de Simulink.

    El objetivo ser pues leer una seal analgica de dos (extensible

    fcilmente a ms) sensores (en este caso potencimetros) y

    transmitirla a Matlab (simulink), a fin de poder trabajar con ella.

    En primer lugar, vamos a preparar

    el Arduino. Conectamos los

    potencimetros entre los pines de

    +5V y Gnd (neutro) y sus pines

    centrales (que por tanto

    presentarn un voltaje entre +5V y

    0V) a las entradas analgicas A0 y

    A1 del Arduino, como se muestra a

    la derecha.

    Por supuesto, cualquier otro sensor analgico sirve exactamente

    igual para este ejemplo.

    Veamos ahora como leemos informacin de voltaje real desde los

    potencimetros a travs de la tarjeta Arduino y visualizarlo en el

    osciloscopio de Simulink. Montemos en Simulink los siguientes

    bloques:

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    114

    Ahora se han utilizado los bloques Analog Read para lectura de

    datos analgicos y un bloque de ganancia , esta ganancia

    debe aparecer para convertir la salida en Simulink a como si fuera

    real.

    EJERCICIO No. 1

    Diseemos un circuito con 5 LEDs, conectados a las salidas de 9 a

    13 y con 4 modos de operacin manejados entre Arduino y

    Simulink tal que:

    Modo 1: Todos los LEDs apagados

  • UNIVERSIDAD SANTIAGO DE CALI

    FACULTAD INGENIERIAS

    PROGRAMA DE INGENIERIA ELECTRONICA

    CONTROLES II

    Profesor: MSc. JAVIER A. MURILLO M.

    115

    Modo 2: Todos los LEDs encendidos

    Modo 3: LEDs parpadenado a la misma frecuencia variada por un

    potencimetro.

    Modo 4: LEDs parpadeando uno tras otro con velocidad variable por

    un potencimetro.

    El usuario puede seleccionar el modo mediante un interruptor.

    Selector

    de modo

    Variador de

    frecuencia

    Protoboard