Forum: Projekte & Code Batteriebetriebenes Thermometer und Hygrometer mit E-Ink Display


von Torsten R. (dode)


Angehängte Dateien:

Lesenswert?

Ich würde gerne mein drittes Projekt in den Ring werfen, das 
gleichzeitig mein erstes Projekt sein dürfte welches hoffentlich einem 
gewissen Anspruch gerecht wird und nicht aus gleich mehreren 
gravierenden Anfängerfehlern besteht.

Es handelt sich wahrlich um nichts Besonderes, sondern nur um ein 
batteriebetriebenes Thermometer und Hygrometer mit einem E-Ink Display.

Ich hab hier vor allem versucht, eine möglichst hohe Genauigkeit und 
geringen Stromverbrauch hinzubekommen. Und eben eine nette, gut 
ablesbare Anzeige, und ein hübsches Gehäuse, auch wenn es nicht gerade 
alltagstauglich ist...

Für Hinweise auf gröbere Fehler und Verbesserungsvorschläge wäre ich 
dankbar, ich lerne gerne dazu und ohne die super Ratschläge einiger 
Leute aus dem Netz wäre das Ding nicht halb so gut geworden.

Der Code ist hier: https://github.com/gitdode/thermidity

Torsten

von Michael B. (laberkopp)


Lesenswert?

Torsten R. schrieb:
> Ich hab hier vor allem versucht, eine möglichst hohe Genauigkeit und
> geringen Stromverbrauch hinzubekommen.

Im Prinzip hübsch, aber warum wählst du dann solche Bauteile ,?

https://sensirion.com/products/catalog/SHT35-DIS-F

Und welchen Stromverbrauch aka Batterielaufzeit bekommst du hin ?

https://www.soselectronic.com/de/products/sensirion/sht4x-smart-gadget-354220

Arbeitet dein Display von 2.7 bis 4.2V ?
Zumindest der SSD1680 sagt
VCI VCI operation voltage VCI 2.2 3.0 3.7 V

und ob das Adafruit-Board (neben den beiden Hilfsspannungen die es 
sowieso produzieren muss) auch diese regelt, konnte ich nicht 
herausfinden

von Torsten R. (dode)


Lesenswert?

Michael B. schrieb:
>
> Im Prinzip hübsch, aber warum wählst du dann solche Bauteile ,?
>
> https://sensirion.com/products/catalog/SHT35-DIS-F

Danke. Ich wollte gerne lernen bzw. es hinbekommen, ratiometrisch mit 
einem Thermistor und Feuchtesensor zu messen. Das ist sehr interessant 
finde ich.

>
> Und welchen Stromverbrauch aka Batterielaufzeit bekommst du hin ?
>
> https://www.soselectronic.com/de/products/sensirion/sht4x-smart-gadget-354220
>
> Arbeitet dein Display von 2.7 bis 4.2V ?
> Zumindest der SSD1680 sagt
> VCI VCI operation voltage VCI 2.2 3.0 3.7 V
>
> und ob das Adafruit-Board (neben den beiden Hilfsspannungen die es
> sowieso produzieren muss) auch diese regelt, konnte ich nicht
> herausfinden

Die Betriebsspannung beträgt 3 bis 5V. Das Display kommt mit einem 
Spannungsregler und Bus Transceiver daher, außerdem einem SRAM den man 
als Framebuffer nutzen kann.
Durch Messung + Schätzung + Berechnung kam ich mal auf ca. 70µA. Mit 
einem Supercap Kondensator experimentell ermittelt sind es knapp 90µA.

Wer misst, misst Mist, ich weiß. Ich hoffe aber dennoch auf gute 12 
Monate Betriebsdauer mit drei AAA Alkali-Mangan Batterien.

von Vanye R. (vanye_rijan)


Lesenswert?

Ich hab keine Ahnung was der Hersteller deiner MCU so toll
findet, aber so gefuehlt kommt mit 1nF an Aref etwas klein vor.

Du hast die Resetleitung direkt auf einen Port gelegt. Okay,
dein heimisches Wohnzimmer ist keine Industriehalle aber ich
wuerde mich trotzdem besser fuehlen wenn es da noch wenigstens
einen Kondensator, vielleicht auch noch einen Widerstand gaebe.
Sonst kann es dir passieren das deine Schaltung mal resettet
wenn du deinen Staubsauger einschaltest.

Ich haette den NTC auch direkt auf die Platine gemacht.
Sieht huebscher aus und bricht dann nicht irgendwann ab.

Der Nachteil davon ist natuerlich das du dann nicht die
Lufttemperatur sondern die Platinentemperatur misst.
Das kann man etwas verbessern wenn man da noch eine Einfraesung
vorsieht, da du aber auf moeglichst geringen Stromverbrauch
achtest, ist das in deinem Falle egal. Deine Platine sollte
immer Raumtemperatur haben.

Irgendeine Form von Sicherungsmassnahme am Eingang waer
nicht schlecht falls deine Schaltung mal kaputt geht oder
beim naechsten Gewitter in den LatchUp. Bei geringen Stroemen
muss das nicht zwangslaeufig eine Sicherung sein, aber es waere
besser dein Lithiumakku entlaedt sich dann z.B in einen 100R
Widerstand als mit 5A in deine Platine.

Andererseits, wenn du keinen dicken Lithiumakku verwendest sondern
irgendeine kleine Knopfzelle dann koennte ein Elko am Eingang die
Laufzeit der Batterie verbessern weil dein Controller ja fast immer
im Sleepmode ist und nur kurz viel, wegen E-Ink vermutlich sogar sehr 
viel,
Strom zieht. Das verlaengert dir dann die Batterielebensdauer.

Ich hab das Datenblatt deine Sensor nicht gelesen, aber 65k?
Waere da nicht etwas aus der E12 Reihe gegangen?

Es waer zur Bewertung deiner Leistung fuer andere auch nett wenn du
die mittlere und die maximalen Stromaufnahme angeben wuerdest. :)

Vanye

von Torsten R. (dode)


Angehängte Dateien:

Lesenswert?

Vielen Dank für deine sehr lehrreiche Antwort!

Vanye R. schrieb:
> Ich hab keine Ahnung was der Hersteller deiner MCU so toll
> findet, aber so gefuehlt kommt mit 1nF an Aref etwas klein vor.

Der Hersteller nennt im Datenblatt keinen konkreten Wert aber üblich 
sind hier wohl eher 10nF oder 100nF? Allerdings dauert es dann finde ich 
sehr lange, bis der Kondensator sich entladen hat wenn man AREF von AVCC 
(3-5V) auf die internen 1.1V umschaltet. Wenn ich das mit dem Oszi 
richtig angeschaut hab, dauert das mit 1nF schon ca. 125us (siehe 
Anhang) also habe ich versucht einen Kompromiss zu finden, also die 
Aktivzeit möglichst kurz zu halten.

> Du hast die Resetleitung direkt auf einen Port gelegt. Okay,
> dein heimisches Wohnzimmer ist keine Industriehalle aber ich
> wuerde mich trotzdem besser fuehlen wenn es da noch wenigstens
> einen Kondensator, vielleicht auch noch einen Widerstand gaebe.
> Sonst kann es dir passieren das deine Schaltung mal resettet
> wenn du deinen Staubsauger einschaltest.

Das werde ich bei der nächsten Schaltung oder ggf. bei einem "Update" 
berücksichtigen.

> Ich haette den NTC auch direkt auf die Platine gemacht.
> Sieht huebscher aus und bricht dann nicht irgendwann ab.

Wird das Ansprechverhalten dann nicht relativ träge? Ansonsten hätte ich 
das auch schöner gefunden.

> Irgendeine Form von Sicherungsmassnahme am Eingang waer
> nicht schlecht falls deine Schaltung mal kaputt geht oder
> beim naechsten Gewitter in den LatchUp. Bei geringen Stroemen
> muss das nicht zwangslaeufig eine Sicherung sein, aber es waere
> besser dein Lithiumakku entlaedt sich dann z.B in einen 100R
> Widerstand als mit 5A in deine Platine.

Ich frage mich, warum ich daran nicht gedacht hab. Betrieben wird die 
Schaltung mit 3 AAA Batterien oder Akkus. Wie gefährlich wäre denn ein 
Kurzschluss, muss ich nachbessern?
Wäre eine selbstrückstellende Sicherung sinnvoll oder ist damit die 
Verlustleistung/der Spannungsabfall zu hoch, auch verglichen mit einem 
100R Widerstand?

> Andererseits, wenn du keinen dicken Lithiumakku verwendest sondern
> irgendeine kleine Knopfzelle dann koennte ein Elko am Eingang die
> Laufzeit der Batterie verbessern weil dein Controller ja fast immer
> im Sleepmode ist und nur kurz viel, wegen E-Ink vermutlich sogar sehr
> viel,
> Strom zieht. Das verlaengert dir dann die Batterielebensdauer.

Auch interessant. Und es stimmt, wenn die Anzeige ca. alle 5 Minuten 
aktualisiert wird, ist der Controller aktiv und das Display nimmt 3mA. 
Das könnten zusammen ja schon 10mA sein. Gemessen hab ich etwa 3-7mA.

> Ich hab das Datenblatt deine Sensor nicht gelesen, aber 65k?
> Waere da nicht etwas aus der E12 Reihe gegangen?

Der Hersteller gibt im Datenblatt tatsächlich einen 65k "minimum load" 
Widerstand an. Ich hab einen 68k genommen, wollte aber mich aber im 
Schaltplan nicht einfach über die Angabe der Herstellers hinwegsetzen :)

> Es waer zur Bewertung deiner Leistung fuer andere auch nett wenn du
> die mittlere und die maximalen Stromaufnahme angeben wuerdest. :)

Die mittlere Stromaufnahme müsste bei 90uA liegen. Wenn im ADC noise 
reduction Mode gemessen wird, schätze ich 1-2mA und bei der 
Aktualisierung der Anzeige die maximale Stromaufnahme auf bis zu 10mA. 
Der Ruhestrom ist bei knapp 20uA.

Torsten

von Bauform B. (bauformb)


Lesenswert?

Torsten R. schrieb:
> Vanye R. schrieb:
>> Irgendeine Form von Sicherungsmassnahme am Eingang waer
>> nicht schlecht falls deine Schaltung mal kaputt geht oder
>> beim naechsten Gewitter in den LatchUp.

Es gibt LDO, die am Eingang ±20V oder mehr vertragen. So ein 5V-Regler 
könnte den Strom auf 100 oder 200mA begrenzen und funktioniert 
gleichzeitig als Verpolungsschutz und Überspannungsschutz, falls jemand 
zwei 3.6V Akkus einlegt.

Eine Sicherung vor dem LDO lohnt sich kaum, es sei denn, sie sitzt 
direkt am Akku.

von Vanye R. (vanye_rijan)


Lesenswert?

> Wird das Ansprechverhalten dann nicht relativ träge? Ansonsten hätte
> ich das auch schöner gefunden.

Ja wird es, aber wie schnell aendert sich deine Raumtemperatur?

> Der Hersteller gibt im Datenblatt tatsächlich einen 65k "minimum load"
> Widerstand an.

Echt bizarr. Hab ich so noch nicht gesehen. Ueblicher ist eigentlich
ein Opendrain, aber vielleicht braucht er das damit der Analogausgang
auf 0V runterkommt. Aber gut, kannst du natuerlich dann 65k hin machen.
Im industriellen Umfeld kostet mich das dann x Stunden Arbeiten einen
neuen Widerstand anzulegen. Dann wird das entweder 56k oder vielleicht
sogar zwei Werte in Serie. :)

> Ich frage mich, warum ich daran nicht gedacht hab. Betrieben wird die
> Schaltung mit 3 AAA Batterien oder Akkus. Wie gefährlich wäre denn ein
> Kurzschluss, muss ich nachbessern?

Wenn nichts passiert dann brauchst du keine Sicherung. :-D
Aber schau mal, du hast eine offene Platine. Demnaechst kommt dein
Kumpel zu besucht, sagt was fuer tolle Kiste und packt da dran und 
schwups
LatchUp. Vermutlich wird da nicht gleich dein Haus abbrennen aber dein
Mikrocontroller ist dann gefraggt.

Noch was, ich du hast ja auch ein paar ungenutze Pins am Controller,
schalte die auf Ausgang und Low. Lass die nicht einfach als 
Defaulteingang
rumfloaten.

Vanye

von Torsten R. (dode)


Lesenswert?

Vanye R. schrieb:

> Dann wird das entweder 56k oder vielleicht sogar zwei Werte in Serie. :)

Für den HIH-5030, der von 2.7-5.5V geht, gibt der Hersteller (bei 3.3V) 
65k an.
Für den HIH-4030, der von 4.0-5.8V geht, 80k (bei 5V).
Komisch oder? Weil ich mit 3.0-4.8V unterwegs bin hab ich also als 
Kompromiss 68k genommen.

> Wenn nichts passiert dann brauchst du keine Sicherung. :-D

Alles klar :)
Ich hab mich entschieden in die Zuleitung (+) vom Batteriehalter eine 
Feinsicherung 200mA träge einzubauen. Passt das?

> Noch was, ich du hast ja auch ein paar ungenutze Pins am Controller,
> schalte die auf Ausgang und Low. Lass die nicht einfach als
> Defaulteingang rumfloaten.

Ich hab wie vom Hersteller im Datenblatt empfohlen die internen Pull-Ups 
enabled: 
https://github.com/gitdode/thermidity/blob/1ceb835d456ac8ddfd7a7db7130275aef63acf98/thermidity-avr/thermidity.c#L86
1
The simplest method to ensure a defined level of an unused pin, is to enable the internal pull-up. In this case, the pull-up will be disabled during reset. If low power consumption during reset is important, it is recommended to use an external pull-up or pull-down.

Torsten

von Vanye R. (vanye_rijan)


Lesenswert?

> Ich hab mich entschieden in die Zuleitung (+) vom Batteriehalter eine
> Feinsicherung 200mA träge einzubauen. Passt das?

Kannst du machen. Aber du sagst dein Maximalstrom sind 20mA.
Mach einfach einen 10R Widerstand in Reihe. Kannst du ja
auch noch auf deine Platine machen. Oder nimm einen PTC:

https://www.reichelt.de/ptc-sicherung-smd-0805-15v-100ma-rueckstellend-ptc-fsmd0100805-p279327.html

Dessen Widerstand liegt bei 0.9 bis 8R.

Bei sowas findet man auch immer eine Leiterbahn auf einer vorhandenen
Platine die man durchkratzen und einfach so ein Teil drueber loeten 
kann. .-)

Vanye

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.