Seite 1 von 1

4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 11. Okt 2022, 14:06
von hschreiber
Hallo,

ich hoffe es gibt Überlebende!?

Ich habe seit vielen Jahren mehrere 4sense mit DS18B20- und DHT22(AM2302)-Sensoren in Betrieb.
Jetzt wollte ich 4Stück DHT11-Sensoren zu einer Installation hinzufügen. Ich bekomme da aber keine Werte.

Meine Konfiguration:
HW: Selfbus Tasterschnittstelle V2.0
FW: 4Sense_V1.02.hex
VD: 4Sense_V28_B19.vd1
Wenn ich statt des DHT11 einen DHT22 anklemme bekomme ich sofort Werte.
Wenn ich die DHT11-Sensoren an einem Arduino oder GM328A-Tester prüfe senden sie einwandfreie Werte!
Hat jemand DHT11-Sensoren am 4sense erfolgreich in Betrieb?
Wenn ja, wo könnte mein Fehler liegen?

Viele Grüße aus Dresden
Holger

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 13. Okt 2022, 13:21
von Darthyson
Hallo Holger,

soweit ich es aus deiner Konfiguration lese, geht es um mehrere DHT11 am LPC922-Controller.
Vorne weg, ich hab mit dem 4sense weder als LPC922 noch als ARM bisher rumgespielt.

Hast du in der ETS den DHT11 als Sensortyp ausgewählt?

Ich hab mal in den Source vom 4sense des LPC922 geschaut. In der Funktionsuebersicht_4Sense.txt wird nur der DHT21/22 erwähnt. Allerdings gibt es mehrere Stellen für den DHT11 insbesondere auch ein

Code: Alles auswählen

#define DHT1x_SENSOR 1
welches gesetzt ist. Ob die 4Sense_V1.02.hex Firmware damit compiliert wurde, kann ich allerdings nicht sagen. Eventuell wäre es einen Versuch wert mal die 4Sense_V1.01.hex zu testen.

Hier mal eine frisch aus dem aktuellen Sourcecode Stand compiliert mit gesetztem #define DHT1x_SENSOR 1. Ich kann das hier allerdings weder Testen noch Debuggen, daher ohne Gewähr.

Viele Grüße
Denis
[edit] #define ist als "enum" zu verstehen, .hex brachte nix

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 13. Okt 2022, 14:50
von hschreiber
Hallo Denis,

Danke für Deine Antwort.
Laut altem Wiki werden auch DHT11-Sensoren unterstützt. Ich hatte bereits alle Versionen aus dem GIT probiert,
mit ETS3 und ETS5. Jetzt habe ich auch deine Version getestet, leider ohne Erfolg.
In der ETS ist DHT11 gewählt. Mit angeschlossenem DHT11 und auch ohne Sensor liefert das lesen der Werte immer 0.
Ziehe ich im laufenden Betrieb den DHT11 ab und stecke einen AM2302 an, macht der Controller einen Reset (Prog-Led geht kurz an) und ich erhalte sofort Werte. Stecke ich nun auf DHT11 zurück erfolgt kein Reset und ich erhalte weiterhin die letzten (zwichengespeicherten?) Werte des AM2302!

Viele Grüße aus Dresden
Holger

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 13. Okt 2022, 16:11
von Darthyson
Hallo Holger,

da hast du ja schon einiges versucht.
hschreiber hat geschrieben: 13. Okt 2022, 14:50 Ziehe ich im laufenden Betrieb den DHT11 ab und stecke einen AM2302 an, macht der Controller einen Reset (Prog-Led geht kurz an) und ich erhalte sofort Werte. Stecke ich nun auf DHT11 zurück erfolgt kein Reset und ich erhalte weiterhin die letzten (zwichengespeicherten?) Werte des AM2302!
Wenn ich es richtig verstehe ist AM2302=DHT22?. Falls ja, verwundert mich das doch sehr, da die Init-Timings von DHT11 und DHT22 unterschiedlich sind.

Aus der Adafruit DHT.cpp Zeile 256ff

Code: Alles auswählen

  switch (_type) {
  case DHT22:
  case DHT21:
    delayMicroseconds(1100); // data sheet says "at least 1ms"
    break;
  case DHT11:
  default:
    delay(20); // data sheet says at least 18ms, 20ms just to be safe
    break;
} 
Sagt wenn DHT11 dann warte 18ms, wenn DHT21/22 warte 1,1ms.
Passt auch zu DHT11 timing bzw. dem Datashet vom DHT22 (Seite 4).

Beim LPC922-4Sense sollte diese Unterscheidung eigentlich auch drin sein:

Code: Alles auswählen

if(ee_local &0x04) // Generate reset pulse for DHT 1x
   dht1x_init(kanal);
Dazu muss der Sensortyp in der ETS richtig eingestellt sein.
Falls du einen Oszi zur Hand hast, kannst du das ja mal checken.

Nur Interessehalber, hatte meine .hex wenigstens mit einem DHT22 funktioniert, oder gar nicht?

Viele Grüße
Denis

[edit] dht/sht, argg...

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 13. Okt 2022, 18:42
von hschreiber
Hallo Denis,

Deine .hex hat genau wie die anderen mit DHT22/AM2302 funktioniert, mit DHT11 leider nicht.
Die AM2302 sind die CN DHT22.
Dazu muss der Sensortyp in der ETS richtig eingestellt sein.
Wenn ich es richtig verstehe ist AM2302=SHT22?. Falls ja, verwundert mich das doch sehr, da die Init-Timings von SHT11 und SHT22 unterschiedlich sind.
Es macht keinen Unterschied ob ich in der ETS DHT11 oder DHT22 einstelle, das Verhalten ist immer gleich.
Und in genau der Richtung vermute ich auch das Problem.
Ich werde am Wochenende mal die Buskommunikation beider Varianten bein programmieren vergleichen.

Viele Grüße aus Dresden
Holger

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 13. Okt 2022, 21:19
von Darthyson
Hallo Holger,

interessant sind die Adressen 0x01B7-0x01BA, dort steht jeweils die Grundkonfig der Sensoren 1-4 drin.
Lt. Source sollte 2.Bit=0 DHT22 sein und 2.Bit=1 DHT11.
Zumindest meine ETS 5 macht daraus aber das 3.Bit.
Hier mal eine .hex welche das 3.Bit testet.

Zumindest sieht das am Oszi schonmal besser aus:
TEK00005.jpg
Mehr kann ich erstmal nicht testen, da ich die Sensoren noch nicht habe (bestellt sind sie schon, allerdings eigentlich für eine ARM Version des 4Sense ;) )

Viele Grüße
Denis
[edit] .hex gelöscht, da immer noch buggy

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 15. Okt 2022, 14:02
von hschreiber
Hallo Denis,

Danke für Deine Mühe. Du bist wohl auf dem richtigen Weg.
Deine neue Firmware bewirkt das DHT22-Sensoren bei DHT11 Konfiguration in der ETS nur noch falsche Werte senden.
Alle "alten" Firmwareversionen bringen am Ausgang einen Puls von ca. 1,2ms am Port unabhängig von der Konfiguration in der ETS.
Mit Deiner 4sense_bit_fix.hex habe ich bei DHT11 den Puls mit 18ms. Aber ich bekomme keine Werte.
Darthyson hat geschrieben: 13. Okt 2022, 16:11 Aus der Adafruit DHT.cpp Zeile 256ff

Code: Alles auswählen

switch (_type) {
case DHT22:
case DHT21:
delayMicroseconds(1100); // data sheet says "at least 1ms"
break;
case DHT11:
default:
delay(20); //data sheet says at least 18ms, 20ms just to be safe
break;
}
Ich erhalte vom gleichen Sensor am Arduino Werte.
Ich habe es mir mal am Arduino angeschaut. Da ist der Puls 20ms!

Viele Grüße aus Dresden
Holger

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 15. Okt 2022, 15:00
von Darthyson
Hallo Holger,

meine DHT11/22 Sensoren sind vorhin gekommen. Gleich mal getestet und noch ein 2.Problem gefunden. Hier eine neue .hex welche bei mir mit DHT11 und DHT22 zusammen funktioniert.
4sense_bit_fix2.hex
(26.7 KiB) 235-mal heruntergeladen
Wäre interessant, ob sich jemand meldet, bei dem die LPC-Firmware jemals mit einem DHT11 funktioniert hat. Ich hab mir alle Versionen der 4Sense-Produktdatenbank angeschaut und die verweisen alle auf das 3.Bit zur Unterscheidung. Im Source wurde das bisher nicht korrekt behandelt. Nebenbei hatte ich mir auch mal die 4Sense-ARM Version angeschaut, auch dort fehlt die Unterscheidung zwischen DHT11/DHT22.

Viele Grüße
Denis
[edit:] arrg. richtige .hex angehängt.

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 15. Okt 2022, 16:33
von hschreiber
Hallo Denis,

es funktioniert auch bei mir! Danke für deine Hilfe. Bist ein Held.
Ich bin softwareseitig leider eine absolute Niete. Meine Programmierkentnisse sind irgendwo bei "Hello World" in Assembler.
Darthyson hat geschrieben: 15. Okt 2022, 15:00 Wäre interessant, ob sich jemand meldet, bei dem die LPC-Firmware jemals mit einem DHT11 funktioniert hat. Ich hab mir alle Versionen der 4Sense-Produktdatenbank angeschaut und die verweisen alle auf das 3.Bit zur Unterscheidung. Im Source wurde das bisher nicht korrekt behandelt. Nebenbei hatte ich mir auch mal die 4Sense-ARM Version angeschaut, auch dort fehlt die Unterscheidung zwischen DHT11/DHT22.
Und genau das war eben meine 1.Frage, da ich ja alle möglichen Kombinationen probiert hatte.

Und nun bleibt ein neues "Problem". Wird beim Start kein Sensor erkannt, erfolgt auch kein zyklisches Senden auf der GA.
OK, kein Sensor, keine Werte. Geht der Sensor im laufenden Betrieb verloren hört das zyklische Senden auf. Auch OK.
Ich sehe dann z.B. auf dem Touch-Display das der Wert fehlt, weil sich die Farbe ändert. Lese ich den Wert aktiv wird aber der letzte vom Sensor ausgegebene Wert übermittelt. Ist für mich aktuell nicht das Problem, sollte aber für die Zukunft mal überdacht werden.

Viele Grüße aus Dresden
Holger

Re: 4sense, DHT11-Sensoren funktionieren nicht

Verfasst: 15. Okt 2022, 17:30
von Darthyson
Hallo Holger,

schön, dass es jetzt funktioniert.
Das andere "Problem" wird wahrscheinlich keiner mehr in der LPC922-Variante lösen. Dafür ist der einfach zu umständlich/zeitaufwendig zu debuggen. Das wäre dann eher was für die ARM-Variante.

Viele Grüße
Denis