viernes, 3 de julio de 2015

Dataloger Sensor de luz (LDR)


A diferencia de la publicación de Abril, acá se muestra como integrar una tarjeta micro-SD para almacenar los datos medidos

Componentes


Diagrama de Conexión

Figura 1: Diagrama de conexión elaborado con Fritzing


Foto Final

Figura 2: Foto del sensor de luz, tarjeta SD y reloj conectados a una placa Arduino  


Código de Lectura

#include <DS1302.h> //libreria rejoj
#include <SD.h> // libreria SD
//en MEGA
//Pines GND puenteados
//Pines +5 y +3.3 puenteados a 5v
//cs 53
//sck 52
//mosi 51
//miso 50
// en UNO
//
//CS - 10
//MOSI- 11,
//MISO -12,
//CLK - 13,
 

// declaracion existencia de un archivo
File dataFile; 

 
// pines del reloj para ocupar la libreria
DS1302 rtc(2, 3, 4); //RST DAT CLK
 

void setup(){

// Configuracion de reloj inicial (hora Chile o UTC) (solo la primera vez)
// rtc.setDOW(SUNDAY);  // Set Day-of-Week to FRIDAY
// rtc.setTime(19, 20, 0);  // Set the time to 12:00:00 (24hr format)
rtc.setDate(15, 3, 2015); 


//pines de led y switch funcionamiento 
pinMode(6, OUTPUT);
pinMode(8, INPUT); // sets the digital pin as output
 

DS1302 rtc(2, 3, 4); //RST DAT CLK
rtc.halt(false);
rtc.writeProtect(false);


Serial.begin(9600);
pinMode(10, OUTPUT);
Serial.print("Iniciando SD card...");
pinMode(13, OUTPUT);
digitalWrite(10, HIGH);
 


if (!SD.begin(10)) {
  Serial.println("Fallo comunicacion o no existe SD");
  digitalWrite(10, HIGH);
  return;
  }
 

digitalWrite(10, LOW);
Serial.println("SD Iniciada.");

// limpiado de SD
if (SD.exists("datalog.txt")){

   Serial.println("archivo existe, se borrara");
   SD.remove("datalog.txt");
   }
else{
  Serial.println("el archivo no existe, se creara..");
  }


// primera linea comentarios de los datos
dataFile = SD.open("datalog.txt", FILE WRITE);
 

if (dataFile) {
Serial.println("Escribiendo Informacion...");
dataFile.println(" % Python ready data");
dataFile.println(" % Fecha Hora A0 A1");
Serial.println("dia mes ano hora min sec A0 A1");
 

dataFile.close();
}
else {
Serial.println("error opening test.txt");
}
 

}
 

void loop(){
 

digitalWrite(6,LOW);
while ( digitalRead(8)== HIGH){
digitalWrite(6,HIGH);
// numero de sensores
 

String dataString = ""; // creacion string
 

//RELOJ obtencion de fecha y su agregado al string que se guardara en la fila
dataString+= ((rtc.getTime()).date);
dataString+=" ";
dataString+= ((rtc.getTime()).mon);
dataString+=" ";
dataString+= ((rtc.getTime()).year);
dataString+=" ";
dataString+= ((rtc.getTime()).hour);
dataString+=" ";
dataString+= ((rtc.getTime()).min);
dataString+=" ";
dataString+= ((rtc.getTime()).sec);
dataString+=" ";
 

// creacion de columnas,una para cada pin analogo y lectura de su valor
int sensor1 = analogRead(1);
int a1=(sensor1*(5.0/1023))*100;
dataString += String(a1);

dataFile = SD.open("datalog.txt", FILE WRITE);
if (dataFile) {
dataFile.println(dataString);
delay(1000);
dataFile.close();
Serial.println(dataString);

}
else {
Serial.println("Fallo comunicacion.txt");
Serial.println("Revise conecxion");
delay(1000);
}

}
}




Datos en Pantalla





Figura 3: Pantalla que muestra la lectura y almacenamiento de datos del tiempo y sensor luz.