INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Messfehler
16.11.2014, 00:32
Beitrag #9
RE: Messfehler
Hallo Joe
Hier mein Code.

//#include <BMP180.h> // scl pin4 sda pin5
#include <SD.h> //cs pin4/ mosi pin11/ miso pin12/ sck pin13
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h" //scl pin4 sda pin5
RTC_DS1307 RTC;
#define ONE_WIRE_BUS 2 // DS18B20 an Pin 2 angeschlossen
#define TWO_WIRE_BUS 3
OneWire oneWire1(ONE_WIRE_BUS); //aktiv
OneWire oneWire12(TWO_WIRE_BUS); //reserve
LiquidCrystal_I2C lcd(0x27,20,4);
//#define I2C_ADDRESS 0x77
DallasTemperature sensors1(&oneWire1);
/*DeviceAddress hobby_Thermometer = {
0x28, 0x8A, 0xF2, 0x1D, 0x5, 0x0, 0x0, 0x8E }; //heizung // Versuch mit INDEX hat aber den gleichen fehler
DeviceAddress heizung_Thermometer = {
0x28, 0x46, 0xC0, 0x34, 0x5, 0x0, 0x0, 0x88}; //hobby // -127
DeviceAddress keller_Thermometer = {
0x28, 0xD8, 0xD9, 0x34, 0x5, 0x0, 0x0, 0xA5 }; //keller
DeviceAddress garage_Thermometer = {
0x28, 0x96, 0x36, 0x35, 0x5, 0x0, 0x0, 0xF9}; //garage
DeviceAddress aussen_Thermometer = {
0x28, 0x6C, 0x14, 0x35, 0x5, 0x0, 0x0, 0x3F }; //aussen
//
#define I2C_ADDRESS 0x77
*/
File archiv;
int s = 1;
const int csPin=10;
//
void setup ()
{
Serial.begin(9600);
pinMode(10, OUTPUT);
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
Serial.println("Erstelle haus.txt...");
archiv = SD.open("haus.txt", FILE_WRITE);
archiv.close();
//-----------------------------------------------------------
lcd.init();
lcd.backlight();
lcd.clear();
sensors1.begin();
/*sensors1.setResolution(hobby_Thermometer, 9);
sensors1.setResolution(heizung_Thermometer, 9);
sensors1.setResolution(keller_Thermometer, 9);
sensors1.setResolution(garage_Thermometer, 9);
sensors1.setResolution(aussen_Thermometer, 9);
*/
}
//**********************************************************
void loop()
{
delay(5000);
sensors1.requestTemperatures();
/* float temphobby = sensors1.getTempC(hobby_Thermometer);
float tempheizung = sensors1.getTempC(heizung_Thermometer);
float tempkeller = sensors1.getTempC(keller_Thermometer);
float tempgarage = sensors1.getTempC(garage_Thermometer);
float tempaussen = sensors1.getTempC(aussen_Thermometer);
//************************************************************
*/
s++;
// lcd.clear();
heizung();
hobby();
garage();
keller();
aussen();
speichern();

}
//***************************************************
void hobby()
{
sensors1.requestTemperatures();
// float temphobby = sensors1.getTempC(hobby_Thermometer);
// delay(500);
lcd.setCursor(0,0);
lcd.print("H ");
lcd.print(sensors1.getTempCByIndex(2));
if(sensors1.getTempCByIndex(2) < 7 )
{
hobby(); // bei fehler -127 zurück
}
else
{
Serial.print("Hobby Temperatur ist: ");
Serial.println(sensors1.getTempCByIndex(2));
}
}
//**************************************************
void heizung()
{
sensors1.requestTemperatures();
// float tempheizung = sensors1.getTempC(heizung_Thermometer);
//delay(500);
lcd.setCursor(8,0);
lcd.print("H ");
lcd.print(sensors1.getTempCByIndex(3));
if(sensors1.getTempCByIndex(3) < 7)
{
heizung();// bei fehler -127 zurück
}
else
{
Serial.print("Heizung Temperatur ist: ");
Serial.println(sensors1.getTempCByIndex(3));
}
}
//***********************************************
void keller()
{
sensors1.requestTemperatures();
// float tempkeller = sensors1.getTempC(keller_Thermometer);
// delay(500);
lcd.setCursor(0,1);
lcd.print("K ");
lcd.print(sensors1.getTempCByIndex(0));
if(sensors1.getTempCByIndex(0) < 7)
{
keller();// bei fehler -127 zurück
}
else
{
Serial.print("Keller Temperatur ist: ");
Serial.println(sensors1.getTempCByIndex(0));
}
}
//*************************************************
void garage()
{
sensors1.requestTemperatures();
//float tempgarage = sensors1.getTempC(garage_Thermometer);
// delay(500);
lcd.setCursor(8,1);
lcd.print("G ");
lcd.print(sensors1.getTempCByIndex(4));
if(sensors1.getTempCByIndex(4) < 7)
{
garage();// bei fehler -127 zurück
}
else
{
Serial.print("Garage Temperatur ist: ");
Serial.print(sensors1.getTempCByIndex(4));
Serial.println();
}
lcd.clear();
}
//*****************************************************
void aussen()
{
sensors1.requestTemperatures();
// float tempaussen = sensors1.getTempC(aussen_Thermometer);
// delay(500);
lcd.setCursor(0,2);
lcd.print("A ");
lcd.print(sensors1.getTempCByIndex(1));
if(sensors1.getTempCByIndex(1) < 1)
{
aussen();// bei fehler -127 zurück
}
else
{
Serial.print("Aussen Temperatur ist: ");
Serial.println(sensors1.getTempCByIndex(1));
Serial.println(" ");
}
}
void speichern()
{
DateTime now = RTC.now();
// sensors1.requestTemperatures();
File archiv =SD.open("haus.txt",FILE_WRITE);
archiv.print(now.hour());
archiv.print(":");
archiv.print(now.minute());
archiv.print(" ");
archiv.print(sensors1.getTempCByIndex(0)); //keller
archiv.print(" ");
archiv.print(sensors1.getTempCByIndex(1)); //aussen
archiv.print(" ");
archiv.print(sensors1.getTempCByIndex(2)); //hobby
archiv.print(" ");
archiv.print(sensors1.getTempCByIndex(3)); //heizung
archiv.print(" ");
archiv.print(sensors1.getTempCByIndex(4)); //garage
archiv.println();
archiv.close();
Serial.println(" Speichern ");
// }
}

//*************************************************************
void printSerialDigits(int digits)
{
if (digits < 10 )
Serial.print("0");
Serial.print(digits);
}
//***************************************************************

Hier der Code. Habe heute auf 3 Draht umgestellt jedoch der Fehler bleibt. Die Leitung geht an der Wärmepumpe vorbei könnte das einen Einfluss haben?

Gruss
Pedro
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2014, 05:03 (Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2014 05:10 von JoeDorm.)
Beitrag #10
RE: Messfehler
Hallo,

der Code sieht ja ok aus(grob überflogen). Habe gesehen, das für jeden Messpunkt im Grunde der gleiche Code genommen und angepaßt wurde.
Lassen sich denn mit einem Adressprogramm über den Bus die Adressen finden?
Wenn ja, dann sollte es auch mit der Kommunikation klappen. Wenn nein, würde ich auf defekte Sensoren tippen, oder die Kabellänge paßt nicht.
Man könnte ggf. auch mal versuchen die Kabellängen um z.B. 10cm länger zu machen.
Wenn es dann bei einem zuvor behinderten Sensor doch klappt, dann müßte man sich im Sinne stehender Wellen die Kabellängen ansehen.

Habe gelesen, das der Fehler sporadisch bei jedem der Sensoren mal auftritt.
Wenn dies so ist, und mitunter jeder Sensor auch mal akzeptable Werte bringt,
dann würde ich bei -127 den letzten korrekten Messwert annehmen und den -127 verwerfen.
Alternativ oder zusätzlich könnte man auch mehrere Messungen machen und nur diejenigen verwerten, die inetwa passen.
Z.B. 10 Messungen machen, diejenigen die gut sind, z.B. 5 Stück dann addieren und den Mittelwert nehmen.
Den Rest wegwerfen.

Es ist möglich, das z.B. Dect-Telefone oder sonstiges Funkzeugs, wo auch Computer zugehören, in die Leitung reinstreuen.
Mobiltelefone können auch ganz schön Krach machen/ einstreuen.
Das Kabel ist ggf. die Antenne.

Daher erstmal es mit mehreren Messungen versuchen.
Was meinst Du dazu?

Gruß Joe

Unser Projekt Rolleyes http://global-science-circle.net http://global-science-circle.org http://global-science-circle.info UND http://radio-gsc1.info
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 23:40
Beitrag #11
RE: Messfehler
Hallo Joe
Ich habe gute nachrichten. Alles neu und etwas professioneller verkabelt. Keine Fehler mehr.
Gruss
Pedro
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste