Pages: 1 2 [3]   Go Down
Author Topic: Neuling braucht hilfe von der Pike auf  (Read 2346 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin allerseits,

nun habe ich doch mal was hingebastelt aber irgendwie will das nicht so richtig würde mich sehr freuen wenn mir einer Helfen kann.
Hier mal der Quellcode:
Code:
#include <OneWire.h>

// OneWire DS18B20 Temperature Example
//
int Relay = (22);
OneWire  ds(23);  // on pin 10

void setup(void) {
  pinMode(Relay, OUTPUT);
   Serial.begin(9600);
}

void loop(void) {
   byte i;
   byte present = 0;
   byte type_s;
   byte data[12];
   byte addr[8];
   float celsius, fahrenheit;

   if ( !ds.search(addr)) {
     
     delay(250);
     return;
   }

   type_s = 0; // konstant festgelegt auf Sensor mit Chip = DS18B20
   // erkennung vom sensor
   switch (addr[7]) {
     case 0xC8:
       Serial.println("  Kessel ");
       break;
     case 0xE4:
       Serial.println("  Vorlauf ");
       break;
     case 0xD9:
       Serial.println("  Ruecklauf ");
       break;
     default:
       Serial.println("   Unbekannter Sensor.");
       return;
   }

   ds.reset();
   ds.select(addr);
   ds.write(0x44,1);         // start conversion, with parasite power on


   delay(1000);     // maybe 750ms is enough, maybe not
   // we might do a ds.depower() here, but the reset will take care of it.

   present = ds.reset();
   ds.select(addr);
   ds.write(0xBE);         // Read Scratchpad

   
   
   
   for ( i = 0; i < 9; i++) {           // we need 9 bytes
     data[i] = ds.read();
     
     Serial.print(" ");
   }
   

   // convert the data to actual temperature

   unsigned int raw = (data[1] << 8) | data[0];
   if (type_s) {
     raw = raw << 3; // 9 bit resolution default
     if (data[7] == 0x10) {
       // count remain gives full 12 bit resolution
       raw = (raw & 0xFFF0) + 12 - data[6];
     }
   } else {
     byte cfg = (data[4] & 0x60);
     if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
     else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
     else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
     // default is 12 bit resolution, 750 ms conversion time
   }
   celsius = (float)raw / 16.0;
   
   Serial.print("  Temperatur = ");
   Serial.print(celsius);
   Serial.print(" Celsius, ");

   if (0xC8 >=25) //abfrage: ist Temperatur über 25°C (funktioniert nicht)
   {
     digitalWrite(Relay, HIGH); //wenn ja Relay an
   }
   else
   {
     digitalWrite(Relay, LOW);   // wenn nein aus
 
   }
   
}


die if funktion funktioniert nicht richtig wenn der Sensor unter 25°C geht schaltet das Relay nicht ab

viele Grüße

Ulf Baumann
Logged

Offline Offline
Sr. Member
****
Karma: 10
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hall Ulf,
ich persönlich mag diese Programmierung mit den ganzen "Hieroglyphen" wie  0xC8 und so gar nicht weil man das nicht
vernünftig lesen kann.
Es gibt für die 18B20 eine DallasTemperature.h, dann kann man mit sensors.getTempC die Temperatur direkt in °C auslesen
und diese auch abfragen.
Das ist meiner Meinung nach viel einfacher und auch besser zu verstehen.
gruß
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Maverick,

leider bin ich eher noch der Dau in sachen Programmierung könntest du mir weiterhelfen wie das ganze dann aussehen muß ??? damit ich auch die zuordnung sicherstellen kann ???

Viele Grüße

Ulf
Logged

Offline Offline
Sr. Member
****
Karma: 10
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Ulf,
wenn du willst kann ich dir eine komplette Programmierung schicken. Diese kann folgendes: Steuerung der Gasheizung, einer Solaranlage sowie eines wasserführenden Kachelofens.
Die Programmierung ist sehr ausführlich auskommentiert, da kannst du sicherlich vieles verwenden.
Schick mir mal deine Mail Adresse
Gruß
Bernward
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mein lieber mann das ist mal dick aufgetragen!!!!

Hallo allerseits ich habe mich leider länge nicht melden können da ich seit April einen neuen Arbeitgeber habe wo ich jetzt erstmal sehr stark eingebunden war.

Nun legt sich aber der anfangsstreß und ich kann mich wieder den wesentlichem widmen.

Danke nochmal für eure bisherige unterstützung ich hoffe ich kann auch in zukunft auf euch zählen!!!

MfG

der Junkie
Logged

Pages: 1 2 [3]   Go Up
Jump to: