Professional Documents
Culture Documents
COMUNICACION
ES II
Adquisicin de Datos Arduino + Matlab
INTEGRANTES:
- Pablo Barrios Bajaa.
- Kerly Paladines Samaniego.
TABLA DE CONTENIDO
INTRODUCCION.........................................................................................2
OBJETIVOS.................................................................................................3
OBJETIVOS GENERALES.......................................................................3
OBJETIVOS ESPECFICOS.....................................................................3
MARCO TERICO.......................................................................................4
ARDUINO.............................................................................................4
MATLAB.............................................................................................11
CONFIGURACIN DE LOS PINES DE LA TARJETA DESDE MATLAB.......12
LECTURA DE ENTRADA DIGITAL.........................................................12
ESCRITURA DIGITAL DE SALIDA.........................................................12
LECTURA DE ENTRADA ANLOGA......................................................13
ESCRITURA EN SALIDA ANLOGA......................................................13
DESARROLLO..........................................................................................14
CONFIGURACIN DE ARDUINO..........................................................14
CONFIGURACIN DE MATLAB............................................................15
RESULTADO Y EJEMPLO DE CAPTURA................................................17
CODIGO MATLAB...............................................................................18
CONCLUSIONES.......................................................................................20
RECOMENDACIONES...............................................................................20
INTRODUCCION
A la hora de empezar con cualquier proyecto con aplicacin prctica,
una de las cuestiones principales suele ser enlazar la parte terica que
suele ser un poco trabajoso programarla en el software de nuestra
eleccin como algoritmos para adquisicin de datos, sistemas de control
automtico, simulaciones de aplicaciones de seguridad, etc., con el
mundo real.
Hasta no hace mucho, la nica manera de poder trabajar con datos
fsicos consista en adquirir un sistema comercial de adquisicin de datos
(DAQ) como los de National Instruments; afortunadamente hoy en da
hay existen otras alternativas mucho ms asequibles: una de ellas es el
popular microcontrolador Arduino.
Uno de los ejemplos ms bsicos consiste en leer datos de un sensor
conectado al Arduino y transmitirlos al PC mediante una comunicacin
serie; sin embargo, este ejemplo tiene limitaciones: se limita a un nico
sensor y los datos se leen numricamente en pantalla, pero no es
posible adquirirlos ni trabajar con ellos.
Por eso nos ha parecido interesante realizar una aplicacin diferente a
esta pequea tarjeta, que ser leer una seal mediante la simulacin de
dos sensores, que para nosotros sern dos potencimetros y luego
transmitirla a Matlab, pudiendo visualizar sus cambios mediante el
software gracias a las variaciones que se hagan con los potencimetros.
OBJETIVOS
OBJETIVOS GENERALES
1.
2.
3.
4.
OBJETIVOS ESPECFICOS
1. Instalar los drivers necesarios para el uso de Arduino.
2. Usar potencimetros para simular la onda analgica.
3. Usar las entradas analgicas de la tarjeta Arduino para la
adquisicin de datos.
4. Conocer cmo trabajan las entradas de la tarjeta Arduino.
5. Diferenciar las entradas analgicas y digitales de Arduino.
6. Comunicar la tarjeta Arduino con Matlab.
7. Usar package especiales para la comunicacin.
8. Configurar el puerto serial de la tarjeta Arduino.
9. Programar la adquisicin de datos.
10. Desarrollar habilidades de programacin usando comando ya
antes vistos.
11. Usar una interfaz para visualizar los cambios de la onda de
entrada.
MARCO TERICO
ARDUINO
INFORMACIN GENERAL
El Arduino Uno es una placa electrnica basada en el ATmega328 (ficha
tcnica). Cuenta con 14 pines digitales de entrada / salida (de los cuales
6 pueden utilizarse para salidas PWM), 6 entradas analgicas, un
16 MHz resonador
cermico,
una
conexin
USB,
un
conector
de
RESUMEN
Microcontroladores
Tensin de funcionamiento
Voltaje de entrada
(recomendado)
Voltaje de entrada (lmites)
Digital pines I / O
ATmega328
5V
7-12V
6-20V
14 (de los cuales 6 proporcionan
PWM)
6
40 mA
50 mA
32 KB ( ATmega328 ) de los cuales
Memoria Flash
SRAM
EEPROM
Velocidad de reloj
arranque
2 KB ( ATmega328 )
1 KB ( ATmega328 )
16 MHz
POTENCIA
El Arduino Uno puede ser alimentado a travs de la conexin USB o con
una fuente de alimentacin externa. La fuente de alimentacin se
selecciona automticamente.
MEMORIA
El ATmega328 tiene 32 KB (con 0,5 KB utilizados para el gestor de
arranque). Tambin tiene 2 KB de SRAM y 1 KB de EEPROM (que puede
ser ledo y escrito con la librera EEPROM).
ENTRADA Y SALIDA
Cada uno de los 14 pines digitales en el Uno se puede utilizar como una
entrada o salida, utilizando
pinMode()
, digitalWrite ( )
digitalRead
analogWrite( )
funcin.
la
especializadas:
TWI: Pin A4 o A5 y SDA o pin SCL comunicacin Apoyo TWI usando
la librera Wire.
Hay un par de otras clavijas de la placa:
AREF. Voltaje de referencia para las entradas analgicas. Se utiliza
con
analogReference() .
Restablecer. Traiga
esta
lnea
LOW
para
reiniciar
el
COMUNICACIN
El Arduino Uno tiene una serie de instalaciones para la comunicacin con
un ordenador, otro Arduino, u otros microcontroladores. El ATmega 328
ofrece. El ATmega328 ofrece UART TTL (5V) de comunicacin en serie,
que
est
disponible
en
los
pines
digitales
(RX)
Softwar eSerial
la documentacin para
obtener
ms
PROGRAMACIN
El
Arduino
Uno
se
puede
programar
con
el
software
Arduino
de
hardware
externo. Se
comunica
utilizando
el
utilizando Arduino
ISP o
CARACTERSTICAS FSICAS
La longitud mxima y la anchura del PCB Uno son 2,7 y 2,1 pulgadas,
respectivamente, con la toma de conector USB y el poder que se
extiende ms all de la dimensin anterior. Cuatro orificios de los
tornillos permiten la junta que se une a una superficie o caja. Tenga en
cuenta que la distancia entre los pines digitales 7 y 8 es de 160
milsimas de pulgada (0,16 "), no un mltiplo par de la separacin de
100 milsimas de pulgada de los otros pasadores.
MATLAB
MATLAB es un entorno de programacin para el desarrollo de algoritmos,
el anlisis de datos, la visualizacin y el clculo numrico. Con MATLAB,
puede solucionar problemas de clculo tcnico ms rpidamente que
con lenguajes de programacin tradicionales tales como C, C++ o
Fortran.
10
incluso
ms
rpidamente
que
otros
lenguajes
de
11
cIO=arduino( COM 3 )
aparecer
en
pantalla,
texto
informativo
sobre
la
12
13
DESARROLLO
CONFIGURACIN DE ARDUINO
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, de esta manera:
14
Serial . println()
al final)
CONFIGURACIN DE MATLAB
Una vez configurado el Arduino, los datos se enviarn por la propia
conexin USB, pero simulando un puerto serie que deberemos conocer
(desde la propia interfaz de Arduino se puede averiguar). En este caso,
en el entorno Windows, el puerto ser el COM4. El primer paso ser
crear un objeto serie en Matlab y abrirlo para empezar a leer:
15
plot ()
dentro
del bucle.
16
Aslak Grinsted .
17
Por supuesto, una vez recogidos los datos en las variables v1 y v2, ya
podemos analizarlos de cualquier manera que se nos ocurra: podemos
realizar un anlisis espectral mediante transformada rpida de Fourier;
graficarlos frente a otras variables, realizar un test de correlacin,
salvarlos en formato Excel, etc.
CODIGO MATLAB
1.
2.
3.
%borrar previos
4.
5.
6.
s = serial('COM4','BaudRate',9600,'Terminator','CR/LF');
7.
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
8.
%abrir puerto
9.
fopen(s);
18
10.
11.
% parmetros de medidas
12.
13.
14.
15.
% preparar la figura
16.
f = figure('Name','Captura');
17.
18.
l1 = line(nan,nan,'Color','r','LineWidth',2);
19.
l2 = line(nan,nan,'Color','b','LineWidth',2);
20.
21.
xlabel('Tiempo (s)')
22.
ylabel('Voltaje (V)')
23.
24.
grid on
25.
hold on
26.
27.
% inicializar
28.
v1 = zeros(1,tmax*rate);
29.
v2 = zeros(1,tmax*rate);
30.
i = 1;
31.
t = 0;
19
32.
33.
34.
tic
35.
while t<tmax
36.
t = toc;
37.
38.
a = fscanf(s,'%d,%d')';
39.
v1(i)=a(1)*5/1024;
40.
v2(i)=a(2)*5/1024;
41.
% dibujar en la figura
42.
x = linspace(0,i/rate,i);
43.
set(l1,'YData',v1(1:i),'XData',x);
44.
set(l2,'YData',v2(1:i),'XData',x);
45.
drawnow
46.
% seguir
47.
i = i+1;
48.
end
49.
50.
clc;
51.
52.
%savefigure('captura_multi','s',[4.5 3],'po','-dpdf')
53.
20
54.
55.
fclose(s);
56.
delete(s);
57.
clear s;
CONCLUSIONES
21
RECOMENDACIONES
22