der Attiny84 ist im DeepSleep und wacht per Interrupt auf, wenn einer von 2 GND Eingängen, von denen jeder mit PullUp auf 5V gezogen ist, geöffnet wird.
Da standardmässig die beiden Eingänge an GND geschlossen sind verbraucht die Schaltung im DeepSleep 275µA.
Nur zu Testzwecken um Fehler in der Schaltung auszuschliessen:
Ist nur ein Eingang offen sind es 137µA und wenn beide offen sind es nur noch 0.1µA - also Schaltung ist ok.
Obwohl die 275µA jetzt kein Problem darstellen wüsste ich gerne, ob ich den Verbrauch noch reduzieren kann ohne das Design zu ändern.
Erläuterung: die beiden Eingänge sind Handy-Magnetladekabel und wenn eines davon von der Schaltungsbuchse abgesteckt wird, schaltet die Schaltung je nach offenem Eingang in den Fast- oder Slowcharge Modus.
Nicht unbedingt nötig. Kommt auf die Länge des Leiters zu den Kontakten an. Wenn die kurz genug ist und die Pullups groß genug sind, reichen die parasitären Kapazitäten bereits aus, um das in hinreichendem Maße leisten zu können.
Problem ist eher: man kann die Pullups nicht beliebig groß machen, weil ab so 1..10MOhm die parasitären Leitfähigkeiten Richtung GND immer stärker wirksam werden und mit den Pullups einen Spannungsteiler bilden, der die resultierende Spannung am Eingang immer näher an die Umschaltschwelle zieht. Oberhalb 10M Pullup ist deshalb kaum noch praktikabel, selbst wenn die Platine sorgfältig gefertigt wurde und nur in einer "home-Umgebung" mit einigermaßen stabilem Klima eingesetzt wird.
Das sieht doch so aus als ob da einfach interne pullup-Widerstände an den kurzgeschlossenen Eingängen Strom ziehen. Die kann man per SW abschalten und durch was hochohmiges (z.B. 1MOhm) ersetzen.
Alternativ kannst du einen Timer benutzen, um den Mikrocontroller in regelmäßigen Intervallen aufzuwecken. Du kannst dann in den kurzen wachen Phasen die Pull-Ups einschalten, die Eingänge abfragen, dann die Pull-Ups wieder aus schalten.
Womit sich unter 8 uA erreichen lassen sollte - aber, wie der Schwabe
sagt: "des macht de Kohl ned fett", verglichen mit den 10.7 uA.
Die 275uA machen den Kohl auch nicht fett - die Frage nach Verbrauchsteduzierung war nur interessehalber.
Wegen des Cents Stromkosten im Jahr schraube ich das Gehäuse jetzt nicht mehr auf ;-)
der Attiny84 ist im DeepSleep und wacht per Interrupt auf, wenn einer
von 2 GND Eingängen, von denen jeder mit PullUp auf 5V gezogen ist,
geöffnet wird.
Die Logik lässt sich nicht umdrehen: Im Sleep sind die Eingänge high und werden zum Aktivieren nach GND gezogen?
Danke für alle Antworten.
Mit jeweils 1MOhm Pullup bin ich bei 10,7µA.
Es gibt noch viel zu lernen ;-)
Ja, vor allem daß du auf dem Holzweg bist. Ob exteren Pull-Ups 1k oder 1M haben ist egal, denn die "Last" ist einen extrem hochohmiger CMOS-Eingang mit Leckströmen im sub uA Bereich. Dein Fehler liegt woanders, vermutlich bei einem Eingang mit intern aktiviertem Pull Up, der extern auf GNE gezogen wird. Man braucht an sich auch keine externen Pull Ups. Entweder die internen aktivieren, dann muss das IO-Pin offen bleiben oder das IO Pina uf Ausgang schalten. Dann ist auch eagl ob es auf LOW oder HIGH gesetzt wird, wenn da nix dran hängt.
Der ATtiny84 ist mit ca. 1uA bei 5V im Power Down Modus spezifiziert. Vermutlich hast du noch interen Module aktiv, welche Strom brauchen. Analogkomparator (der ist nach dem Reset immer aktiv), Brown out Detektor (per Fuses abschaltbar). Oder der Watchdog Oszillator.
Die 275uA machen den Kohl auch nicht fett - die Frage nach
Verbrauchsteduzierung war nur interessehalber.
Wegen des Cents Stromkosten im Jahr schraube ich das Gehäuse jetzt nicht
mehr auf ;-)
Ob das nur 1 Cent Stromkosten sind, hängt von der Anwendung ab. Wenn das eine abgesetzte Messstation ist, kann ein Batteriewechsel schnell mehr als das 10000-fache kosten.
Im Sleep sind die Eingänge LOW und wenn ich ein Magnet-Ladekabel vom im Gehäuse verbauten Handy-Anschlussadapter abziehe um es am Anschlussadapter des Handys anzudocken geht der entsprechende Eingang über den PullUp auf HIGH.
Daraufhin schaltet ein monostabiles Relais die Stromversorgung-Masse für eine Alexa-Platine, ein als Master konfiguriertes HC05 wird für 5 sek eingeschaltet und ein bistabiles Relais in die dem verwendeten Kabel entsprechende Pos geschaltet.
Das Handy erkennt die Verbindung mit dem HC05, pingt solange die Alexa-Platine an bis erreichbar, schaltet die Platine auf ON (GND) und schleift diesen Kontakt zur Kontrolle in den uC und gleichzeitig über das bistabile Relais zum Slow- oder FastCharge.
Ist das Handy zu 80% geladen schaltet es die Alexa-Platine auf OFF, der uC registriert das, schaltet alles aus und geht wieder schlafen.
Ziehe ich das Ladekabel dann vom Handy ab und docke es wieder am Gehäuse an, wacht der uC zwar wieder auf, erkennt aber LOW am Eingang und geht sofort wieder schlafen.
Ja, vor allem daß du auf dem Holzweg bist. Ob exteren Pull-Ups 1k oder
1M haben ist egal, denn die "Last" ist einen extrem hochohmiger
CMOS-Eingang mit Leckströmen im sub uA Bereich.
... Entweder die internen aktivieren, dann muss das IO-Pin offen
bleiben ...
oder das IO Pina uf Ausgang schalten...
Die internen PullUps sind aktiviert, die IO-Pins sind INPUT_PULLUP und es liegt jeweils Masse an, also der Kontakt zu Masse ist geschlossen.
Nur so kann ich erkennen, wenn ein Ladekabel abgezogen wird.
Wenn beide Ladekabel abgezogen - also der Kontakt offen ist - sinkt der Verbrauch auf 0.1 uA