Estoy fabricando un datalogger para registrar milivots con arduino con un convertidor analogico que es el ads1115 y con termopares tipo t, pero hay un problema al registrar los datos, no registra los datos correcto. alguna solucion?
gracias.
#include <Adafruit_ADS1X15.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <RTClib.h>
// Crear objeto de la clase
Adafruit_ADS1115 ads;
RTC_DS1307 rtc;
#define SSpin 10
File logFile;
// Factor de escala. Por defecto el valor de referencia es 6,144V
// El factor de escala de esta referencia es de 0,1875mV
const float multiplier = 0.0078125;
void setup(void){
Serial.begin(9600);
//RTC
if (! rtc.begin()) {
Serial.println("Modulo RTC no encontrado !"); //si falla la inicializacion del modulo muestra mensaje de error
while (1);
}
//rtc.adjust(DateTime(__DATE__, __TIME__));
//TARJETA SD
Serial.println("Inicializando tarjeta ..."); // texto en ventana de monitor
if (!SD.begin(SSpin)) { // inicializacion de tarjeta SD
Serial.println("fallo en inicializacion !");// si falla se muestra texto correspondiente y
return; // se sale del setup() para finalizar el programa
}
Serial.println(F("Iniciado correctamente"));
//ADS1115
// Factor de escala
ads.setGain(GAIN_SIXTEEN);
// Iniciar el ADS1115
ads.begin();
}
void loop(void){
//ABRIR O CREAR ARCHIVO
logFile = SD.open("data.txt", FILE_WRITE);//abrimos el archivo
DateTime fecha = rtc.now(); // funcion que devuelve fecha y horario en formato
// DateTime y asigna a variable fecha
//ADS1115
// Obtener el diferencial
short diferencia_0_1 = ads.readADC_Differential_0_1();
short diferencia_2_3 = ads.readADC_Differential_2_3();
// Convertir en voltios
float milivolts_1 = (diferencia_0_1 * multiplier);
float milivolts_2 = (diferencia_2_3 * multiplier);
Serial.print(fecha.year()); // funcion que obtiene el dia de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.month()); // funcion que obtiene el mes de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.day()); // funcion que obtiene el año de la fecha completa
Serial.print(" "); // caracter espacio en blanco como separador
Serial.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.second()); // funcion que obtiene los segundos de la fecha completa
Serial.print(" , "); // caracter dos puntos como separador
// Serial.print("Sensor 1");
// Serial.print("=");
Serial.print(milivolts_1, 4);
Serial.print(" ,");
Serial.print(milivolts_2, 4);
Serial.println(" ");
logFile.print(fecha.year()); // funcion que obtiene el dia de la fecha completa
logFile.print("/"); // caracter barra como separador
logFile.print(fecha.month()); // funcion que obtiene el mes de la fecha completa
logFile.print("/"); // caracter barra como separador
logFile.print(fecha.day()); // funcion que obtiene el año de la fecha completa
logFile.print(" "); // caracter espacio en blanco como separador
logFile.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa
logFile.print(":"); // caracter dos puntos como separador
logFile.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa
logFile.print(":"); // caracter dos puntos como separador
logFile.print(fecha.second()); // funcion que obtiene los segundos de la fecha completa
logFile.print(" ,"); // caracter dos puntos como separador
// logFile.print("Sensor 1");
// logFile.print("=");
logFile.print(milivolts_1, 4);
logFile.print(" ,");
logFile.print(milivolts_2, 4);
logFile.println(" ");
logFile.close(); //cerramos el archivo
delay(2000);
}