Hi,
ich will mit einem kleinen Board periodisch i2c Sensorwerte ins Netz
schicken.
Die Idee ist einen Attiny13 + ESP8266 zu benutzen[1]. Ersterer soll
einen Buck/Boost Converter alle 10 Minuten einschalten. Es soll der Bus
gelesen und die Batteriespannung gemessen werden.
Ich habe dafür einen "ein/ausschaltbaren" Schaltkreis für einen Voltage
Divider gefunden[2] und für meine Volt Werte (max 3x 1,5 AA ~ 5,1V)
angepasst. Der ADC des Esp kannt analog zwischen 0 bis 1V entscheiden,
weshalb für eine saubere Messung maximal 1V ankommen darf.
Der Converter ist ein TPS63031[3].
Die Besonderheit an dem Board soll sein, dass man den ESP und den Attiny
direkt darauf programmieren kann. Sprich die Pins für ISP und die UART
Schnittstelle des Esp sind freigelegt.
Damit der Attiny nicht von zwei Stromquellen gespeist wird, kann man
mittels Jumper zwischen Batterie oder den 5v aus dem ISP Interface
entscheiden.
Ich habe einen Schaltplan und dazu ein Board gemacht und würde mich
freuen wenn ihr da mal drüber schauen könnt.
Ich hab dem ESP einen 10uF Glättungskondensator vorgesetzt. Ist dieser
ausreichen? Der Esp kann bis 200mA ziehen.
Ist der Voltage Divider in Ordnung? Durch EN_ADC auf High wird der
P-Mosfet ausgelöst, der wiederum den N-Mosfet schaltet, wodurch die
externe Batteriespannung zwischen den beiden Widerständen gemessen
werden kann.
Gibt es dafür Besonderheiten, die es auf dem Platinenlayout zu
berücksichtigen gilt?
Für den Konverter hab ich aus dem Datenblatt ein empfohlenes Layout
übernommen. (Es sind noch nicht alle Routen geroutet)
Noch einen schönen Abend.
[1]http://homecircuits.eu/blog/battery-wifi-iot-temp-hum-soil-moisture-sensors/
[2]https://www.electricimp.com/docs/hardware/power_story/
[3]http://www.ti.com/lit/ds/symlink/tps63031.pdf
Je seltener WiFi angemacht werden muss, umso groesser ist der
Spareffekt. So ein "Winz"-AVR ist da voellig fehl am Platz.
Ich wuerd da eher zu einem STM8 tendieren. Selbst die kleinsten
haben 2 kB RAM und koennen damit viel mehr Daten bis zum
Versand zwischenpuffern.
10 bit AD-Wandler haben sie ausserdem.
Fuer 12 bit AD-Wandler: STM8L.
> Ich hab dem ESP einen 10uF Glättungskondensator vorgesetzt.
Viel zu wenig. Eher 500 - 1000 uF.
Zum Schalten von irgendwelchen Stromversorgungen wuerde ich
einen IRML6402 nehmen.
Betriebsspannungen kann man einfach mit einem Spannungsteiler
ohne komplizierte Mimik messen.
--- schrieb:> Je seltener WiFi angemacht werden muss, umso groesser ist der> Spareffekt. So ein "Winz"-AVR ist da voellig fehl am Platz.>> Ich wuerd da eher zu einem STM8 tendieren. Selbst die kleinsten> haben 2 kB RAM und koennen damit viel mehr Daten bis zum> Versand zwischenpuffern.> 10 bit AD-Wandler haben sie ausserdem.> Fuer 12 bit AD-Wandler: STM8L.
Mir hat es den Anschein, und ich denke so ist es auch gewollt, ist der
AVR ausschließlich dafür da den Buck Booster ein und auszuschalten. Mehr
muss und braucht er auch nicht zu tun, und wenn man es ganz genau nehmen
würde: dafür ist er dann auch schon völlig überdimensioniert - da würde
auch schon ein Tiny10 6-Pin mit 1kb reichen.
Danke für das Feedback. Der Tiny10 klingt super und hat noch weniger
Verbraucht im DeepSleep,top.
Genau, der Avr soll lediglich den ESP hoch und runter fahren, indem der
Converter über den EN Pin eingeschaltet wird. Nachdem der ESP seine
Aufgabe erledigt hat, schickt er einen Interrupt an den AVR, der dann
den Konverter ausschaltet und nach 10min wieder aufwacht und EN wieder
auf high setzt.
Wenn ich den Spannungsteiler ohne die Mosfets mache, wird direkt Strom
verbaucht, sobald der Konverter Saft auf die Leitung gibt. Da ich
möglichst lange mit den Batterien auskommen will, sollte die
Spannungsmessung effizient laufen. Der Mosfet sieht interessant aus,
werde später mal die Datenblätter gegenchecken, danke!
Jonathan schrieb:> Genau, der Avr soll lediglich den ESP hoch und runter fahren, indem der> Converter über den EN Pin eingeschaltet wird.
Der ESP8266 benötigt im Deep Sleep 20µA. Du bist ganz sicher, dass sich
das lohnt? Normale AA Zellen mit 2 Ah haben bei 20µA eine Laufzeit von
nominell 100.000h, also 11 Jahre. Da ist die Selbstentladung grösser.
Hallo Jonathan,
habe ein ähnliches Projekt realisiert...
Warum lässt du den zusätzlichen µC nicht einfahc ganz weg und schickst
den ESP in den DeepSleep? Aufwecken kannst ihn dann indem du den GPIO16
mit dem Reset Pin verbindest.
Was mir noch auffällt zu deinem Layout, die Spannungsversorgung
(Leiterbahnen) zum ESP sind für meinen Geschmack deutlich zu dünn.
Ich hatte immer wieder Probleme, daß der ESP, trotz dickem Elko,
unregelmäßig Resets durchführte.
Erst seit ich die Leiterbahnen zur Stromversorgung des ESP mind. 1mm
breit mache ist damit Ruhe.
Gruß Andreas
- Die GND-Plane sollte nicht unter der Antenne sein
- Die drei blauen Leiterbahnen können auch noch auf TOP geroutet werden
- Unbenutze Pins des ESP könnte man auf separate Header-Pins legen
Deep Sleep dürfte bei 4,5V nicht gehen. Dann müsste die
Spannungsversorgung (Buck Boost) immer eingeschaltet bleiben. Insofern
ist der AVR schon sinnvoll (in dem Fall hätte ich es auch so gemacht).
Allerdings hätte ich auf den Buck Boost verzichtet und einen Ultra Low
Drop verwendet. Das ist deutlich einfacher aufzubauen. Auch verstehe ich
die komplizierte Messschaltung für die Batterie nicht. Wenn man sowieso
immer nur kurz einschaltet, kann man die Batterie auch direkt messen.
Wenn die 4,5V aus Batterien kommen, dann kann man einfach nur 2
einsetzen. Der ESP arbeitet auch bei 2,5V noch, auch wenn es nicht im
Datenblatt steht. Alternative wäre ein LiFePO4-Akku mit günstigem
Spannungsbereich.
Für Batteriespannungsmessung lege ich das obere Ende immer auf einen
PortPin und schalte den für die Messung auf H. Das war bisher genau
genug und ich kann den Spannungsteiler trotzdem abschalten. Letztlich
ist doch in dem Port auch nur ein MosFET, der nach VCC schaltet. Geht
aber natürlich nicht, wenn die Batteriespannung erst heruntergesetzt
wird.
Solder
A. K. schrieb:> Du bist ganz sicher, dass sich> das lohnt?
Da ich den Strom umwandeln muss und der Konverter die ganze Zeit laufen
würde, ja. Mit dem Attiny sinkt der Verbrauch dann effektiv auf unter
5uA.
Andreas K. schrieb:> Erst seit ich die Leiterbahnen zur Stromversorgung des ESP mind. 1mm> breit mache ist damit Ruhe.
Danke für den Tipp, das werde ich ausbessern! Zum DeepSleep, der
Konverter müsste parallel dazu die ganze Zeit laufen, wodurch die
Batterien nicht lange mitmachen würden.
Pete K. schrieb:> - Die GND-Plane sollte nicht unter der Antenne sein
Danke! Wäre es besser für die Antenne, wenn sie gänzlich freistehen
würde, also das ich den GND Plane möglichst weiträumig um sie herum
rausnehme? Oder reicht auch nur der Bereich den sie bedeckt?
Christian S. schrieb:> Deep Sleep dürfte bei 4,5V nicht gehen. Dann müsste die> Spannungsversorgung (Buck Boost) immer eingeschaltet bleiben.
Genau. Ich habe noch nicht viele Batterie Anwedungen umgesetzt, deswegen
denke ich das LDOs eher für Anwendungen mit Netzteilen ausgelegt sind.
Außer den etwas komplexeren Aufbau spricht doch eigentlich nichts gegen
den BuckBoost.
Jonathan schrieb:> Der Esp kann bis 200mA ziehen.
Das reicht noch nicht. Bei Betrieb eines ESP-01 an einem Linearregler
mit 100µF am Eingang (U_in 7V), geht der Eingangsstrom in Peaks von
2..3ms Dauer durchaus auf 300mA hoch.
würde erstmal dem Schaltplan einen ERCverpassen. Oder sind die nicht
angebunden (auch ohne gelbes Gummiband) Kondensatorpins links neben dem
4pol Stecker Absicht?
> Wäre es besser für die Antenne, wenn sie gänzlich freistehen würde ..
Die Antenne muss frei von Kupfer sein, besser noch ganz in der Luft.
Unter der Antenne also min. rectangels auf den keepout und restrict
layern legen. Besser noch an den Rand und ausfräsen (wenn's nix extra
lostet)
Jonathan schrieb:> Die Besonderheit an dem Board soll sein, dass man den ESP und den Attiny> direkt darauf programmieren kann. Sprich die Pins für ISP und die UART> Schnittstelle des Esp sind freigelegt.
Ähem, gibt es irgendjemanden der den anderen Weg geht (fertig
programmierte OTP's aufzulöten)?
> Ich habe einen Schaltplan und dazu ein Board gemacht und würde mich> freuen wenn ihr da mal drüber schauen könnt.
Meine Empfehlung wäre 2 Netzklassen anzulegen (class befehl)
- Power 0.4 in vias 0,8mm
- Signal 0.2 in vias 0,6mm
und mit ch class die Leitungen im .sch zuzuordnen
Dann das board aufrippeln ( ri * ;) und neu routen. Dann bekommst du
wie von Zauberhand vernünftige Leiterbahnbreiten.