miércoles, 25 de noviembre de 2015

Datalogger basado en SD Card, RTC y Arduino.


Introducción 

Este proyecto tiene como fin, tener una plataforma común para guardar datos de diferentes fuentes análogas como lo son luz, voltaje, temperatura, humedad. Este será temporizado mediante el uso de un RTC y almacenado en un archivo .CVS dentro de una tarjeta SD. 

Elementos

  • Arduino Uno.
  • Datalogger de adafruit [1] , similar o clon. 
  • Opamp MAX492 [2], como buffer 
  • Referencia de voltaje MCP1541 [3], (~4.096V, 4.1079V real). 
  • Reloj tiempo real DS1307 [4], libreria utilizada [5], 
  • Tarjeta SD, cualquiera puede funcionar, libreria de arduino [6].
  • Boton de comando, usa del libreria [7].
  • (1) Capacitor, 1µF 
  • (2) terminal, dos posiciones, para entradas
  • (1) Base, 8 posiciones
  • (2) Capacitor, 100nF
Recomendación: Pueden adquirir tanto arduino Uno o el shield de datalogger por menos de $4 dolares cada uno, los pueden encontrar en EBAY, quizas el tiempo de entrega es largo pero vale la pena si no les urge tener el material.

Los elementos mencionados se interconectan como se muestra en la siguiente imagen.

Diagrama del datalogger.
Funcionamiento
command_button -  Presionar dos veces para iniciar el logging, ya sea que sea por primera vez o cuando el datalogger este en pausa. Presionar y mantener por medio segundo para pausar el logging.

running_led - Parpadea mientras el logging este proceso, estará prendido (solido) cuando el logging este en pausa.

newfile_led - Realizara una secuencia cada vez que un nuevo archivo sea creado.

Reset o prendido - Cada vez que se presione el botón de reset, incluido con arduino, o arduino sea prendido; se creara un nuevo archivo de logging y newfile_led parpadeara.


Código

El código fue escrito y compilado en codebender el 25/nov/2015. Posiblemente necesites instalar el plugin para poder verlo. Si gustas ver el código directamente en la pagina puedes seguir el siguiente enlace sketch:192552.

Alcances técnicos

Voltaje de alimentación:
5V por entrada USB
hasta 12V por jack de alimentación
Voltaje de entrada:
(VCC + 0.3V) a (VEE - 0.3V), donde VCC es ~5V y VEE es ~0.
Lo anterior aplica para las dos entradas.


Discusión general

Ahora mismo el buffer que se agrega a la entrada analoga es suficiente para no afectar a arduino en caso de sobrevoltaje, en el caso el seria el mismo buffer que se dañaría. Ahora bien decidí utilizar una referencia de voltage por que pudiera haber variaciones en cuanto a la alimentación que arduino pudiera tener mediante un adaptador o una computadora (usb); haciendo uso de una referencia externa podemos evitarnos este efecto mejorando un poco la precisión de nuestro sistema. También se pude hacer uso de la referencia interna de nuestro arduino pero decidí esta debido a que es muy cercana a los 5V con que nuestro arduino se alimenta, de otro modo necesitaríamos casi obligatoriamente hacer uso de un divisor de voltaje.Me gustaría seguir posteando en este blog los avances y locuras que se me ocurran al respecto, supongo en las siguientes entradas analizare como usar un divisor de voltaje para adecuar una señal de entrada de mas de 5V; así como también, analizar algún algoritmo de calibración.Deja tus comentarios en caso de dudas o recomendaciones.


Mejoras

- Calibrar las entradas del buffer, aunque el circuito es muy sencillo
para mediciones mas precisas es necesario realizar un ajuste de magnitud
y offset.

- Mas muestras por evento y algún algoritmo para promediado.

Rerencias
[1] https://learn.adafruit.com/adafruit-data-logger-shield
[2] https://datasheets.maximintegrated.com/en/ds/MAX492-MAX495.pdf
[3] http://ww1.microchip.com/downloads/en/DeviceDoc/21653C.pdf
[4] http://datasheets.maximintegrated.com/en/ds/DS1307.pdf
[5] https://github.com/adafruit/RTClib/ 
[6] https://www.arduino.cc/en/Reference/SD 
[7] https://code.google.com/p/clickbutton/wiki/Usage

Por cramso. 11/25/15

No hay comentarios:

Publicar un comentario