Você está na página 1de 15

MATLAB: Computacin Fsica

Prctica 3 Guin 4
Informtica Aplicada a la Biologa
Dpto. Ciencias de la Computacin e Inteligencia Artificial
E.T.S. de Ingenieras Informtica y de Telecomunicacin
Universidad de Granada

1.

Introduccin ................................................................................................... 3
1.1. Conociendo Arduino ................................................................................ 3
2. Primeros pasos en computacin fsica .......................................................... 7
3. Percibiendo el mundo exterior .................................................................... 10
4. Ejercicios ...................................................................................................... 13
4.1. Qu hemos aprendido? ........................................................................ 14

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

1.

Introduccin

En esta cuarta prctica con MATLAB nuestro objetivo es que veis como la programacin
de ordenadores se utiliza en el mundo real. Cmo se programa un frigorfico, una farola o
un semforo. Es lo que se conoce como computacin fsica: el uso de los ordenares para
aplicaciones tangibles.
Es esta prctica utilizaremos un sistema de computacin fsica que se conoce como
Arduino. Es un dispositivo que nos va a permitir transformar las rdenes que demos en
Matlab en seales elctricas que puedan entender los dispositivos electrnicos.
Una vez que hayis realizado la prctica deberais comprender como se puede utilizar la
programacin para crear todo tipo de mquinas inteligentes: Desde una alarma antiincendios hasta un coche.

1.1. Conociendo Arduino


Vamos a comenzar conociendo un poco mejor el sistema con el que vamos a trabajar.
Arduino es una plataforma de hardware libre, que permite transformar las rdenes dadas
a un ordenador en acciones fsicas: encendido de luces, movimiento de motores

Arduino

Para ellos Arduino utiliza un microcontrolador y un conjunto de circuitos que transmiten


los impulsos elctricos. Arduino est diseado para facilitar el uso de la electrnica en
proyectos multidisciplinares ya sean artsticos o cientficos.

La placa Arduino con la que vamos a trabajar.


MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Aunque Arduino puede parecer al principio un sistema bastante complicado no os


preocupis. Est diseado para ser utilizado por personas sin la menor formacin
cientfica o tcnica e incluso por nios (siempre que tengan ms de doce aos)
Vamos a comenzar viendo cuales son los principales componentes de Arduino. Para ello
es recomendable que os fijis en la siguiente figura, en ella se indican la finalidad de las
distintas partes de Arduino.

Sparkfun Inventor Kit Guide

1 Toma de corriente: Sirve para


que Arduino pueda funcionar sin estar
conectado a un ordenador
2 Conexin USB: Permite conectar
un ordenador y transmitir informacin
entre el ordenador y Arduino.
6 Pines digitales: Permiten a
Arduino transmitir rdenes a
mquinas electrnicas
7 Luz de encendido: Se enciende
cuando Arduino est funcionando.

8 Botn de reset: Se utiliza cuando


queremos resetear el Arduino.
10 Pines analgicos y de
potencia: Se utiliza para recibir
informacin y suministrar energa a
las mquinas que estemos
controlando
Es importante que os fijis en la numeracin de los pines de salida, 6, y de entrada, 10.
Cuando queramos dar rdenes o recibir informacin necesitaremos especificar qu pin
vamos a usar.
A la derecha del Arduino tenemos un conjunto de circuitos en una placa de pruebas.
Aunque no es necesario comprender como funcionan estos circuitos s es interesante
tener una breve nocin de cmo funcionan las placas de pruebas.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Placa de pruebas con la que vamos a trabajar

Sparkfun Inventor Kit Guide

En una placa de pruebas tenemos un conjunto de pines en los que podemos colocar
distintos dispositivos electrnicos. Los pines conectados entre s. Si miris la figura la
zona 1 est conecta de manera vertical, todos los pines en la misma columna estn
conectados. En la zona 2 los pines estn conectados de manera horizontal. Todos los
pines en la misma fila estn conectados.

Para comenzar lo ms importante es la conexin USB, es la que nos permite conectar


Arduino al ordenador. Deberais tener una plataforma Arduino completa y un cable USB.
Lo primero que tendris que hacer es conectar Arduino al ordenador usando el cable
USB. Para ello deberis seguir las instrucciones que os de vuestro profesor de
prcticas.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Sparkfun Inventor Kit Guide

Como conectar el Arduino al ordenador.


Una vez que hayis conectado e instalado Arduino pedidle a vuestro profesor de prcticas
que compruebe si todos los cables estn correctamente conectados. Una vez que l os de
el visto bueno podris empezar con la prctica propiamente dicha.
Lo primero que tendremos que hacer es conectar Matlab al Arduino. Para ello
necesitaremos conocer el puerto COM al que est conectado Arduino (deberais tenerlo
apuntado) El comando que tenis que escribir en Matlab es:
>> mi_arduino = arduino(COM3);

Attempting connection .......


Basic I/O Script detected !

Arduino successfully connected !


Fjate que hemos llamado a nuestro arduino mi_arduino, a partir de ahora siempre
que nos refiramos a l tendremos que utilizar ese nombre. Una vez que nos hayamos
conectado a Arduino, podremos empezar a trabajar.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

2.

Primeros pasos en computacin fsica

Nota: Debes haber


diary(Arduino.txt)

activado

el

diary

de

Matlab

usando

el

comando

Una vez que ya habis instalado Arduino y habis comprobado que todas las conexiones
son correctas podemos empezar a realizar programas que tendrn consecuencias
tangibles. Comenzaremos con algo sencillo, encenderemos y apagaremos algunos leds.
Para ello tenemos instalados en la placa de pruebas cinco leds de color rojo o amarillo.
Estos leds son como los de la figura y se van a encender y apagar segn los comandos
que indiquemos.

Leds rojos y amarillos que vamos a utilizar en esta prctica.


Qu es un LED?
Se trata de una revolucionaria fuente lumnica de gran eficiencia, larga vida y
un consumo energtico mucho ms reducido que el de las fuentes
tradicionales, como la bombilla incandescente. Considerada la iluminacin
del futuro, los LED tienen un enorme potencial en zonas subdesarrolladas, a
las que no llega el suministro elctrico.
Aunque los primeros Leds se crearon en los aos 1960 es un cientfico
japons, Shuji Nakamura, el descubridor del proceso que ha permitido
fabricar todo tipo de leds de una manera fcil y barata. Shuji Nakamura
trabajaba en una pequea empresa de iluminacin japonesa cuando se le
ocurri la idea que permitira fabricar leds. A pesar de no tener una gran
formacin cientfica y de que la empresa no le permiti trabajar en su idea,
despus de cinco aos de duro trabajo consigui revolucionar el mundo de la
iluminacin.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Para indicarle a un led que se encienda debemos


fijarnos cual es el pin digital del arduino al que est
conectado. Podis verlo en el siguiente diagrama,
auque es mejor que lo miris directamente en la
placa que se os ha dado. Seguramente vuestros leds
estn conectados a los pines 9, 10, 11, 12 y 13.

Os tenis que fijar en el pin del


Arduino (de color azul), los nmeros
que aparecen en la placa de pruebas
(de color rojo) no son importantes.

Esquema del circuito con el que estamos trabajando


Una vez que ya hemos identificado los pines a los que estn conectados podemos
comenzar a encender y apagar leds.
Para encender el led conectado al pin 11 el comando sera:
>> enciende_led(mi_arduino,11);
Para encender los leds conectados a los pins 9,10 y 12 sera:
>> enciende_led(mi_arduino,[9 10 12]);

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Para apagar el led conectado al pin 9 el comando sera:


>> apaga_led(mi_arduino,9);
Para apagar el led conectado a los pins 11, 12 y 13 el comando sera:
>> apaga_led(mi_arduino,11:13);
Al menos uno de los leds esta conectado a Arduino mediante un cable largo. Desconecta
ese cable del Arduino e intenta encender el led. Qu pasa? Escrbelo en la ventana de
comandos de Matlab como un comentario.
Ahora tienes que copiar el cdigo de la siguiente funcin en Matlab y guardarlo. Qu es
lo que hace?
function destellos (ard,num)
%Funcin destellos. Descripcin de la funcin
%Argumento de entrada
%ard: Arduino conectado
%num:
pinLed1 = 13;
pinLed2 = 9;
for cont = 1:num
apaga_led(ard,pinLed1);
enciende_led(ard,pinLed2);
pause(1); %Para la ejecucin un segundo
enciende_led(ard,pinLed1);
apaga_led(ard,pinLed2);
pause(1); %Para la ejecucin un segundo
end
apaga_led(ard,pinLed1);
apaga_led(ard,pinLed2);
end

Para ejecutarlo debers usar un comando similar al siguiente:


>> destellos(mi_arduino,4);
1. Modifica el cdigo de destellos para que en vez de utilizar slo dos leds utilice
todos los leds disponibles (como si fuese una luz de navidad, un cylon o el coche
fantstico).
2. Modifica el valor dado en pause(1) para que las luces se muevan ms deprisa.

3. Qu pasa si utilizamos pause() en vez de pause(1)? Aviso: La respuesta no es


que se queda parado.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

3.

Percibiendo el mundo exterior

Nota: Debes tener los leds apagados para realizar correctamente esta seccin.
Una vez que hemos aprendido como utilizar un programa para encender y apagar leds
vamos a ver como percibir el mundo exterior utilizando sensores electrnicos. Para ello
vamos a comenzar midiendo la temperatura de la sala.

Sensor de temperatura que vamos a utilizar en esta prctica.


Para leer la temperatura debemos fijarnos cual es el pin analgico al cual est conectado
nuestro sensor. Podis verlo en el siguiente diagrama, auque es mejor que lo miris
directamente en la placa que se os ha dado. Seguramente vuestro sensor de temperatura
est conectados al pin analgico 0.

10

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Esquema del circuito incluyendo el sensor de


temperatura con el que estamos trabajando
Una vez que ya hemos identificado el pin al que est conectado podemos comenzar a ver
cual es la temperatura. Si el sensor est conectado al pin 0, sera:
>> lee_temperatura(mi_arduino,0)
ans =

18.9875

Fjate que la salida de la funcin lee_temperatura va a depender de la temperatura de


la sala. No tiene por qu coincidir con el valor del guin.
Pon ahora tus dedos en la parte negra del sensor de temperatura. Espera unos segundos
y vuelve a medir la temperatura. Qu ha pasado? Describe qu resultados has obtenido
en la ventana de comandos de Matlab como un comentario.

Ahora vamos a proceder a medir la luminosidad en el laboratorio. Para ello vamos a


utilizar un sensor que nos da una medida entre cero y uno. Cero ser una oscuridad total
y uno el mximo de luminosidad.

Sensor de luminosidad que vamos a utilizar en esta prctica.


Para leer la luminosidad debemos fijarnos cual es el pin analgico al cual est conectado
nuestro sensor. Podis verlo en el siguiente diagrama, auque es mejor que lo miris
directamente en la placa que se os ha dado. Seguramente vuestro sensor de temperatura
est conectados al pin analgico 5.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

11

Esquema del circuito incluyendo el sensor de


luminosidad con el que estamos trabajando
Una vez que ya hemos identificado el pin al que est conectado podemos comenzar a ver
cual es la luminosidad. Si el sensor est conectado al pin 5, sera:
>> lee_luminosidad(mi_arduino,5)
ans =

0.8213

La salida de la funcin lee_luminosidad va a depender de la luminosidad de la sala. No


tiene por qu coincidir con el valor del guin.
Cubre ahora con tus dedos el sensor de luminosidad. Vuelve a medirla. El nuevo valor es
mayor o menor que el anterior? Comenta los resultados en la ventana de comandos de
Matlab como un comentario.

12

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

4.

Ejercicios

Para terminar, se proponen al alumno una serie de ejercicios para afianzar los
conocimientos adquiriros. As mismo, se pretende que el alumno sea capaz de imaginar
posibles aplicaciones reales utilizando lo aprendido hasta ahora.
1.
Modifica el cdigo de la funcin encendido_automatico para que funcione
correctamente. Luego describe cual es su funcionalidad y cmo se consigue implementar dicha
funcionalidad.
function encendido_automatico(ard)
%funcion encendido_automatico
%Enciende los leds si es de noche
%Si hay luz los apaga
%-------------------------------------%Repito durante unos diez segundos
for cont=1:50
%Veo qu luminosidad hay
luz = lee_luminosidad(ard, 5);

end

%Si es menor que un valor dado enciendo la farola


if (luz < 0.9)
enciende_led(ard, 9:13);
else %Apago la farola
enciende_led(ard, 9:13);
end
pause (.2) %para unas decimas antes de volver a repetir

La funcin se llama con el siguiente comando:


>> encendido_automatico(mi_arduino)
2.
Escribe la funcin destellos_luminosidad modificando la funcin destellos
para que la frecuencia de los destellos dependa de la luminosidad del ambiente. A menor
luminosidad mayor frecuencia de destellos.
3.
Analiza el cdigo de la funcin escribe e indica qu hace. Para ello debes indicar cual
es su funcionalidad y cmo se consigue implementar dicha funcionalidad.
function escribe (ard,num)
%Saca por leds el nmero que introduzcamos en binario
%Mximo nmero 31
%Se utilizan los pines del 13 al 9
%Argumento de entrada
%ard: Arduino conectado
%num: el nmero que vamos a pasar a binario
%Los leds con los que voy a trabajar
rangoLed = 9:13;
for cont = rangoLed
val = rem(num,2); %Calculo el resto de dividir por dos

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

13

num = fix(num/2); %Calculo la parte entera del cociente

end
end

%Si la cifra en binario vale 1


if val == 1
enciende_led(ard,cont); %enciendo el led
else
apaga_led(ard,cont); %apago el led
end

La funcin se llama con el siguiente comando:


>> escribe(mi_arduino,9)
4.
Escribir una funcin de nombre escribe_temperatura que use las funciones
lee_temperatura y escribe. Esta funcin lee la temperatura del sensor de temperatura y la
escribe en binario utilizando los leds disponibles. Crear una versin alternativa de nombre
lecturaContinua en la que el Arduino muestre de manera continua la temperatura en los
leds. Nota: para poder realizar correctamente la medida de la temperatura los leds deben estar apagados.

4.1. Qu hemos aprendido?

14

Los principios de la computacin fsica.

Cmo funcionan algunos


temperatura, iluminacin...

Como utilizar lo aprendido en programacin para disear mquinas que hagan lo


que queremos.

componentes

electrnicos:

Leds,

sensores

de

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

Este obra est bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.
Para ver una copia de esta licencia visita:
http://creativecommons.org/licenses/by-sa/4.0/
O manda una carta a:
Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

15

Você também pode gostar