Los desencuentros entre dos familias enemistadas

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