Seite 34 von 42

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 12.11.2020, 21:29
von jp112sdl
Daimler hat geschrieben:
12.11.2020, 19:54
setze diese Version bitte nicht als Standard.
Es ist jedoch das OCCU-Derivat, welches ich im Einsatz habe und unter welchem ich auch nur testen kann.

Das Problem von tüftler55 ist zum Glück scheinbar nur ein Ausrutscher gewesen.
Ich kann mich aber noch an meine CCU2-Zeiten erinnern, wo ich das auch schon einmal hatte.

Grundsätzlich ist es nun mal so, dass ich das hier nur als Hobby betreibe und auch gern meinen Code bereitstelle, der in meiner Umgebung funktioniert.

Anregungen, wie man dieses Addon-Install/ReGaHss race-condition Problem bei der originalen CCU-Firmware umgehen kann, nehme ich liebend gern an.

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 11.01.2021, 16:56
von Bengel00
Hallo,
ich wollte für ein Projekt Jeromes HB-UNI-Sen-TEMP-DS18B20 Sensor mit 2 Fühlern nachbauen. Allerdings benötige ich Sensoren die bis 110°C messen könen und zum einstecken in eine Tauchhülse geeignet sind. Dann dachte ich an den HB-UNI-Sen-TEMP-MAX6675 alerdings gibt es die Fühler wieder nicht Tauchhülsentauglich.
Hat jemand ein Tip für mich?

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 11.01.2021, 18:24
von wok1415
Der HB-UNI-Sen-TEMP-DS18B20 mit 8 PT1000 Sensoren erkennt manchmal beim Start die angeschlossenen Sensoren nicht (im Arduino). Die Sensorwerte werden dann mit 0 ausgegeben.

Hat jemand vielleicht einen Hinweis für mich, woran das liegen könnte ?

Die Spannungsversorgung läuft zur Zeit über einen FTDI Adapter. Das Zusammenspiel mit einer pivccu3 und dem JP-HB-Devices addon funktioniert - es werden manchmal entsprechend nur die Offset-Werte angezeigt.

Code: Alles auswählen

AskSin++ V4.1.2 (Jan 11 2021 12:06:47)
12:07:14.863 -> ID: F30101  Serial: UNITEMP001
12:07:14.901 -> Address Space: 32 - 358
12:07:14.901 -> CC init1
12:07:14.901 -> CC Version: 14
12:07:14.901 ->  - ready
12:07:14.901 -> iVcc: 3236
12:07:14.901 -> Config Freq: 0x2165B2
12:07:14.901 -> Found 0 DS18B20 Sensors
12:07:14.934 -> Config Changed List0
12:07:14.934 -> LOW BAT Limit: 22
12:07:14.934 -> Sendeintervall: 300
12:07:14.934 -> OFFSET: 2
12:07:14.934 -> OFFSET: 6
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 4
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 6
12:07:20.113 -> Temperaturen: | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
12:07:20.150 -> <- 16 01 A2 53 F30101 00FFFF 00 41 00 02 42 00 06 43 00 05 44 00 05  - 114
12:07:20.295 -> -> 0A 01 80 02 00FFFF F30101 00  - 239
12:07:20.295 -> waitAck: 01
12:07:20.565 -> <- 16 02 84 53 F30101 00FFFF 00 45 00 05 46 00 04 47 00 05 48 00 06  - 532
12:10:24.083 -> AskSin++ V4.1.2 (Jan 11 2021 12:06:47)
12:10:24.083 -> ID: F30101  Serial: UNITEMP001
12:10:24.117 -> Address Space: 32 - 358
12:10:24.117 -> CC init1
12:10:24.117 -> CC Version: 14
12:10:24.117 ->  - ready
12:10:24.117 -> iVcc: 3236
12:10:24.117 -> Config Freq: 0x2165B2
12:10:24.255 -> Found 8 DS18B20 Sensors
12:10:24.255 -> Config Changed List0
12:10:24.255 -> LOW BAT Limit: 22
12:10:24.255 -> Sendeintervall: 300
12:10:24.255 -> OFFSET: 2
12:10:24.255 -> OFFSET: 6
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 4
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 6
12:10:30.256 -> Temperaturen: | 228 | 221 | 218 | 232 | 220 | 220 | 222 | 223 | 
12:10:30.289 -> <- 16 01 A2 53 F30101 00FFFF 00 41 00 E6 42 00 E3 43 00 DF 44 00 ED  - 1042
12:10:30.424 -> -> 0A 01 80 02 00FFFF F30101 00  - 1167
12:10:30.424 -> waitAck: 01
12:10:30.701 -> <- 16 02 84 53 F30101 00FFFF 00 45 00 E1 46 00 E0 47 00 E3 48 00 E5  - 1460

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 13.01.2021, 13:06
von Jack01
Moin,
auch ich benötige heute mal wieder einen Tip von den Experten...

Ich habe 4 Sensoren angeschlossen. Auf dem LCD möchte ich nur die 4 Sensoren mit einem eindeutigem Text anzeigen.
Dazu habe ich das Programm entsprechend angepasst.
Ich bin mir aber nicht sicher, ob meine Anpassungen richtig sind und ob es evtl. auswirkungen auf die Datenübertragung zur CCU haben könnte (ich kann das noch nicht testen, da mein Sendemodul noch nicht eingetroffen ist) und ob ich die Zeilen:
String s_temp = " --.-";
if ((i + 1) <= sensorcount) {
s_temp = (String)((float)sensors.temperature() / 10.0);
s_temp = s_temp.substring(0, s_temp.length() - 1);
if (sensors.temperature() < 1000 && sensors.temperature() >= 0) s_temp = " " + s_temp;
}


auch entfernen kann.
Ich habe den geänderten Teil des Sketches mal angehängt.

Gruß

Hans-Jürgen

Code: Alles auswählen

          Ds18b20::measure(sensors, sensorcount);
          DPRINT(F("Temperaturen: | "));
          for (int i = 0; i < MAX_SENSORS; i++) {
            DDEC(sensors[i].temperature()); DPRINT(" | ");
#ifdef USE_LCD

//ab hier meine Änderungen

            String s_temp = " --.-";
            if ((i + 1) <= sensorcount) {
              s_temp = (String)((float)sensors[i].temperature() / 10.0);
              s_temp = s_temp.substring(0, s_temp.length() - 1);
              if (sensors[i].temperature() < 1000 && sensors[i].temperature() >= 0) s_temp = " " + s_temp;
            }
 //           String disp_temp = String(i + 1) + ":" + s_temp + (char)223 + "C ";


            lcd.setCursor(0, 0);
            lcd.print("Vorlauf  : ");
            lcd.print((String)((float)sensors[0].temperature() / 10.0));
            lcd.setCursor(16, 0);
            lcd.write(223);            
            lcd.print("C  ");

            lcd.setCursor(0, 1);
            lcd.print("R");
            lcd.write(245);
            lcd.print("cklauf : ");
            lcd.print((String)((float)sensors[1].temperature() / 10.0));
            lcd.setCursor(16, 1);
            lcd.write(223);             
            lcd.print("C  ");

            lcd.setCursor(0, 2);
            lcd.print("W-Wasser : ");
            lcd.print((String)((float)sensors[2].temperature() / 10.0));
            lcd.setCursor(16, 2);
            lcd.write(223);             
            lcd.print("C  ");

            lcd.setCursor(0, 3);
            lcd.print("Raumluft : ");
            lcd.print((String)((float)sensors[3].temperature() / 10.0));
            lcd.setCursor(16, 3);
            lcd.write(223);             
            lcd.print("C  ");

#endif

// ab hier wieder original
          }
          DPRINTLN("");
          WeatherEventMsg& msg = (WeatherEventMsg&)dev.message();
          //Aufteilung in 2 Messages, da sonst die max. BidCos Message Size (0x1a)? überschritten wird
          msg.init(dev.nextcount(), sensors, dev.battery().low(), 0);
          dev.send(msg, dev.getMasterID());
#if MAX_SENSORS > 4

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 13.01.2021, 13:17
von stan23
Jack01 hat geschrieben:
13.01.2021, 13:06
und ob ich die Zeilen:

Code: Alles auswählen

String s_temp = " --.-";
if ((i + 1) <= sensorcount) {
    s_temp = (String)((float)sensors[i].temperature() / 10.0);
    s_temp = s_temp.substring(0, s_temp.length() - 1);
    if (sensors[i].temperature() < 1000 && sensors[i].temperature() >= 0) 
        s_temp = " " + s_temp;
}
auch entfernen kann.
Den Teil kannst du entfernen.
Dabei schreibst du ja nur in den String s_temp, den du nachher nicht weiter verwendest.

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 13.01.2021, 13:21
von jp112sdl
Das was du auskommentiert hast ist, dient (bzw. jetzt ja nicht mehr :mrgreen: ) dem Einrücken (Voranstellen eines Leerzeichens) bei einstelligen Werten.
Wenn dir das (optisch) egal ist, oder du keine Werte unter 10°C erwartest, dann kannst du es weglassen.

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 13.01.2021, 13:56
von Jack01
OK, Danke!

Dann ist also die Zeile:

lcd.print((String)((float)sensors[0].temperature() / 10.0));

mit den Werten 0,1,2 und 3 für die Sensorauswahl richtig.

Was passiert eigentlich, wenn ein defekter Sensor ausgetauscht wird? Ändert sich dann die Zuordnung der Sensoren?

Gruß
Hans-Jürgen

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 13.01.2021, 14:13
von jp112sdl
Jack01 hat geschrieben:
13.01.2021, 13:56
Was passiert eigentlich, wenn ein defekter Sensor ausgetauscht wird? Ändert sich dann die Zuordnung der Sensoren?
Ja. Da hat mal jemand eine Lösung gebaut
https://github.com/wolwin/WW-mySHP/tree ... MP-DS18B20

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 16.01.2021, 15:28
von wok1415
Der 8-fach Temperatursesor hat beim Start manchmal die 8 Sensoren nicht erkannt (siehe unten). Die Lösung des Problems war den Spannungswandler auf dem Arduino zu entfernen und den externen Spannungswandler, der mit dem RAW Pin vom Arduino verbunden ist auch mit dem VCC Pin vom Arduino zu verbinden. Ich verwende die Platine von Smartkram. Jetzt funktioniert alles wunderbar.
wok1415 hat geschrieben:
11.01.2021, 18:24
Der HB-UNI-Sen-TEMP-DS18B20 mit 8 PT1000 Sensoren erkennt manchmal beim Start die angeschlossenen Sensoren nicht (im Arduino). Die Sensorwerte werden dann mit 0 ausgegeben.

Hat jemand vielleicht einen Hinweis für mich, woran das liegen könnte ?

Die Spannungsversorgung läuft zur Zeit über einen FTDI Adapter. Das Zusammenspiel mit einer pivccu3 und dem JP-HB-Devices addon funktioniert - es werden manchmal entsprechend nur die Offset-Werte angezeigt.

Code: Alles auswählen

AskSin++ V4.1.2 (Jan 11 2021 12:06:47)
12:07:14.863 -> ID: F30101  Serial: UNITEMP001
12:07:14.901 -> Address Space: 32 - 358
12:07:14.901 -> CC init1
12:07:14.901 -> CC Version: 14
12:07:14.901 ->  - ready
12:07:14.901 -> iVcc: 3236
12:07:14.901 -> Config Freq: 0x2165B2
12:07:14.901 -> Found 0 DS18B20 Sensors
12:07:14.934 -> Config Changed List0
12:07:14.934 -> LOW BAT Limit: 22
12:07:14.934 -> Sendeintervall: 300
12:07:14.934 -> OFFSET: 2
12:07:14.934 -> OFFSET: 6
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 4
12:07:14.934 -> OFFSET: 5
12:07:14.934 -> OFFSET: 6
12:07:20.113 -> Temperaturen: | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
12:07:20.150 -> <- 16 01 A2 53 F30101 00FFFF 00 41 00 02 42 00 06 43 00 05 44 00 05  - 114
12:07:20.295 -> -> 0A 01 80 02 00FFFF F30101 00  - 239
12:07:20.295 -> waitAck: 01
12:07:20.565 -> <- 16 02 84 53 F30101 00FFFF 00 45 00 05 46 00 04 47 00 05 48 00 06  - 532
12:10:24.083 -> AskSin++ V4.1.2 (Jan 11 2021 12:06:47)
12:10:24.083 -> ID: F30101  Serial: UNITEMP001
12:10:24.117 -> Address Space: 32 - 358
12:10:24.117 -> CC init1
12:10:24.117 -> CC Version: 14
12:10:24.117 ->  - ready
12:10:24.117 -> iVcc: 3236
12:10:24.117 -> Config Freq: 0x2165B2
12:10:24.255 -> Found 8 DS18B20 Sensors
12:10:24.255 -> Config Changed List0
12:10:24.255 -> LOW BAT Limit: 22
12:10:24.255 -> Sendeintervall: 300
12:10:24.255 -> OFFSET: 2
12:10:24.255 -> OFFSET: 6
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 4
12:10:24.255 -> OFFSET: 5
12:10:24.255 -> OFFSET: 6
12:10:30.256 -> Temperaturen: | 228 | 221 | 218 | 232 | 220 | 220 | 222 | 223 | 
12:10:30.289 -> <- 16 01 A2 53 F30101 00FFFF 00 41 00 E6 42 00 E3 43 00 DF 44 00 ED  - 1042
12:10:30.424 -> -> 0A 01 80 02 00FFFF F30101 00  - 1167
12:10:30.424 -> waitAck: 01
12:10:30.701 -> <- 16 02 84 53 F30101 00FFFF 00 45 00 E1 46 00 E0 47 00 E3 48 00 E5  - 1460

Re: 1...8fach Temperatursensor DS18B20

Verfasst: 16.01.2021, 16:05
von Martin62
Wenn man den internen DC Wandler runter nimmt, muss man auf den VCC Pin, weil ja keine Versorgung über RAW mehr möglich ist.Wichtig in diesem Fall max. 3,3V.