Hallo zusammen, versuche in meinem Pool verschiedene Temperaturen zu messen und diese in einer Excel-Tabelle Festzuhalten.
Nun habe ich das Problem, dass mir der Datenlogger nach ca 2 Std versagt.
Habe schon die Stromversorgung überprüft aber an der kann es auch nicht liegen.
Ich habe die Sensoren alle in Reihe geschaltet da die Spannungsversorgung nur über die Datenleitung zu instabil ist.
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <DS1307.h>
#include <DHT.h>
#include <OneWire.h>
#include "SI114X.h"
#include "Arduino.h"
byte Sensor1[8] = {0x28, 0x57, 0xD0, 0x79, 0xA2, 0x01, 0x03, 0x4F}; // Deklaration von Sensor-Adressen und -Namen werden mit dem Programm
char Name1[] = "1: "; // "adressenAuslesen" gefunden und müssen dann in die jeweiligen Plätze kopiert werden
byte Sensor2[8] = {0x28, 0xC5, 0x6B, 0x9D, 0x0B, 0x00, 0x00, 0xB6};
char Name2[] = "2: ";
byte Sensor3[8] = {0x28, 0xC7, 0x41, 0x9E, 0x0B, 0x00, 0x00, 0x15};
char Name3[] = "3: ";
byte Sensor4[8] = {0x28, 0xE8, 0xB2, 0x9B, 0x0B, 0x00, 0x00, 0xEE};
char Name4[] = "4: ";
byte Sensor5[8] = {0x28, 0x30, 0x73, 0x9B, 0x0B, 0x00, 0x00, 0x64};
char Name5[] = "5: ";
byte Sensor6[8] = {0x28, 0x74, 0xB6, 0x9C, 0x0B, 0x00, 0x00, 0xBB};
char Name6[] = "6: ";
byte Sensor7[8] = {0x28, 0x9A, 0x5C, 0x9D, 0x0B, 0x00, 0x00, 0x69};
char Name7[] = "7: ";
byte Sensor8[8] = {0x28, 0xD9, 0xAF, 0x9B, 0x0B, 0x00, 0x00, 0xA4};
char Name8[] = "8: ";
byte Sensor9[8] = {0x28, 0xC1, 0x6C, 0x9C, 0x0B, 0x00, 0x00, 0xB4};
char Name9[] = "9: ";
byte Sensor10[8] = {0x28, 0xBB, 0x09, 0x9E, 0x0B, 0x00, 0x00, 0x27};
char Name10[] = "10: ";
byte Sensor11[8] = {0x28, 0x9D, 0xFA, 0x9B, 0x0B, 0x00, 0x00, 0x4A};
char Name11[] = "11: ";
byte Sensor12[8] = {0x28, 0x0A, 0x7B, 0x9E, 0x0B, 0x00, 0x00, 0xF9};
char Name12[] = "12: ";
byte Sensor13[8] = {0x28, 0xB6, 0xA4, 0x9B, 0x0B, 0x00, 0x00, 0x33};
char Name13[] = "13: ";
byte Sensor14[8] = {0x28, 0x9F, 0x2D, 0x9B, 0x0B, 0x00, 0x00, 0x2B};
char Name14[] = "14: ";
byte Sensor15[8] = {0x28, 0x53, 0x58, 0x9B, 0x0B, 0x00, 0x00, 0x76};
char Name15[] = "15: ";
byte Sensor16[8] = {0x28, 0xDE, 0x09, 0x9E, 0x0B, 0x00, 0x00, 0x0F};
char Name16[] = "16: ";
byte Sensor17[8] = {0x28, 0xFE, 0x79, 0x9B, 0x0B, 0x00, 0x00, 0x55};
char Name17[] = "17: ";
OneWire DS1820(2); // Deklaration OneWire (Pin)
DS1307 clock; // Deklaration DS1307 als Echtzeituhr
DHT dht(3, DHT22); // Deklaration DHT-Sensor (Pin, Typ)
SI114X SI1145 = SI114X(); // Deklaration Lichtsensor
File dataFile; // Objekt vom Typ File erzeugen
int RelaisPin = 7 ; // Relais an Pin 7
int TasterPin = 10; // Taster für Relais an Pin 10
int empfindlichkeit = 200;
bool geschaltet = false; // Speicherung des Schaltzustandes
byte DEGREE_SYMBOL = 0;
byte degree[8] = {
0b00000,
0b00010,
0b00101,
0b00010,
0b00000,
0b00000,
0b00000,
0b00000
};
unsigned long WRITE_INTERVAL = 10000; // Messabstand in ms
unsigned long lastWrite = WRITE_INTERVAL;
float getTemperature(bool type_s, byte address[8])
{
// Temperaturwert des adressieren Sensors auslesen
// Dabei wird zwischen DS18S20 und den anderen unterschieden
byte data[12];
int16_t raw;
byte i;
DS1820.reset();
DS1820.select(address);
DS1820.write(0x44, 0); // Start Messung
delay(1000);
DS1820.reset();
DS1820.select(address);
DS1820.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++)
{
data[i] = DS1820.read();
}
raw = (data[1] << 8) | data[0];
if (type_s)
{
raw = raw << 3;
if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60); // Aufloesung bestimmen, bei niedrigerer Aufloesung sind
if (cfg == 0x00) raw = raw & ~7; // 9 Bit Aufloesung, 93.75 ms // die niederwertigen Bits undefinier -> auf 0 setzen
else if (cfg == 0x20) raw = raw & ~3; // 10 Bit Aufloesung, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 Bit Aufloesung, 375.0 ms // Default ist 12 Bit Aufloesung, 750 ms Wandlungszeit
}
return ((float)raw / 16.0);
}
void setup() {
Serial.begin(9600); // Serielle Schnittstelle initialisieren (Baud 9600)
int selectedChip = 4; // SD Karte initialisieren
if (!SD.begin(selectedChip)) {
Serial.println("SD-Card failed or is missing");
} else {
Serial.println("SD-Card initialized.");
}