HomeMatic batteriebetriebener Temperatursensor mit AVR und AskSinPP

  • Um die Temperatur im Gefrierfach sehen zu können, habe ich eine Lösung gesucht, mit der es möglich ist, diese innerhalb der HomeMatic darstellen zu können. Fündig geworden bin ich hier. Zwar ist der DS18B20 für Spannungen unter 3V eigentlich nicht vorgesehen, aber bei meinen Versuchen konnte ich feststellen, dass er bis etwa 2V3 keine andere Temperatur anzeigt als bei 3V. Da die verwendete Lithium Batterie bei 2V3 nahezu komplett leer sein dürfte, wird ein Austausch schon vorher notwendig sein, weshalb ich es erst einmal mit dem DS18B20 probieren möchte. Sollte das auf Dauer nicht funktionieren, werde ich einen NTC nehmen. Die "original" Sensoren wie z. B. der Differenztemperatur Sensor nutzen ebenfalls NTC. Den hatte ich aber nicht in der Kramkiste liegen.


    Um das Projekt umzusetzen, habe ich meine bereits hier vorgestellte Platine als Basis genommen, den Arduino Bootloader installiert, BOD deaktiviert und den oben verlinkten Sketch geflasht. Zur Spannungsversorgung habe ich eine CR2 Zelle genommen, die bereits im Fach "Batteriemüll" lag, weil das bis vor kurzem damit betriebene Gerät sie als "leer" angemeckert hat. Sie hat noch gut 2V8 und ich möchte wissen, wie lange sie noch leergenudelt weden kann, bis wirklich nichts mehr geht.


    Damit keine Probleme mit Feuchtigkeit auftreten, habe ich alles zusammen in eine Gefriertüte eingeschweißt.

  • Wenn du mit der Batterie doch Probleme bekommen solltest oder wenn du mal höhere Spannung brauchst, kann ich dir eine Lithium-Thionylchlorid-Batterie/Zelle (z.B. Saft LS14250) empfehlen, die hat nominal 3,6 Volt, effektiv liegt sie bei vergleichbarer Last bei 3,4-3,3 Volt und hat auch eine vergleichbare Kapazität. Die Entladekurve läuft bis fast zum Ende beinahe waagerecht, sie verträgt auch tiefe Temperaturen besser als eine Lithium-Magnesiumdioxid-Batterie/Zelle und die Selbstentladung ist sehr gering. Ist allerdings auch etwa 1/3 teurer. Es gibt aber auch eine Version 14500 im AA-Format mit mehr als doppelter Kapazität - die ist in der Relation dann sogar billiger.

  • Hast du die Sensoren bereits im Gefrierfach im Einsatz? Und wenn ja, mit welchen Erfahrungen?

    Um welche Temperaturen geht es da? Ich schätze, bei -18° C gehen dir die CR2-Zellen gleich in die Knie (die gebrauchten sowieso).


    Hast du auf deiner Platine wirkliche einen AMS1117? Der hat einen Ruhestrom von 5-11 mA - damit hält die Batterie höchstens 200 Stunden... Außerdem hat der einen Dropout von 1 Volt - um 2,8 V zu bekommen müsstest du 3,8 V reinstecken. Das kann doch nicht stimmen, oder?

    So einen Sensor würde ich ohne Regler zu betreiben versuchen. Die Lithium-Thionylchlorid-Zellen sind da ideal, weil weitgehend konstante Spannung über die gesamte Kapazität.

    Deine Platine sieht auch so aus, als hättest du den Regler weggelassen... Hast du mal den Stromverbrauch der Platine im Betrieb gemessen?


    Ist das Auflöten des 328P mit "Hausmitteln" möglich oder hast du spezielle Werkzeuge? Ich würd' mich nicht so recht trauen, einen TQFP-Chip mit meinem Conrad 10€-Löteisen aufzubrutzeln. Oder ist das mit genügend Flussmittel letztlich doch kein Hexenwerk? Steckt das Ding unter dem Funkmodul?


    Apropos Funkmodul. Dein Modul hab ich bisher noch in keinem Projekt gesehen. Verbreitet ist ja das RFM69. Warum hast du dich dafür entschieden? (Ah, hab gerade gefunden... Wenn ich das richtig verstehe, ist das wohl das Referenzmodul für die Homematic-CUL-Systeme. CUL = CC1001 USB Lite.)

  • Die eingetütete Schaltung ist seit zwei Tagen im Eisfach des "Zweitkühlschranks". Die Temperatur schwankt in etwa zwischen -11 und -13 Grad. Bislang gibt es regelmäßig Temperaturmeldungen. Die Grafik sieht bisher sehr regelmäßig aus.


    Auf der Platine kann man den AMS1117 verwenden, wenn man von extern eine entsprechend hohe Spannung hat. Ich zapfe hierzu ganz gerne schon mal sowieso vorhandene USB-Buchsen (Receiver, Ladegeräte, RasPi, etc.) oder auch direkt Netzteile an. Betreibt man die Platine direkt an einer Batterie, wie in diesem Fall, lässt man den Spannungsregler weg und brückt mit einem Lötklecks IN und OUT, so dass man ohne Umwege die Spannung anlegen kann. Der Stromverbrauch liegt im Ruhebetrieb bei rund 0,0045mA, während der Messung bei ca. 10mA und wenn gesendet wird bei etwa 20mA. Gesendet wird nur, wenn sich die Temperatur verändert hat. Ich habe bei diesem Anwendungsfall von BiDi auf UniDi umgestellt, um Energie zu sparen. Wenn wirklich mal ein Wert fehlt, ist das nicht so tragisch. Die Sendung dauert in etwa 0,2 Sekunden. Rein rechnerisch liegt der Stromverbrauch damit bei einer Sendung pro 4 Minuten bei rund 180mA pro Jahr. Ich bin gespannt, ob das wirklich so sein wird.


    Da ich weder Dein Werkzeug, noch Deine Fertigkeiten kenne, kann ich nicht beurteilen, ob Du das hin bekommen würdest. Ich arbeite nicht nach der "nimm reichlich Flußmittel" Methode, sondern löte jeden Pin einzeln an. So kann ich sofort sehen, ob sich eine Lötbrücke gebildet hat oder nicht. Das hat bisher immer funktioniert. Der µC steckt in der Tat unter dem Funkmodul. Hier kann man ihn sehen.


    Das Funkmodul habe ich nicht ausgesucht. Es scheint das beste Modul zu sein, dass für einen bezahlbaren Preis für die HomeMatic "Nachbauten" zu bekommen ist. Stromverbrauch und Reichweite sind sehr gut. Daher habe ich mir noch nie Gedanken um Alternativen gemacht.

  • Ich staune, dass dir die Batterien nicht gleich einbrechen bei den Temperaturen. Gemäß Datenblatt dürften die halbleeren Dinger nicht weit über 2 Volt kommen.

    Ne volle Batterie müsste fast 5 Jahre halten... das wäre schon was.


    Ich hab nur einen Lötkolben der preiswertesten Kategorie und 0,5 mm Lötdraht. Bisher hab ich mich weitgehend auf Grobzeug beschränkt - 2mm-Raster vom ESP oder RFM und mal testweise einen IC, aber das ist mit dem Werkzeug nicht wirklich komfortabel. Was verwendest du denn?


    Ich hab nur mit nem halben Auge einen Beitrag gelesen, wo jemand dran gescheitert ist, ein FHEM/CUL-Modul mit RFM69 zu bauen... offenbar ist da dieses CC1101 der Standard. Preislich gibt es sich nichts. Hast du mal mit dem TPS62730 (Stepdown) experimentiert, der im Datenblatt des CC1101 empfohlen wird? Klingt interessant.

  • Naja, dass das alles nicht so völlig optimal ist, ist mir schon klar. Aber für diesen Anwendungsfall wäre auch eine Fehlerrate von einem Grad nicht tragisch. Ich hatte die Batterien rumliegen und wollte einfach mal testen, ob man damit noch etwas machen kann, bevor sie entsorgt werden.


    Mir geht es hauptsächlich darum, die Temperaturkurve über die Kurve des Stromverbrauchs zu legen, um zu sehen, wann wo welches Gerät für den Stromverbrauch verantwortlich ist. Wenn ich zusätzlich noch die Info bekomme, dass das Eis eine gute Konsistenz hat, um verzehrt zu werden, dann ist das nice-to-have. Vielleicht baue ich demnächst noch eine E-Mail Benachrichtigung ein, für den Fall, dass die Temperatur über einen Schwellwert steigt, weil das Fach nicht richtig verschlossen ist.


    Deinen Vorschlag mit der Saft14500, den finde ich richtig gut und werde mir so ein Teil die Tage bestellen. Die kommt dann im nächsten Schritt an die Schaltung, wenn die CR2 ausgelutscht ist.


    Ich nutze diese Lötstation mit diversen Lötwerkzeugen. Am ESP habe ich auch schon "rum gemacht". Das Rastermaß ist geringfügig kleiner als 2mm ;-)

    https://forum-raspberrypi.de/a…t/6973-esp8266-4gpio-jpg/


    Den Stepdown kenne ich nicht und sehe auch keinen Anwendungsbedarf dafür. Aber die Eckdaten hören sich in der Tat interessant an.

  • Hübsches Teil. So weit bin ich aber noch nicht, dass ich so viel Geld dafür ausgeben würde...


    Geringfügig... :daumendreh2: Naja, was ist schon eine Zehnerpotenz (wenn man in astronomischen Dimensionen denkt...) ;)


    Mit dem Stepdown könnte man aus der LS14250 nochmal knapp 50% mehr rausholen - und das Ding kostet nur 40 Ct. Den gibts auch mit 1,9 Volt - ideal für Atmega im LowPower-Betrieb - gerade bei "stromfressenden" Funkanwendungen oder vielleicht auch für den ESP8266/ESP32, der braucht ja auch ordentlich Strom. Ich hab da schon viel nachgelesen - die meisten Stepdowns lohnen nicht, weil sie selbst zu viel Strom brauchen, besonders bei ganz geringer Last (Sleep Mode). Dieser hat aber einen Bypass - so dass er nur bei Aktivität wandelt. Im Sleep-Mode hängt die Schaltung dann direkt an 3,6 Volt. Schade aber, dass das Ding nur bis 3,9 Volt geht. Für 3xAA ist das etwas zu wenig.

  • Damit keine Probleme mit Feuchtigkeit auftreten, habe ich alles zusammen in eine Gefriertüte eingeschweißt.

    Nach meiner Erfahrung ist es im Gefrierschrank bei -20 Grad ziemlich trocken, also sollte es keine Probleme mit Feuchtigkeit oder Betauung geben.


    Dem Foto nach zu urteilen hast du die Antenne um das Modul herum geführt, und das obere Ende liegt genau über den Zuleitungen für den DS18B20.

    Besser wäre es, die Antenne vom Modul weg zu legen, wie im ersten Foto. Das obere Ende der Antenne ist der empfindlichste Teil, eine pi X Daumen Regel besagt das Ende sollte mindestens 25mm weg von Masse sein. Du kannst dir damit schnell 10 -15 dB verminderte Sendeleistung einhandeln.


    Zwar ist der DS18B20 für Spannungen unter 3V eigentlich nicht vorgesehen, aber bei meinen Versuchen konnte ich feststellen, dass er bis etwa 2V3 keine andere Temperatur anzeigt als bei 3V.

    Da hast du Glück. Ich habe seit 2 Jahren ein Funkmodul mit DS18B20 mit 2 AA Alkaline Batterien im Freien im Betrieb. Keine Probleme bisher. Meine Messungen vorab ergaben allerdings dass ab <2.7 V mit zum Teil erheblichen Falschmessungen zu rechnen ist. Die Spannung der Batterien ist nach 2 Jahren immer noch über 2.9V.

    Auch die Auswirkungen der kälteren Temperaturen sind eher gering. Klar geht die Spannung bei Kälte herunter, aber das sind bei mir vielleicht max. 200mV. Bei Alkaline Batterien muss man aber auf Auslaufen aufpassen, deshalb schaue ich immer mal wieder nach. Lithium Zellen wären allemal besser, hatte ich aber damals nicht zur Hand. Austauschen moechte ich sie aber auch nicht, weil ich wissen moechte wie lange die Batterien so durchhalten.



    Mit dem Stepdown könnte man aus der LS14250 nochmal knapp 50% mehr rausholen

    ... auf was beziehst du die 50%?

    Den Einsatz eines Stepdown habe ich bis jetzt immer verworfen - Kosten/Nutzen/Layoutaufwand/Beschaffung/Loetaufwand etc.

    Die Effekte niedrigerer Taktfrequenz sind beim Atmega328p dramatisch: Verringert man die Taktfrequenz von 8MHz auf 1MHz, geht der Stromverbrauch (im Idle Mode) auf 1/3 zurück (konkret von 3 mA auf 1.1mA @ 3V Vcc). Desweiteren kann man im Sleep Modus dramatisch Strom sparen (also dem Modus wo der Stepdown sowieso nicht arbeitet), dazu gibt es sehr gute Anleitungen, z.B. http://www.gammon.com.au/power


    Dabei kommt es auf das Verhältnis Sleep/Aktivität an: In meinem Fall sende ich, anders als Neueinsteiger, alle 30 Minuten eine Messung. In diesem Fall überwiegt der Stromverbrauch der durch Sleep verursacht wird deutlich, und ein Stepdown macht wenig bis keinen Sinn. Sendet man alle 5 Minuten, muss man den Einsatz des Stepdown wirklich genau durchrechnen, und man muss sich natürlich auf fragen wie weit man gehen will.


    Meine Rechnungen haben ergeben, dass -ohne Stepdown - eine CR2032 Batterie (3V Lithium, 200mAh) etwa 3 Jahre hält wenn man alle 30 Minuten einen Burst sendet - und etwa 2 Jahre, wenn man alle 5 Minuten einen Burst sendet.

    Die drei Jahre kann man auf 5 Jahre verlängern, wenn man einen Uhrenquarz einsetzt um den Ruhestrom zu verringern (gemessen etwa 1.5 µA),

    genauere Beschreibung hier. Und das mit einer CR2032!

  • Ich bin von den relativ häufigen Sendungen ausgegangen, die Neueinsteiger genannt hat - ca. alle vier Minuten - sowie von den höheren Stromverbräuchen beim Messen (10 mA) und Senden (20 mA). Wenn alle anderen Optimierungen gemacht sind, wird ein erheblicher Teil der Energie für Messen und Senden verbraucht. Dieser Stepdown hat einen Bypass und wandelt dann eben nur bei Aktivität, man kann ihn zum Messen und Senden zuschalten und dann wieder abschalten. Der Wirkungsgrad ist so, dass von 3,6 V Lithium auf 2,1 Volt so Pi mal Daumen 50% mehr rauszuholen ist. Bei 10-20 mA sollten die Wirkungsgradverluste noch überschaubar sein - eine Grafik im Datenblatt lässt das so entnehmen. Eine Last mit 27 mA sinkt bei Verwendung des Stepdown auf 18 mA (+50% Kapazität). Zudem brauchen die Geräte (µC, Sender, Sensor) bei 2,1 Volt weniger Strom als bei 3,6 Volt. Es gibt außerdem eine Variante mit 1,9 Volt. Eine Kombination 328P/RFM69/BME280 würde auch mit 1,9 V laufen (innerhalb der Spezifikation).

    Bei längeren Sendezyklen lohnt sich das nicht, da gebe ich dir Recht. Ich hab das auch schon mal durchgerechnet. Bei Sendezyklen > 1/2 Stunde läuft der größte Teil über Ruhestrom und Selbstentladung (40 Minuten statt 4 wären zunächst mal nur noch 1/10 des Energiebedarfs für Messen und Senden - wenn man in erster Näherung davon ausgeht, dass wenige µA in Relation zu 10-20 mA vernachlässigbar sind - die Duty-Zeiten spielen da eine große Rolle - leider hab ich da keine exakten Daten, aber ich bin 100-500 mS ausgegangen...). Da würde ich eine Lithium-Thionylchlorid-Zelle nehmen und evtl. einen Spannungsregler (ultra low quiescent current), um den geringeren Strombedarf der Geräte bei der geringeren Spannung (1,8 statt 3,6 V) zu nutzen. Statt der teuren Lithium könnte man dann aber auch billige Super-Alkaline-Batterien nehmen.


    Hast du schon konkrete Langzeitwerte? Mir scheint 3 Jahre mit einer CR2032 eher etwas zu optimistisch. Ich hätte knapp unter 2 Jahre vermutet.

  • Hast du schon konkrete Langzeitwerte? Mir scheint 3 Jahre mit einer CR2032 eher etwas zu optimistisch. Ich hätte knapp unter 2 Jahre vermutet.

    Leider nein. Ich kann zwar den Strom während des Dutycycles relativ genau messen, dazu nutze ich ein R&S NGMO2. Nach Optimierung meines Sketches ist der Verbrauch etwa 0.85 mAs pro Burst, kann man auf 1mAs aufrunden um auf der sicheren Seite zu sein. Mit zwei Sendebursts pro Stunde und 200mAh Kapazität schafft man locker 3 Jahre. Ich habe aber zwei Unbekannte: a) inwieweit wird die Batterie durch den kurzzeitig hohen Strom (10ms 40 mA) dauerhaft geschwächt und b) wieviel Strom braucht es eigentlich, wenn der Prozessor alle 8s aufwacht, einen Zähler inkrementiert und wieder schlafen geht.

    Dies konnte ich bisher nicht quantitativ messen.

    Mal sehen...

  • Wow, du hast ja ne ganz schön professionelle Ausrüstung.


    Um das noch genauer zu messen, müsste man mit einem Oszi dran gehen... wäre sicher spannend.

    Aber die Werte klingen gut. Offenbar sind die Dutycycles kürzer als ich vermutet hätte. Ich plane aber auch mit Senden und Empfangen und einem etwas komplizierteren Protokoll, um Zeitabweichungen zu kompensieren (Rückmeldung der aktuellen Uhrzeit an den Atmega).

    Um Schwächung durch den kurzzeitigen Strombedarf zu vermeiden, würd ich etwas größere Kondensatoren verwenden. Soweit ich weiß, treten beim Senden nur sehr kurze Spitzen auf. Der Strombedarf beim Aufwachen lässt sich tatsächlich schwer bestimmen. Ich hab mal was gelesen, da hat jemand die Schaltung von einem geladenen Kondensator versorgt und damit den Stromverbrauch bis zum Zusammenbruch recht gut bestimmen können. Vielleicht wäre das für dich mal ein Ansatz für eine Messung.

  • Ja, mit dem NGMO2 hatte ich echt Glück - er stammt aus einer Firmenaufloesung und ich habe ihn für einen guten Preis ersteigert.


    Offenbar sind die Dutycycles kürzer als ich vermutet hätte.

    Kann man berechnen: Ich benutze 19200 Baud, 16 Bytes Payload (+ 6 Bytes System Overhead) pro Burst. Der Ack kommt auch für mich überraschend schnell zurück, nach 30ms.

    Ich benutze wo moeglich HTU21D Module, die brauchen pro Messung nach dem Aufwachen nur wenige ms zum Starten. Insgesamt ist mein Sensor so nur 200ms aktiv, und wie gesagt 10ms davon bei ca 40 mA (maximale Ausgangsleistung). Beim DS18B20 dauerts länger weil er einen ziemlich langen Messzyklus benoetigt.

    Ich plane aber auch mit Senden und Empfangen und einem etwas komplizierteren Protokoll, um Zeitabweichungen zu kompensieren (Rückmeldung der aktuellen Uhrzeit an den Atmega).

    Habe ich auch darüber nachgedacht, sprengt aber den Rahmen dieses Threads. Ich würde in den Rückkanal auch eine Frequenzkompensation und ein TX Power Management implementieren wollen.


    Um Schwächung durch den kurzzeitigen Strombedarf zu vermeiden, würd ich etwas größere Kondensatoren verwenden. Soweit ich weiß, treten beim Senden nur sehr kurze Spitzen auf.

    In Mobiltelefonen ist das gängige Praxis, aber man macht das nicht um die Batterien zu schützen, sondern um den Strom den der Sender kurzzeitig braucht überhaupt zur Verfügung stellen zu koennen. Wir reden da über Stroeme > 1A. Um den Spitzenstrom abzuschwächen muesstest du die Kondensatoren über einen Widerstand aufladen - oder? Muss mal geeignte Werte errechnen und dann ausprobieren/simulieren.

  • In Mobiltelefonen ist das gängige Praxis, aber man macht das nicht um die Batterien zu schützen, sondern um den Strom den der Sender kurzzeitig braucht überhaupt zur Verfügung stellen zu koennen. Wir reden da über Stroeme > 1A. Um den Spitzenstrom abzuschwächen muesstest du die Kondensatoren über einen Widerstand aufladen - oder? Muss mal geeignte Werte errechnen und dann ausprobieren/simulieren.

    Da hast du Recht. Wenn es drum geht, die Batterie zu schützen, müsste man den Ladestrom für den Kondensator begrenzen. Wäre einen Versuch wert. Allerdings würde ein Widerstand auch sinnlos Energie in Wärme verwandeln. Verwendet man nur einen Kondensator, kann man höchstens vermeiden, dass die Batteriespannung einbricht, wenn (kurzzeitig) ein gewisser Strom überschritten wird. Bei der LS14250 bricht die Spannung laut Datenblatt bei 54 mA bereits auf 3,1 Volt ein. Da wäre es bei Spitzen von 40 mA vielleicht sinnvoll, diese mit einem Kondensator abzufangen. Die Kapazität müsste dann aber schon deutlich größer sein als 10 ms x 40 mA = 400 µF, oder?

  • Wie ich es drehe und wende, ich komme immer wieder zu dem selben Ergebnis: Schaltung direkt an die Batterie klemmen ist am effizentesten. ich habe immer wieder Datenblätter studiert, von LDO's, Stepdown (Buck) Konvertern, Stepup, oder beides. Alle DC-DC Konverter haben einen Wirkungsgrad von max. 90%, und alle verbrauchen Strom im Sleep Modus. Bei einem Preis von gerade mal 30 Ct. für eine CR2032 in Industriequalität gehen mir einfach die Argumente aus warum ich irgendeine Form von Spannungsregelung einsetzen sollte.

    Wobei ich sagen muss dass es durchaus Anwendungen gibt, bei denen z.B. ein LDO oder ein Stepdown Sinn macht: Es gibt Leute, die wollen ihren Sender an eine 9V Batterie anklemmen. Oder man will den DS18B20 tatsächlich innerhalb seiner Spezifikation betreiben, oder oder oder....

  • Generell geb ich dir Recht. Allerdings hab ich vorher noch nie einen Spannungsregler mit Bypass gesehen, der eben in den Sleep-Modi nicht diesen hohen Verluststrom hat (sondern nur 30 nA). Und wenn ein Spannungsregler fast 50% der Energie in Wärme umwandelt, während ein Stepdown nur 10% Verluste hat, ist das bei etwas stromhungrigeren Anwendungen schon mal eine Überlegung wert. Zumindest wäre es mal interessant, was es in der Praxis bringt. Und in bestimmten Fällen ist es sicher auch angenehmer, die Batterie nur einmal im Jahr zu wechseln, statt zweimal. Klar, man kann natürlich auch einfach zwei Zellen parallel schalten oder eine mit höherer Kapazität nehmen...

    Einmal editiert, zuletzt von Gnom ()

  • Es gibt im Internet einige Threads, in denen ein ESP8266 nur mit CR3230 versorgt wird, und in denen der starke Strombedarf über ein Supercap gelöst wird. Der Supercap wird von der Batterie über einen Widerstand geladen.

    Selber denken,
    wie kann man nur?