Professional Documents
Culture Documents
Fig. 33.1
3.- Abra MATLAB y en la ventana de nombre Editor debe crear una funcin
llamada Graficar_arduino(muestras). Copie y pegue el siguiente cdigo:
function voltaje=Graficar_arduino(muestras)
close all;
clc;
voltaje=0; %variable donde se guardarn los datos
Nota:
El puerto Serie a utilizar para recibir datos, deber ser el mismo que Arduino
utiliza al enviar datos, para este caso, se est utilizando en puerto COM3, en
caso de ser diferente el puerto que usa Arduino, favor de modificar las lneas
que se encuentran marcadas con azul. La velocidad de transferencia deber
ser de 9600 baudios, tanto en arduino como en MALTLAB.
4.- En MATLAB vaya a la ventana de nombre COMAND WINDOW y escriba el
comando Graficar_arduino(500) y presione ENTER (ES IMPORTANTE QUE EL
ARCHIVO
HAYA
SIDO
GUARDADO
EN
LA
CARPETA
MIS
DOCUMENTOS/MATLAB. Lo que se hace aqu es llamar a la funcin que acaba
de crear con el cdigo de arriba. Para que la funcin sea llamada correctamente,
debe estar escrita de la misma manera que como la escribi en el cdigo. El nmero
500 indica que se tomarn 500 muestras para graficar. Puede variar este nmero
de acuerdo al nmero de muestras que desee manejar.
5.- Comience a variar el potencimetro y ver que una grfica aparece en su
pantalla siguiendo los valores que usted manda por el potencimetro. Al llegar al
nmero de muestras programado la grfica se detendr y en la ventana Comand
Window se mostrarn los valores capturados por MATLAB. Como se ilustra en las
imgenes 33.2 y 33.3
Fig. 33.3. Datos obtenidos por MATLAB que fueron enviados desde arduino.
6.- Guarde los datos obtenidos, esto es muy importante ya que si la grfica se nos
extrava, la podemos recuperar con los datos. Para ello note que en la ventana
WorkSpace Se ha generado un archivo de nombre ans, este archivo contiene los
datos de la grfica.
Fig. 33.4. Datos de la grfica almacenados en el archivo ans en la ventana del WorkSpace
Para guardar los datos, debemos dar click derecho sobre el archivo ans e ir al
men Save as. Seleccionamos la carpeta Mis Documentos/MALTAB y
colocamos el nombre ans para identificarlo posteriormente.
SI le damos doble click al archivo ans nos aparecer un archivo similar a Excel
en la ventana Editor. Estos archivos estn colocados de manera horizontal.
Fig. 33.5. Datos provenientes de arduino que fueron graficados como se indica en la figura 33.2.
Una vez que tenemos los datos podemos pasar la grfica a Simulink considerando
lo siguiente:
A.- Simulink nos pide un archivo *.m (como el archivo ans que acabamos de
guardar) que incluya dos columnas (MATLAB los llama vectores). La primer
columna deber tener los datos que se graficarn en el eje x (en este caso es el
tiempo) y la segunda columna los datos obtenidos por MATLAB que proporcionan
la forma de la grfica.
B.- Simulink solo muestra una grfica de 0-10 segundos, por lo que, el vector de
tiempo que generemos deber ser menor o igual a 10.
C.- Para que la grfica sea reconstruida de forma similar a la original, SIMULINK
tambin nos pide que el nmero de datos proporcionados por el vector de tiempo
sea igual al nmero de muestras tomadas. Es decir, si nosotros tomamos 500
muestras, el vector de tiempo deber tener 500 valores: SIEMPRE RESPETANDO
QUE NO EXCEDA LOS 10 SEGUNDOS que simulink es capaz de graficar.
Veamos cmo se hace.
7.- Como se muestra en la figura 33.5 los datos estn acomodados en forma de fila,
debemos pasarlos a forma de columna. Para ello abra el archivo ans que
anteriormente guard en la carpeta Mis Documentos/MATLAB dando doble click
sobre l.
7.- En el comand window tecleamos r=Transpose(ans). El comando Transpose
nos permite sacar la matriz transpuesta de un vector. En este caso nos ayudar a
convertir los datos de ans de forma horizontal a una columna en vertical, como se
muestra a continuacin.
Fig. 33.7. Datos de tiempo generados en el archivo t con una longitud de 500 mostrados de forma
horizontal.
8.- Pasamos los datos t de fila a columna como lo hicimos en el paso 7, esta vez
tecleamos time=transpose(t) y obtenemos un nuevo archivo *.m llamado time
que contiene los datos de tiempo, pero esta vez, generados de manera vertical,
justo como lo pide Simulink. Veamos la siguiente imagen:
Fig.33.9. Grfica reconstruida, formada por los vectores time y r que incluyen datos de manera
vertical.
10.- Finalmente debemos crear una matriz que contenga las dos columnas que
acabamos de transponer, la columna r y la columna time, siempre teniendo en
cuenta que, del lado derecho del comando debe ir la columna referente al tiempo
(que es la del eje x) y del lado izquierdo la columna referente a los datos (que es la
del eje y). Escribimos:
grafica=[time r]
donde grafica nos generar el archivo grfica.m, y escribimos time(espacio)r
entre corchetes. Veamos la grfica 33.10 y notemos que ahora el archivo grafica.m
contiene las dos columnas necesarias que nos pide Simulink colocadas de manera
vertical.
12. Nos vamos a la parte superior central de la pantalla y le damos click en new
model. Ver figura 33.12.
16.- El bloque From Workspace debe contener los datos del archivo grafica.m que
creamos como matriz de dos columnas y 500 valores. Para ello damos doble click
sobre dicho bloque, y en la opcin Data escribimos el nombre del archivo que
vamos a trasladar, para este caso es el nombre grafica. En la opcin Output Data
Type, seleccionamos doble. La opcin Sample Time quedar en cero y en la
opcin Form output after final data value by: seleccionamos extrapolation Damos
click en Apply y posteriormente en OK. La configuracin debe quedar tal y como
se muestra a continuacin:
Nota: Es importante que el archivo grafica.m est cargado en la ventana
WorkSpace caso contrario, el bloque de Simulink no tomar los datos.
17.- Finalmente debemos dar click en el botn Run y posteriormente dar doble
click sobre el icono Scope y veremos la misma grfica que capturamos con
arduino.
Si comparamos la grfica de la figura 33.18, con las de las figuras 33.9 y 33.2,
veremos que son idnticas.
Ahora podemos obtener fcilmente la funcin de transferencia de una planta
cualquiera (presin, caudal, temperatura, velocidad, posicin nivel, etc) con la ayuda
de Simulink.