Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

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: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von jp112sdl » 06.06.2021, 10:56

Könntest mal hier noch jeweils Debug für die 3 berechneten Werte ausgeben lassen:
https://github.com/jp112sdl/HB-UNI-Sen- ... #L269-L271

Irgendwo scheint da was nicht zu passen

VG,
Jérôme ☕️

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

edition
Beiträge: 9
Registriert: 25.09.2020, 15:31
System: keine Zentrale (nur Pairing, FHEM etc.)

Re: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von edition » 07.06.2021, 09:32

Oha, jetzt geht es gleich ans eingemachte! So bewandert bin ich in der Arduino Programmierung nämlich nicht. Mal sehen, ob ich da noch mitkomme!

Der markierte Bereich stellt den Part da, in dem die Berechnung für den Humidity Wert angestellt werden. Den habe ich in Excel mal nachgebaut, um zu sehen, was eigentlich herauskommen müsste.
Zum experimentieren habe ich einen Sensor auf dem Steckbrett nachgebaut und den "Problemfühler" angeschlossen. Die Werte für highValue und lowValue sind im Sketch auf 900, bzw. 300 gesetzt. Da ich den Sensor jetzt nicht unbedingt an der Zentrale anlernen will, möchte ich die high und low Werte im Sketch anpassen und neu flashen. Das funktioniert schon mal nicht wie gewünscht! 300 und 900 bleiben, wie sie sind.
Auch ist mir nicht ganz klar, was du mit "Debug für die 3 berechneten Werte ausgeben" meinst. Da müsstest du mir noch ein wenig auf die Sprünge helfen.

Gruß
edition

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

Re: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von jp112sdl » 07.06.2021, 14:01

edition hat geschrieben:
07.06.2021, 09:32
Die Werte für highValue und lowValue sind im Sketch auf 900, bzw. 300 gesetzt. Da ich den Sensor jetzt nicht unbedingt an der Zentrale anlernen will, möchte ich die high und low Werte im Sketch anpassen und neu flashen. Das funktioniert schon mal nicht wie gewünscht! 300 und 900 bleiben, wie sie sind.
Wo genau hast du das angepasst?
edition hat geschrieben:
07.06.2021, 09:32
Auch ist mir nicht ganz klar, was du mit "Debug für die 3 berechneten Werte ausgeben" meinst. Da müsstest du mir noch ein wenig auf die Sprünge helfen.

Code: Alles auswählen

uint16_t range = upper_limit - lower_limit;
DPRINT("range=");DDECLN(range);
uint16_t base = sens_val - lower_limit;
DPRINT("base=");DDECLN(base);
uint8_t pct_inv = (base * 100) / range;
DPRINT("pct_inv =");DDECLN(pct_inv);

VG,
Jérôme ☕️

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

Benutzeravatar
stan23
Beiträge: 2030
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: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von stan23 » 07.06.2021, 14:01

edition hat geschrieben:
07.06.2021, 09:32
Auch ist mir nicht ganz klar, was du mit "Debug für die 3 berechneten Werte ausgeben" meinst. Da müsstest du mir noch ein wenig auf die Sprünge helfen.
Du kannst die 4 Zeilen z.B. so umbauen:

Code: Alles auswählen

uint16_t range = upper_limit - lower_limit;
uint16_t base = sens_val - lower_limit;
uint8_t pct_inv = (base * 100) / range;
humidity[s] = 100 - pct_inv;
DPRINT("lower limit: ");DDEC(lower_limit);
DPRINT(", upper limit: ");DDEC(upper_limit);
DPRINT(", range: ");DDEC(range);
DPRINT(", base: ");DDEC(base);
DPRINT(", pcv_inv");DDEC(pct_inv);
DPRINT(", humidity: ");DDECLN(humidity[s]);
edit: zu langsam :)
Viele Grüße
Marco

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

edition
Beiträge: 9
Registriert: 25.09.2020, 15:31
System: keine Zentrale (nur Pairing, FHEM etc.)

Re: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von edition » 07.06.2021, 16:18

jp112sdl hat geschrieben:
07.06.2021, 14:01
Wo genau hast du das angepasst?
Im original Sketch ist das ab Zeile 157

Code: Alles auswählen

   void defaults () {
      clear();
      HIGHValue(300);
      LOWValue(100);
hier schon mit geänderten Werten.

Nach dem flashen seigt die Konsole:

Code: Alles auswählen

15:59:12.762 -> AskSin++ V4.1.7 (Jun  7 2021 15:58:48)
15:59:12.762 -> Address Space: 32 - 102
15:59:12.762 -> CC init1
15:59:12.762 -> CC Version: 14
15:59:12.762 ->  - ready
15:59:13.081 -> iVcc: 3587
15:59:13.081 -> eVcc: 5770
15:59:13.081 -> ID: F31104  Serial: JPCAPM0004
15:59:13.081 -> *LOW BAT Limit: 41
15:59:13.081 -> *Sendeintervall: 5
15:59:13.081 -> Config changed List1 (CH 1)
15:59:13.081 -> Config changed List1 (CH 2)
15:59:13.081 -> *HIGHValue : 900
15:59:13.081 -> *LOWValue  : 300
15:59:19.612 -> +Analog     (#1): 300range=600
15:59:19.612 -> base=0
15:59:19.612 -> pct_inv =0
15:59:19.647 ->
Ich glaube, ich teste doch mit dem tatsächlichem Sensor. Werde mal umbauen.

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

Re: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von jp112sdl » 07.06.2021, 16:24

edition hat geschrieben:
07.06.2021, 16:18
Im original Sketch ist das ab Zeile 157
Das sind die Default-Werte, die nach dem RESET auf Werkseinstellung ins EEPROM geschrieben werden.

VG,
Jérôme ☕️

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

edition
Beiträge: 9
Registriert: 25.09.2020, 15:31
System: keine Zentrale (nur Pairing, FHEM etc.)

Re: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von edition » 07.06.2021, 16:57

So, Umbau fertig. Hier die Ausgabe aus der Konsole:

Code: Alles auswählen

16:41:24.496 -> AskSin++ V4.1.7 (Jun  7 2021 16:40:55)
16:41:24.496 -> Address Space: 32 - 134
16:41:24.496 -> CC init1
16:41:24.496 -> CC Version: 04
16:41:24.543 ->  - ready
16:41:24.798 -> iVcc: 3303
16:41:24.798 -> eVcc: 5239
16:41:24.844 -> DS18B20 Sensor OK
16:41:24.844 -> ID: F31200  Serial: JPCAPM0000
16:41:24.844 -> *LOW BAT Limit: 40
16:41:24.844 -> *Sendeintervall: 20
16:41:24.844 -> Config changed List1 (CH 1)
16:41:24.844 -> *Offset    : -5
16:41:24.844 -> Config changed List1 (CH 2)
16:41:24.844 -> *HIGHValue : 810
16:41:24.844 -> *LOWValue  : 336
16:41:24.844 -> Config changed List1 (CH 3)
16:41:24.844 -> *HIGHValue : 962
16:41:24.844 -> *LOWValue  : 270
16:41:31.236 -> +Analog     (#1): 796range=474
16:41:31.236 -> base=460
16:41:31.236 -> pct_inv =97
16:41:31.236 -> 
16:41:31.336 -> +Analog     (#2): 336range=692
16:41:31.336 -> base=66
16:41:31.336 -> pct_inv =9
16:41:31.336 -> 
16:41:31.987 -> +Temp         C : 240
16:41:31.987 -> +Battery      V : 52
16:41:31.987 -> +Humidity (#1) %: 3
16:41:31.987 -> +Humidity (#2) %: 91
16:41:32.040 -> <- 12 01 A2 53 F31200 000FFF 00 41 00 F0 34 42 03 43 5B  - 1759
16:41:32.141 -> -> 0A 01 80 02 000FFF F31200 00  - 1904
16:41:32.188 -> waitAck: 01
Auch hier sind die lowValue und highValue Werte unverändert, obwohl im Sketch 300 und 100 hinterlegt ist!

Der Fühler steckt gerade im Wasser und meldet Analog 336 entspricht 91%. Ich lege ihn trocken und messe erneut:

Code: Alles auswählen

16:51:57.113 -> AskSin++ V4.1.7 (Jun  7 2021 16:40:55)
16:51:57.113 -> Address Space: 32 - 134
16:51:57.113 -> CC init1
16:51:57.113 -> CC Version: 04
16:51:57.160 ->  - ready
16:51:57.415 -> iVcc: 3342
16:51:57.415 -> eVcc: 5246
16:51:57.461 -> DS18B20 Sensor OK
16:51:57.461 -> ID: F31200  Serial: JPCAPM0000
16:51:57.461 -> *LOW BAT Limit: 40
16:51:57.461 -> *Sendeintervall: 20
16:51:57.461 -> Config changed List1 (CH 1)
16:51:57.461 -> *Offset    : -5
16:51:57.461 -> Config changed List1 (CH 2)
16:51:57.461 -> *HIGHValue : 810
16:51:57.461 -> *LOWValue  : 336
16:51:57.461 -> Config changed List1 (CH 3)
16:51:57.461 -> *HIGHValue : 962
16:51:57.461 -> *LOWValue  : 270
16:52:03.874 -> +Analog     (#1): 810range=474
16:52:03.874 -> base=474
16:52:03.874 -> pct_inv =100
16:52:03.874 -> 
16:52:03.974 -> +Analog     (#2): 959range=692
16:52:03.974 -> base=689
16:52:03.974 -> pct_inv =4
16:52:03.974 -> 
16:52:04.578 -> +Temp         C : 241
16:52:04.625 -> +Battery      V : 52
16:52:04.625 -> +Humidity (#1) %: 0
16:52:04.625 -> +Humidity (#2) %: 96
16:52:04.625 -> <- 12 01 A2 53 F31200 000FFF 00 41 00 F1 34 42 00 43 60  - 1759
16:52:04.880 -> -> 0A 01 80 02 000FFF F31200 00  - 1974
16:52:04.880 -> waitAck: 01
Jetzt wird 959 gemessen. 3 unter highValue. Laut meiner Excel Tabelle müsste jetzt eigentlich 0,433... also 0 oder 1 rauskommen, jenachdem, wie gerundet wird.

Benutzeravatar
stan23
Beiträge: 2030
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: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von stan23 » 08.06.2021, 09:19

edition hat geschrieben:
07.06.2021, 16:57
Jetzt wird 959 gemessen. 3 unter highValue. Laut meiner Excel Tabelle müsste jetzt eigentlich 0,433... also 0 oder 1 rauskommen, jenachdem, wie gerundet wird.
Bei der Integerrechnung wird nicht gerundet sondern abgeschnitten.
Aber trotzdem stimmen die Werte für den zweiten Sensor nicht.

Der Grund ist, dass (base * 100 = 68900) über die 16 Bit läuft und dann eben falsche Werte rauskommen.
jp112sdl hat geschrieben:
07.06.2021, 14:01

Code: Alles auswählen

uint8_t pct_inv = (base * 100) / range;
Ändere doch mal die Zeile

Code: Alles auswählen

uint16_t base = sens_val - lower_limit;
zu

Code: Alles auswählen

uint32_t base = sens_val - lower_limit;
Viele Grüße
Marco

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

edition
Beiträge: 9
Registriert: 25.09.2020, 15:31
System: keine Zentrale (nur Pairing, FHEM etc.)

Re: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von edition » 08.06.2021, 13:24

Bingo! Das war es wohl tatsächlich.

Code: Alles auswählen

12:40:34.765 -> AskSin++ V4.1.7 (Jun  8 2021 12:40:08)
12:40:34.765 -> Address Space: 32 - 134
12:40:34.765 -> CC init1
12:40:34.765 -> CC Version: 04
12:40:34.765 ->  - ready
12:40:35.020 -> iVcc: 3283
12:40:35.020 -> eVcc: 5244
12:40:35.120 -> DS18B20 Sensor OK
12:40:35.120 -> ID: F31200  Serial: JPCAPM0000
12:40:35.120 -> *LOW BAT Limit: 40
12:40:35.120 -> *Sendeintervall: 20
12:40:35.120 -> Config changed List1 (CH 1)
12:40:35.120 -> *Offset    : -5
12:40:35.120 -> Config changed List1 (CH 2)
12:40:35.120 -> *HIGHValue : 810
12:40:35.120 -> *LOWValue  : 336
12:40:35.120 -> Config changed List1 (CH 3)
12:40:35.120 -> *HIGHValue : 962
12:40:35.120 -> *LOWValue  : 270
12:40:41.504 -> +Analog     (#1): 809range=474
12:40:41.504 -> base=473
12:40:41.504 -> pct_inv =99
12:40:41.504 -> 
12:40:41.605 -> +Analog     (#2): 959range=692
12:40:41.605 -> base=689
12:40:41.605 -> pct_inv =99
12:40:41.605 -> 
12:40:42.208 -> +Temp         C : 238
12:40:42.261 -> +Battery      V : 52
12:40:42.261 -> +Humidity (#1) %: 1
12:40:42.261 -> +Humidity (#2) %: 1
12:40:42.261 -> <- 12 01 A2 53 F31200 000FFF 00 41 00 EE 34 42 01 43 01  - 1759
12:40:42.409 -> -> 0A 01 80 02 000FFF F31200 00  - 1904
12:40:42.409 -> waitAck: 01
Ich habe noch ein paar Gegenproben gemacht: Messfühler ins Wasser = 94%, Messfühler in den nicht mehr ganz so feuchten Blumentopf = 88%, Messfühler in den trockenen Blumentopf = 1%, Messfühler wieder auf den Tisch gelegt = 1%, Messfühler in den frisch gegossenen Blumentopf = 97%.

Das sind alles plausieble Werte. Damit kann ich arbeiten. Jetzt kann der Sensor in den Garten und ich bekomme endlich die Blumentöpfe vom Schreibtisch!

Vielen Dank für die Unterstützung!

Gruß
edition

Benutzeravatar
stan23
Beiträge: 2030
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: Bodenfeuchtesensor HB-UNI-Sen-CAP-MOIST(-T)

Beitrag von stan23 » 08.06.2021, 13:32

Viele Grüße
Marco

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

Antworten

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