Arduino serial plotter

Como ya avisé el otro día por twitter, Arduino ha introducido en la nueva versión del IDE (1.6.6) una gráfica de los datos numéricos que entran por el puerto serie. Ahora os enseñaré cómo usarlo.

Materiales

En primer lugar, necesitáis la nueva versión de Arduino IDE 1.6.6, que se puede descargar desde aquí: su página oficial.

Lo siguiente que necesitáis es una placa Arduino que se pueda conectar a un puerto serie virtual (mediante USB), con el ordenador. Si no me equivoco, todas tienen esta funcionalidad, pero las más simples son las que llevan un conector USB integrado y nos ahorran cables y adaptadores.

¿Qué datos enviaremos por el puerto serie? Usaremos un pin del puerto analógico (A0) para leer un sensor, o un valor analógico, de 10 bits. El valor irá de 0 a 1024, en números enteros. Para saber qué lectura de tensión hay, se hace un cálculo simple.

En lugar de un sensor, yo he usado un potenciómetro como divisor de tensión para la primera prueba. Luego lo he reemplazado por un condensador de gran capacidad que conectaba y desconectaba a mano para ver su carga y descarga, en paralelo a una resistencia.

Y éso es todo, la conexión del circuito es así:

Programación

Quizás os pensáis que hay que escribir alguna función especial, pero no. El serial plotter coge absolutamente todo lo que le entra por el puerto serie, entonces lo único que hay que hacer es enviar el dato y ya se visualiza. El código es el siguiente:

/*  Graph
created 2006
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe and Scott Fitzgerald

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Graph
*/

void setup() {
// initialize the serial communication:
Serial.begin(9600);
}

void loop() {
// send the value of analog input 0:
Serial.println(analogRead(A0));
// wait a bit for the analog-to-digital converter
// to stabilize after the last reading:
delay(2);
}

 

Aquí tengo los resultados que he obtenido de la carga y descarga de un condensador:

plotter

¿Pero en serio es útil?

Bueno, la cuestión es que podemos visualizar instantáneamente lo que hay en la entrada analógica, pero no está muy bien preparada gráficamente. Para empezar no hay un eje temporal, y la resolución que muestra el eje de amplitud, como veis, desde 0 a 5 voltios apenas pasando por 2.5, es mínima. Esto continua ocurriendo incluso con números grandes. Ni siquiera hay una cuadrícula o rejilla que ayude a medir a ojo.

Los nuevos datos que van apareciendo creo que tardan en desaparecer por la izquierda unos dos segundos, sin duda no es una gráfica para frecuencias "altas", ni variaciones pequeñas.

Por otro lado, se trata de un código en processing, es decir, podemos pasar del plotter que nos trae el IDE de arduino y programarnos el nuestro propio... Esto mejoraría mucho la interfaz y las posibilidades.

En definitiva, está curioso para visualizar rápidamente una señal lo suficientemente lenta y con amplitud adecuada, pero no podemos aproximar su valor muy bien, y de medir gráficamente la frecuencia ni hablar, porque no hay eje de tiempos (ni de número de muestra).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *