Hallo,
ich wollte einen Sensor testen und wunderte mich, dass er nicht funktioniert. SHT21.begin() gibt mir immer false zurück. Wenn ich aber trotzdem Sensordaten abrufe funktioniert er jedoch tadellos. Was läuft denn da schief? Einer ne Idee? Den Testquelltext habe ich übrigens früher schon einmal mit einem anderen Sensor diesen Typs anstandslos benutzt...
Tja, auf'm Sensormodul steht alles mögliche drauf. SI7021, SHT21, HTU21.
Das Modul kann nicht wissen, welche Bestückungsvariante du gekauft hast, d.h. welcher Sensor dort bestückt ist. Vielleicht guckst du einfach einmal, welcher Sensor bei dir auf dem Modul bestückt ist.
Tja, auf'm Sensormodul steht alles mögliche drauf. SI7021, SHT21, HTU21.
Das Modul kann nicht wissen, welche Bestückungsvariante du gekauft hast,
d.h. welcher Sensor dort bestückt ist. Vielleicht guckst du einfach
einmal, welcher Sensor bei dir auf dem Modul bestückt ist.
Wenn man sein Gehirn gegen Arduino getauscht hat, sind einem solche Kleinigkeiten auch schon egal.
@ helfende
Ich besitze schon zwei drei dieser Module. .begin() hat immer funktioniert. Habe noch nie darauf geachtet, was da genau drauf steht.
Auf diesem Sensormodul steht HTU21. Aber ok. ich frage einfach die Daten ab und wenn ein NAN kommt weiß ich ob Sensor da oder nicht / kaputt.
Da muss es doch ein Datenblatt geben, wo genau dargestellt wird, in welchem Register die Werte von Interesse (Fuftfeuchte, Temperatur usw.) hinterlegt sind und wie man die über I2C (oder SPI) Zugriff erlangt.
Was hat das mit diesen LIBs aufsich? Liest man immerwieder.. Selbst wenn man nicht in der Lage ist, das Datenblatt vom Sensor zu interpretieren, so kann man doch sicher den Quellcode dieser "LIB" inspizieren und findet ganz schnell heraus, ob das mit dem Sensordatenblatt einhergeht, oder ist das aus rechltichen Gründen vorcompiliert?
...
Ist es nicht. Hab eben nachgesehen. es gibt immer ne*.cpp-datei und eine *.h.
Ist ja hilfreich, für alle, die nicht vom Fach sind, wirft aber genau jene Fragen auf, über die mich eben noch wunderte.
Läuft das wirklich so?
Man kauft sich solch ein blaues Platinchen und klemmt es an VCC, GND, SCA und SCL, installiert die "Lib" (hier wohl von Frau Fried (Adafruit)), ruft eines der mitglieferten Beispiele auf, lädt das hoch und: fertig?
Dann ist ja klar, dass niemand mehr Ahnung vom Fach hat und wir mit dererlei Fragen quasi täglich überannt werden. Pff
Mach mal print-Befehle in den Quellcode der Bibliothek, um zu sehen
warum false zurückkommt.
Oder, vielleicht einfacher, ruf einfach die entsprechenden Methoden der Klasse auf, die Auskunft über den Grund der Fehlfunktion geben.
Das wäre eigentlich der normale Weg gewesen. Wenn eine Methode fehlschlägt (und nicht gleich den Grund dafür liefert) dann verwendet man die vorgesehenen Methoden dafür. OK. Sofern es sie gibt. Aber auch wenn es Arduino ist, muß deswegen ja nicht jede Library Kacke sein.
Aber auch
wenn es Arduino ist, muß deswegen ja nicht jede Library Kacke sein.
Sind sie nicht.
Allerdings sollte man schon die auswählen, welche zu dem betreffenden Sensor passt. Zumindest könnte das schon mal ein Grund dafür sein, dass begin() false liefert.
Und das die Daten "richtig" kommen, könnte daran liegen, dass sich die Sensoren sehr ähnlich sind.
Danke, das ist die richtige Lib. Ich ging bis jetzt einfach davon aus, dass alle meine Sensormodule den gleichen Sensor Chip hätten, funktionierte ja auch bis auf meinen jetzt erworbenen.
Ist ja hilfreich, für alle, die nicht vom Fach sind, wirft aber genau
jene Fragen auf, über die mich eben noch wunderte.
Läuft das wirklich so?
Man kauft sich solch ein blaues Platinchen und klemmt es an VCC, GND,
SCA und SCL, installiert die "Lib" (hier wohl von Frau Fried
(Adafruit)), ruft eines der mitglieferten Beispiele auf, lädt das hoch
und: fertig?
Dann ist ja klar, dass niemand mehr Ahnung vom Fach hat und wir mit
dererlei Fragen quasi täglich überannt werden. Pff
Ja so ist das nun einmal heute! Jetzt können auch Leute die nicht so fundiertes Wissen in Elektronik haben brauchbare Schaltungen aufbauen. Und das ist auch gut so. Ich verstehe allerdings dass es nervt wenn mit "cut & paste" code auf den Mikrocontroller geladen wird. Und hier dann gefragt wird warum das nicht geht.
In meinem Fall handelt es sich um eine Wetterstation die ich selbst gebaut und programmiert habe. Diese funktioniert auch seit Jahren sehr gut. Nur eben dieses Sensormodul das ich immer mal tauschen muss da es "absäuft".
Ohne das Benutzen solcher "blauen Platinchen" wäre mir das wohl nicht möglich gewesen. Wie meine ganze Hausautomation, die ich selbst gebaut habe. Es wäre schade wenn es diese Möglichkeit heute nicht gäbe! Und wenn die Fragen dieser "Ahnungslosen" zu sehr nerven... Einfach nicht Antworten.
Ja so ist das nun einmal heute! Jetzt können auch Leute die nicht so
fundiertes Wissen in Elektronik haben brauchbare Schaltungen aufbauen.
Und das ist auch gut so.
Ist halt nur solange gut wie es funktioniert. Funktioniert es mal nicht, geht das Geheule los, weil man eben keine Ahnung hat und nicht mal selbst auf Fehlersuche gehen kann.
Nur eben dieses Sensormodul das ich immer mal tauschen muss da es
"absäuft".
Wegkorrodiert? Oder wird bei dir der Sensor fehlerhaft. Welche hast du bisher gehabt? Ich musste gerade einen SHT21 tauschen dessen Werte nicht mehr stimmten. Der hat allerdings 8 Jahre ohne Teflonkappe durchgehalten ...
Wegkorrodiert? Oder wird bei dir der Sensor fehlerhaft. Welche hast du
bisher gehabt? Ich musste gerade einen SHT21 tauschen dessen Werte nicht
mehr stimmten. Der hat allerdings 8 Jahre ohne Teflonkappe durchgehalten
Wie gesagt für mich waren diese "blauen Platinchen" alles SHT21 :-)
Problem ist, dass die Feuchte irgendwann zu hoch angezeigt wird. Temperatur kommt mir auch etwas zu hoch vor. Meiner hat eine PTE Membran aber ich glaube die bringt wenig bis nichts, da die Feuchtigkeit trotzdem zu hoch angezeigt wird.
Das ist aber gar nicht so wichtig. Es bildet sich oft Kondenswasser auf der Platine, und das legt den gesamten I2C lahm an dem ich noch andere Sensoren habe. Ich tausche dann das Sensormodul gegen ein trockenes, und alles läuft.
Bis auf den Sensor selber mit Heissleim eingegossen in einer
Wetterstation draussen seit 8 Jahren ohne Probleme.
Diese Idee hatte ich neulich auch schon. Ich trockne den ausgebauten Sensor aber im Backofen bei 60°. Dann stimmt die Luftfeuchte auch wieder. Ich muss erst mal probieren ob mir da der Heißleim nicht weich wird..
Es bildet sich oft Kondenswasser auf der Platine, und das legt den
gesamten I2C lahm an dem ich noch andere Sensoren habe.
Das passiert nur, wenn die Platine der kälteste Punkt ist und die Temperatur unter dem Taupunkt liegt. Du solltest nicht die Platine als Kühlfalle verwenden.
Das ist aber gar nicht so wichtig. Es bildet sich oft Kondenswasser auf
der Platine, und das legt den gesamten I2C lahm an dem ich noch andere
Sensoren habe. Ich tausche dann das Sensormodul gegen ein trockenes, und
alles läuft.
Da sollte sich kein Kondenswasser bilden, denn durch die Abwärme der Elektronik sollte es da immer etwas wärmer sein als die Umgebung. Und wenn du das nicht magst, greife zum SHT31, der hat eine eingebaute Heizung, die man ein- und ausschalten kann!
greife zum SHT31, der hat eine eingebaute
Heizung, die man ein- und ausschalten kann!
Hallo,
also mein Chip HTU21 müsste diese Heizung auch haben. Denn wenn ich mit der Lib Adafruit_Si7021 compiliere (bei der .begin() nicht funktioniert) kann ich die Heizung zuschalten. Temperatur steigt und Feuchte sinkt.
In der Lib Adafruit_HTU21DF gibt es gar keine .heater() Methode. Obwohl der Sensor diese Funktion wohl doch mitbringt.
Da sollte sich kein Kondenswasser bilden, denn durch die Abwärme der
Elektronik sollte es da immer etwas wärmer sein als die Umgebung.
Wenn ein SHT21 mit seinen typisch 0.15µA Sleep Strom zu einer Eigenerwärmung führt, die die natürliche Konvektion dominiert, läuft da irgendetwas falsch.
Wenn so ein Außensensor ein Jahr lang mit einem kleinen Satz Batterie betrieben wird, steht da nichts für nennenswerte elektrische Heizung zur Verfügung. Rechne mal nach, wie groß der Temperaturgradient ist, den du damit aufrecht erhalten könntest. Und außerdem: Wer will schon einen Außentemperatursensor dauerhaft elektrisch aufheizen.
Wenn so ein Außensensor ein Jahr lang mit einem kleinen Satz Batterie
betrieben wird, steht da nichts für nennenswerte elektrische Heizung zur
Verfügung.
Doch. Die Batterieenergie entfleucht ja nicht direkt in den Äther. Also heizt sie die Umgebung auf. Und deswegen kann keine Betauung stattfinden, da die ja nur passiert, wenn der Sensor kälter als der Taupunkt ist. Also meine Sensoren mit anständigem Strahlungsschutz, der direkt einwirkenden Regen verhindert, halten eigentlich Jahre, ohne Meßprobleme. Man darf halt keinen Billigkrempel aus China verwenden, wo man nicht weiß, was da drin steckt.
Du hast 3. vergessen. - Weiterwurschteln wie bisher! Auch mit Billig China Krempel. Hat ja bis jetzt über Jahre funktioniert. Ich passe meinen code etwas an, und Laube brennt...
Die Batterieenergie entfleucht ja nicht direkt in den Äther. Also
heizt sie die Umgebung auf. Und deswegen kann keine Betauung
stattfinden, da die ja nur passiert, wenn der Sensor kälter als der
Taupunkt ist.
Bei einem Sensor der ein Jahr aus zwei AA-Batterien lebt, hast du eine mittlere Leistung von vielleicht 0.0009W oder 0.9mW zur Verfügung. Welchen Temperaturgradienten zur Umgebung wirst du damit wohl erzielen?
Die Batterieenergie entfleucht ja nicht direkt in den Äther. Also
heizt sie die Umgebung auf. Und deswegen kann keine Betauung
stattfinden, da die ja nur passiert, wenn der Sensor kälter als der
Taupunkt ist.
Bei einem Sensor der ein Jahr aus zwei AA-Batterien lebt, hast du eine
mittlere Leistung von vielleicht 0.0009W oder 0.9mW zur Verfügung.
Welchen Temperaturgradienten zur Umgebung wirst du damit wohl erzielen?
Die Batterieenergie entfleucht ja nicht direkt in den Äther. Also
heizt sie die Umgebung auf. Und deswegen kann keine Betauung
stattfinden, da die ja nur passiert, wenn der Sensor kälter als der
Taupunkt ist.
Bei einem Sensor der ein Jahr aus zwei AA-Batterien lebt, hast du eine
mittlere Leistung von vielleicht 0.0009W oder 0.9mW zur Verfügung.
Welchen Temperaturgradienten zur Umgebung wirst du damit wohl erzielen?
Na immerhin paar µK ...
... TemperaturERHÖHUNG. Und da der Taupunkt selten höher als die Außentemperatur ist, ist eigentlich keine Betauung möglich.