Comunicación Serial Matlab - Arduino

July 28, 2019 | Author: David YH | Category: Arduino, Sensor, Ultrasonido, Sonido, Tecnología
Share Embed Donate


Short Description

Download Comunicación Serial Matlab - Arduino...

Description

Comunicación Serial Matlab - Arduino El objetivo de esta entrada es proporcionar una guía para establecer comunicación mediante el puerto serial entre Matlab y la placa Arduino, graficando los valores que habrán de leerse y además guardando en un archivo de datos los valores recogi recogidos dos u obteni obtenidos dos durant durante e la lectur lectura, a, los cuales cuales podría podrían n servir servir para para un poster posterior ior análi análisis sis.. ara ara ello ello sólo sólo necesitaremos obviamente disponer de una placa Arduino y el soft!are correspondiente, además de Matlab. rimeramente cargaremos en nuestra placa Arduino Arduino el código que se muestra enseguida, el cual como puede apreciarse es muy sencillo, lo "nico que se hace es leer un valor del pin analógico A# del arduino e imprimirlo con la instrucción $%erial.println$. El valor que estaremos leyendo en A# puede provenir de cualquier sensor analógico que nosotros dispongamos o bien el que nos interese para un fin determinado, e inclusive podemos hacer uso de un potenciómetro que simplemente cambiará su valor a capricho nuestro.

01 02 03 04 0# 0$ 0%

/* Com Comunica icación Seri erial Matlab Ardu rduino Sketch Arduino @Jorge e !o" Santo" */ int &al'

0( 0) 10 11 12

&oid "etu+,Serial.begin+)$00,'

13 14 1# 1$ 1%

&oid loo+,&alanalogead+A0,' Serial.rintln+&al,' dela+100,'





&osotros haremos uso de un potenciómetro para variar la lectura que habremos de tomar. 'ecordemos que el valor que obtendremos del pin analógico será un n"mero entero entre # y (#)*. +a coneión del potenciómetro a la placa Arduino se asume que es algo de trámite para vosotros. -na ve que hemos cargado el código anterior en nuestra placa, cerramos el entorno de desarrollo de Arduino para evitar  conflictos con el puerto serial, puesto que si lo mantenemos abierto, Matlab nos enviará un mensaje de error cuando intentemos ejecutar la comunicación serial. /onsiderando lo anterior, ahora abriremos Matlab y crearemos un nuevo $script$ al cual le asignaremos un nombre a conveniencia propia, y en este escribiremos las siguientes instrucciones0

01 02 03 04 0# 0$ 0% 0( 0) 10 11 12

clear all'clc' dele delete te+i +in" n"tr tri ind nd++-5 5or ort t6 6- -C7 C7M1 M11 1, ,,' ,' "er "eria ial l"e "eri rial al+ +C7 C7M1 M11 16 68a 8aud uda ate te6 6)$ )$00 00,' ,' oen+"erial,' igur igure+ e+9a 9ame me6 6:r; :r;ic ica a de &alor &alore" e" obte obtenid nido" o", , titl title+ e+! !A A A9A A9A!7 !7:? :?CA CA C79 C79 A A>? >?97 97, ,' ' label+Mue"tra,' label+oltaBe de Salida,' &alero"+161000,'

13 or i1D1000 14 lim+E0 #.1F,' 1# lim+EiG100 iH10F,' 1$ lectura"can+"erial6Id,' 1% &al+i,lectura*+#/1023,' 1( hold on 1) lot+i6&al+i,6,' 20 drano 21 end 22 23 dlmrite+alore"K7btenido".dat6 &al6 delimiter6 Ln6 reci"ion6 I.2, 24 2# clo"e+"erial,' 2$ delete+"erial,' 2% clear all'  Ahora veamos una breve descripción de cada una de las instrucciones dadas en el $script$ de Matlab que hemos creado. /omenamos borrando variables y limpiando la pantalla del $command !indo!$ para evitar cualquier tipo de incoveniente, para ello usamos $clear all$ y $clc$. +uego proseguimos a buscar si eiste alg"n objeto creado en Matlab asociado al puerto serial que usaremos y en caso de haberlo lo borramos para evitar que Matlab aborte la operación, para ello usaremos la instrucción de la primera línea del código mostrado enseguida. /on la segunda línea inicialiamos el puerto serial al cual le hemos llamado $pserial$, indicamos el puerto serial que usaremos en este caso $/1M(($ 2este valor variará dependiendo de cada usuario3 y definimos los bps a los que se ejecutará la coneión o comunicación serial, en este caso 45## bps, tal como se definió en el s6etch del Arduino. 7inalmente con $fopen$ abriremos el puerto serial que hemos inicialiado.

1 2 3

delete+in"trind+-5ort6-C7M11,,' "erial"erial+C7M1168audate6)$00,' oen+"erial,'

osteriormente definimos una serie de param8tros estáticos que contendrá el objeto $figure$ en el cual graficaremos los datos leídos, tales como título y e tíquetas en los ejes, las siguientes cuatro lineas muestran la parte de código implicada.

1 2 3 4

igure+9ame6:r;ica de &alore" obtenido", title+!A A9A!7:?CA C79 A>?97,' label+Mue"tra,' label+oltaBe de Salida,'

 Ahora creamos un vector de ceros llamado $val$ de dimensión ((### y en el cual guardaremos todos los datos que obtengamos de la lectura que habremos de realiar.

1

&alero"+161000,'

Enseguida creamos un ciclo $for$ que se ejecutará desde ( hasta (###. 9efinimos los límites superior e inferior de la gráfica mostrada con $lim$ y $ylim$, nótese que el valor para $y$ permanece estático de # a :.( 2valores en volts3, mientras que el valor de los límites de $$ dependen de la ejecución del ciclo. Ahora creamos una variable llamada $lectura$ la cual tomará el valor entero 2eso nos indica el ;alor analógico3 a uno proporcional de # a : 2>oltaje de %alida3. /on $hold on$ nos aseguramos que los valores graficados en cada ciclo se mantegan, y evidente con $plot$ graficamos los vectores $i$ y $ val2i3$ usando como símbolo una $$. 7inalmente el comando $dra!no!$ 2literalmente3 nos permite ir graficando los valores tan pronto como se vayan leyendo del puerto serial.

1 2

or i1D1000 lim+E0 #.1F,'

3 4 # $ % ( )

lim+EiG100 iH10F,' lectura"can+"erial6Id,' &al+i,lectura*+#/1023,' hold on lot+i6&al+i,6,' drano end

%iguiendo con el código, con la línea que se muestra enseguida escribimos en un fichero con etensión ?.dat los valores que hemos guardado en el vector $val$ durante la ejecución de todo el ciclo. -samos saltos de línea como separadores 2@n3 y además guardamos los datos en modo de coma flotante con precisión de dos lugares decimales 2=,'

5= 5D 5@



5?

&oid loo+,

5E

-

C$

//llamamo" la uncion calculari"tancia+,  guardamo" "u

CB

//retorno en una &ariable

C5

int di"tancia  calculari"tancia+trig6 echo6 true,'

CC C%

Serial.rintln+di"tancia,'

C= CD

dela+200,' 

C@ C? int calculari"tancia+int trig5in6 int echo5in6 bool metric,

CE %$ %B

//e&uel&e la di"tancia detectada or el "en"or en centimetro" o //en ulgada"

%5 %C

int duracion'

%%

int medida'

%= %D

//
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF