sábado, 7 de marzo de 2015

USO DEL PROGRAMA PROCESSING PARA GRAFICAR DATOS CAPTURADOS CON UN MICROPROCESADOR ARDUINO

Alberto E. Villalobos Chaves
aewolframio@gmail.com

La captura de información analógica se ha facilitado y abaratado mucho con la aparición de los microprocesadores Arduino que nos permiten por ejemplo leer en tiempo real los valores de voltaje generados por una fotocelda o el cambio de resistencia  eléctrica producido por un sensor de temperatura, por poner solo dos ejemplos.

Una de las ventajas del Arduino es que las conexiones eléctricas no se hacen por soldadura sino por simple insertado de los conectores desde los elementos electrónicos externos (sensores, resitencias, capacitores, etc) hasta los puertos de la placa Arduino lo que permite armar y desarmar con facilidad prototipos del circuito que se quiera desarrollar.

Otra de las características es que se puede programar el procesador del Arduino para que capture y procese la información de la forma en que más nos convenga para nuestros propósitos e incluso interactuar con esta a través de una Interfase Gráfica de Usuario (GUI).

Es precisamente de una GUI que he diseñado para graficar los datos capturados por el Arduino y que he llamado "DatArduino 1.02" de lo que trata esta entrada a mi blog.

Para ejemplificar el uso de DatArduino 1.02 capturaremos y procesaremos los datos de voltaje relacionados con un sensor de temperatura de un radiador automotriz (Figura 1).

Figura 1: Sensor de temperatura de un radiador automotriz

El circuito utilizado en este ejemplo, que se esquematiza en la Figura 2 y se muestra físicamente en la Figura 3, se basa en la propiedad del sensor de temperatura de cambiar su resistencia eléctrica cuando varía la temperatura.


Figura 2: Esquema del circuito divisor de corriente, así como las conexiones al sensor de temperatura y al Arduino

Para poder aprovechar este fenómeno utilizamos un circuito divisor de voltaje en el que el voltaje suministrado por el puerto de poder del Arduino (5V) es dividido por una resistencia (2.2 k ohms) entre el sensor de temperatura y el puerto analógico del Arduino (A0).

A mayor temperatura a la que es sometido el sensor, menor su resistencia lo que afecta la razón de división de voltaje y por tanto la señal de voltaje que es capturada por el puerto analógico del Arduino.

 Figura 3: Fotografía del sistema Sensor-Circuito Divisor de Voltaje-Arduino

Para instruir al Arduino los parámetros de captura y transmisión de los datos a la computadora se escribió un pequeño script ("Abrir Puerto Analógico") utilizando la versión 1.0.3 del IDE de Arduino.

La interfaz GUI diseñada para graficar, interaccionar y salvar la información capturada (DatArduino 1.01) se programó utilizando "Processing" (versión 2.0b8, se ha probado también en versión 2.2.1) y la librería G4P (Builder Tool V2.0.0) de creación de GUI para Processing. (Figura 4).

Figura 4: Interfaz Gráfica de Usuario DatArduino 1.0 utilizada para graficar, manipular y salvar la información capturada por un procesador Arduino

Comandos y Salidas del Programa:

1-
  • El botón "Iniciar" le indica al programa buscar los puertos seriales disponibles en la computadora y seleccionar uno que esté libre para iniciar la graficación de la información digital transmitida por el Arduino.
  • El campo de texto "Nombre del Archivo" es para escribir el nombre que le queremos dar al archivo capturado, mismo que se guardará en formato txt, dat y csv en la carpeta donde esté el archivo pde DatArduino_1_0.pde, si se corrió con Processing o el archivo DatArduino_1_0.exe , si se utilizó la versión exportada a windows que esta en la carpeta "application.windows32". Si no se selecciona nombre el programa por default asignará el nombre "Nemo".
  • El botón "Capturar" inicia la captura reseteando el tiempo a cero.
  • El botón "Salvar" salva los datos capturados con el nombre seleccionado en los formatos txt, dat y csv según se indicó anteriormente.
  • El botón "Salir" termina el programa.
2-
  • El campo "Tiempo Final de Captura (min):" es el tiempo al que el programa salvará automáticamente los datos con el nombre de archivo seleccionado. Por default está seleccionado 30 minutos pero en cualquier momento que se desee salvar, se puede usar el botón "Salvar" para guardar la captura. 
  • Se indica también en este sector del GUI el voltaje medido en milivoltios, el número de mediciones o datos capturados y el tiempo transcurrido desde que se accesó por primera vez al puerto serial o desde que se oprimió el botón "Capturar", así como la razón de captura en datos por segundo.
3-
  • La perilla de "Escala"  amplifica la señal graficada sin alterar el valor capturado que será el que se salve.
  • La perilla "Zero" cambia la posición vertical de la gráfica sin alterar el valor capturado.

4-
  • El control de deslizamiento "Exp.Horizontal" expande la escala en sentido horizontal sin alterar el valor capturado.
  • El control de deslizamiento "Despla.Horizontal" desplaza horizontalmente el gráfico sin alterar el valor capturado.
  • El botón "Reset" regresa los valores de los controles de deslizamiento a punto inicial.


En el  Video 1 se observa la captura de los datos que genera el sensor de temperatura al tocarlo con la mano y las manipulaciones a la forma de la gráfica al utilizar los comandos mostrados anteriormente. 

Video 1: Graficación de los datos capturados con un microprocesador Arduino de un sensor de temperatura automotríz en el que se observa el uso de los comandos de DatArduino 1.0

La configuración Arduino - GUI expuesta es lo suficientemente funcional como para permitir realizar proyectos de carácter científico en los que se requiera registrar datos generados por sensores de los muchos que ahora hay disponibles para los procesadores Arduino, además es lo suficientemente versátil como para programarle nuevas funcionalidades como podría ser el filtrado de los datos a fin de eliminar ruido, o el análisis de los datos por procedimientos matemáticos.

Referencias
  1. http://arduino.cc/en/pmwiki.php?n=Tutorial/ToComputer
  2. http://arduino.cc/en/pmwiki.php?n=Tutorial/Graph
  3. http://espaciodecesar.com/2013/04/28/cinco-termmetros-a-la-vez-con-arduino/
  4. http://www.crcibernetica.com/sensors/
Descarga del código y la aplicación (Dropbox):

Versión actual: DatArduino 1.03
  1. Abrir Puerto Analógico
  2. Builder Tool V2.0.0
  3. DatArduino 1.03
    • Se adicionó un combo para cambiar la razón de baudios para hacerla coincidir con la seleccionada para el Arduino
Versiones anteriores (Dropbox)
  1. DatArduino 1.02
    • Se adicionó un combo para cambiar la polaridad del gráfico, si bien los valores permancen inalterados.
  2. DatArduino 1.01 
    • Se adicionó un menú combo para seleccionar el puerto serial disponible ([0], [1], [2], [3] , [4] o [5]) en caso de que no corresponda a la opción [0] que está predeterminada por defecto.
  3. DatArduino 1.0

1 comentario:

Ingeniero dijo...

Hola, estoy desarrollando un curso de processing para android, orientado a proyectos con arduino, el enlace es:

https://www.youtube.com/channel/UCyWRJgfJMu3fiW4xO0FmB1w/videos?sort=dd&shelf_id=0&view=0