1...8fach Temperatursensor DS18B20

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: 1...8fach Temperatursensor DS18B20

Beitrag von jp112sdl » 12.11.2020, 21:29

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.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Bengel00
Beiträge: 34
Registriert: 04.03.2015, 12:56
Hat sich bedankt: 1 Mal

Re: 1...8fach Temperatursensor DS18B20

Beitrag von Bengel00 » 11.01.2021, 16:56

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?

wok1415
Beiträge: 118
Registriert: 16.07.2020, 15:52
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: 1...8fach Temperatursensor DS18B20

Beitrag von wok1415 » 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

Jack01
Beiträge: 128
Registriert: 01.02.2017, 17:08
Hat sich bedankt: 49 Mal
Danksagung erhalten: 9 Mal

Re: 1...8fach Temperatursensor DS18B20

Beitrag von Jack01 » 13.01.2021, 13:06

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
Dateianhänge
IMG_20210113_102630.jpg
Raspberrymatic als VM auf Proxmox (Fujitsu Esprimo) mit HB-RF-USB und 34 Geräte (18 x Eigenbau)
4 x Amazon Alexa, ioBroker
Remote Control via TinyMatic und VPN
Motion Eye und ioBroker auf Proxmox

Benutzeravatar
stan23
Beiträge: 2029
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: 1...8fach Temperatursensor DS18B20

Beitrag von stan23 » 13.01.2021, 13:17

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.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: 1...8fach Temperatursensor DS18B20

Beitrag von jp112sdl » 13.01.2021, 13:21

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.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Jack01
Beiträge: 128
Registriert: 01.02.2017, 17:08
Hat sich bedankt: 49 Mal
Danksagung erhalten: 9 Mal

Re: 1...8fach Temperatursensor DS18B20

Beitrag von Jack01 » 13.01.2021, 13:56

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
Raspberrymatic als VM auf Proxmox (Fujitsu Esprimo) mit HB-RF-USB und 34 Geräte (18 x Eigenbau)
4 x Amazon Alexa, ioBroker
Remote Control via TinyMatic und VPN
Motion Eye und ioBroker auf Proxmox

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: 1...8fach Temperatursensor DS18B20

Beitrag von jp112sdl » 13.01.2021, 14:13

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

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

wok1415
Beiträge: 118
Registriert: 16.07.2020, 15:52
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: 1...8fach Temperatursensor DS18B20

Beitrag von wok1415 » 16.01.2021, 15:28

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

Martin62
Beiträge: 681
Registriert: 09.12.2019, 21:24
Hat sich bedankt: 151 Mal
Danksagung erhalten: 61 Mal

Re: 1...8fach Temperatursensor DS18B20

Beitrag von Martin62 » 16.01.2021, 16:05

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.
Gruß Martin

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“