Stromsparen und Pull-up Widerstände?

OP (Firma: TU Wien) #231545
Lesenswert?

Hallo,
ich möchte eine batteriebetriebene Fernsteuerung bauen, deren Kernstück
ein ATtiny45V sein wird. Um Strom zu sparen verwende ich eine niedrige
Taktfrequenz und versetze den Controller so oft wie möglich in den
Sleep Mode, außerdem gibt’s noch die Möglichkeit nicht benötigte
Oszillatoren abzuschalten, das muss ich mir aber noch anschauen.

Ich möchte den Controller über eine steigende Flanke an INT0 aufwecken,
die Flanke soll durch einen Schalter erzeugt werden. Also dachte ich
mir, ich aktiviere den internen Pull-up Widerstand ziehe den Eingang
mit dem Schalter auf GND. Dummerweise kann es aber sein, dass der
Schalter dauernd gedrückt ist, der Eingang also auf GND liegt. Dann
fließt ständig ein Strom über den Pull-up Widerstand. Laut Datenblatt
hat der Pull-up zwischen 30 und 60k Ohm, das macht bei 3V immerhin 0,05
bis 0.1mA, die Unterumständen ständig aus meiner armen Batterie gesaugt
werden. Die Standbystromaufnahme des „nackten“ Controllers liegt im
Vergleich dazu um den Faktor 1000 niedriger bei ca. 0.1µA.

Was kann ich da machen? Ich könnte den int. Pull-up Abschalten und
einen größeren externen verwenden. Wie groß darf der max. sein? Ich hab
nix zu den Eingangswiderständen im Datenblatt gefunden. Gibt’s
vielleicht einen grundsätzlich anderen Ansatz?

Grüße
Flo
Gast #231548
Lesenswert?

Ja aber wenn der Controller "Wachh" sit kanst du doch dne Pullup
sofort abschalten, und erst wieder in den Sleepmodus schicken wenn nach
sagen wir 500ms oder 1s die Taste lsogelassen wurde, weil was bringts
dir den sofort wieder shcalfen zu legen wenn die Taste eh die ganze
zeit gedrückt ist.
Gast #231549
Lesenswert?

@Läubi: Die Taste ist eigentlich ein Schalter, der dauerhaft Strom durch
den Pullup ziehen kann...

Kann man da nicht ne trickreiche Schaltung nehmen, die aus den
statischen Pegeln (Dauerein oder Daueraus), dynamische Pegel macht? So
mit Kondensator im Signalweg... nur wie könnte sowas konkret aussehen?

Andere Idee: Wenn du den Schalter gegen einen UM-Schalter austauschen
könntest, der 0V oder 5V auf die Eingänge schaltet, dann brauchste auch
keine Pullups.

----, (QuadDash).
OP (Firma: TU Wien) #231550
Lesenswert?

Hallo QuadDash

> @Läubi: Die Taste ist eigentlich ein Schalter, der dauerhaft Strom
> durch den Pullup ziehen kann...

Genau.

> Kann man da nicht ne trickreiche Schaltung nehmen, die aus den
> statischen Pegeln (Dauerein oder Daueraus), dynamische Pegel macht?
> So mit Kondensator im Signalweg... nur wie könnte sowas konkret
> aussehen?

Ja, so was wär’ gut. Leider kenn ich mich da auch nicht aus, das ist
irgendwie "echte" Elektronik. Ein bisschen C programmieren ist ja
nicht so schwierig, aber für solche trickreichen Sachen fehlt’s...

> Andere Idee: Wenn du den Schalter gegen einen UM-Schalter
> austauschen könntest, der 0V oder 5V auf die Eingänge schaltet,
> dann brauchste auch keine Pullups.

Hab ich auch schon überlegt, geht aber nicht. Der Schalter ist kein
echter Schalter sondern ein "Schalter" in einem Drehimpulsgeber.
Wenn’s gut geht bleibt der so stehen, dass der Ausgang auf Vcc liegt,
in 50% der Fälle wird er aber auf GND liegen und wenn man dann die
Fernsteuerung weglegt fließt dauernd der Strom über den Pull-up. Dumme
Sache.

Grüße
Flo
OP (Firma: TU Wien) #231554
Lesenswert?

Hallo

@Läubi
> Also wenn der Ausgang eh VDD oder GND ist... wozu brauchst
> du dann einen Pullup?

Sorry, da hab ich Quatsch geschrieben, wollte sagen, er ist entweder
offen oder auf GND.

@Sebastian
> kannst du nicht einfach den pull-up abschalten wenn die letzte
> stellung des Drehimpulsgebers (vor dem schlafen) GND ist?

Geht auch nicht. Wird dann ein Stück gedreht ist der "Schalter"
offen, sprich der Eingang hängt in der Luft, da wird der Controller
nicht aufwachen, jedenfalls nicht definiert.

Ist irgendwie vertrackt...

Grüße
Flo
Gast #231558
Lesenswert?

Also open Collector, hm... also da kannst du nicht viel machen fürchte
ich.
du keonntest folgendes Versuchen (ohne gewähr):

ein NPN und ein PNP Mosfet als Inverter mit forgeschaltetem NPN gegen
(ok sollte man vermeiden) VDD, siehe Anhang kann aber auch sein das es
absoluter Humbug ist, ist jezt das einzige was mir so einfällt.
Angehängte Dateien:
OP (Firma: TU Wien) #231559
Lesenswert?

Hallo

@Sebastian
> kannst du den pull-up nicht zum pull-down machen ?
>(ich meine je nach der stellung vorm schlafen ).

Das geht auch nicht. Wenn ich's so mache, dass kein Strom fließt hängt
der Eingang am Controller bei der nächsten Stellung der Encoders in der
Luft.

@Andi
> Wieviel Amper Deine Batterien und welche Spannung?

3V Lithium Zelle mit 500mAh. Und die soll eben möglichst lang halten.

@Läubi
> Also open Collector, hm... also da kannst du nicht viel machen
> fürchte ich.

Scheint so. Mir schient das Problem aber nicht so ungewöhnlich. Kommt
doch sicher öfter vor, oder?

> du keonntest folgendes Versuchen (ohne gewähr):
> ein NPN und ein PNP Mosfet als Inverter mit forgeschaltetem NPN
> gegen (ok sollte man vermeiden) VDD, siehe Anhang kann aber auch
> sein das es absoluter Humbug ist, ist jezt das einzige was mir so
> einfällt.

Ah, danke für die Skizze. Ich versuch das mal zu simulieren, vielleicht
versteh ich's ja. Leider kann ich's hier grad nicht einfach probieren.


Ansonsten versuch ich einfach mal einen externen Pull-up mit 3M Ohm.
Inzwischen hab ich nämlich doch noch was zur Eingangsimpedanz gefunden,
angeblich ist sie 100M. Mit 3M Pull-up geht gibt das zwar vielleicht
keine steilen flanken mehr, aber die Schaltschwelle sollte schon noch
erreicht werden.

Grüße
Flo
Gast #231560
Lesenswert?

Mal angenommen, der Mindeststromverbrauch ist im Standby 150µA dann wäre
das eine max. Laufzeit von 500mA / 0,150mA = 3333 Stunden bzw. 138
Tage.
Rechnet man in diesem Zeitraum noch eine Bedienungszeit von 10 Stunden
mit 5mA mit ein, sind es dann bei 50mA weniger nur noch 3000 Stunden
bzw. 125 Tage.
Ich würde den Drehgeber erst mal mit externen Pullupps um die 100KOhm
versuchen, die internen haben ja auch 30 bis 40KOhm, wenn es mit
100KOhm geht, dann solange erhöhen, bis die Decodierung nicht mehr geht
und wieder einen Schritt zurück gehen.

MfG
Andi
OP (Firma: TU Wien) #231562
Lesenswert?

Hallo Andi

> Wie machst Du die Entprellung des Drehgebers?
> Mit Kondensatoren oder per Software?

Ich dachte an Software. Muss aber erstmal sehen, wie Schlimm der Geber
prellt. Der Drehgeber ist selbst gebastelt, zwei Schleifkontakte auf
einem Stück Platine.

Wenn’s wirklich ein RC Glied tut wäre das allerdings auch sehr
praktisch. Hast Du Erfahrungen mit der Wahl von R und C?

> [Laufzeitberechnungen]

Ich hab ähnliche Überschlagsrechnungen gemacht und die 125 Tage sind
zuwenig, drum macht mir der Pull-up ja so Sorgen.

> Ich würde den Drehgeber erst mal mit externen Pullupps um die
> 100KOhm versuchen, die internen haben ja auch 30 bis 40KOhm,
> wenn es mit 100KOhm geht, dann solange erhöhen, bis die
> Decodierung nicht mehr geht und wieder einen Schritt zurück gehen.

Ja, mach ich, wenn man so eine ernsthafte Verringerung des
Stromverbrauchs hinbekommt wär’ das am bequemsten.

Grüße
Flo
Gast #231563
Lesenswert?

Wie lange soll es denn laufen?
Sind 4 Monate (wenn auch in der Praxis) mit einer Knopfzelle nicht lang
genug?

>Der Drehgeber ist selbst gebastelt, zwei Schleifkontakte auf einem
>Stück Platine.
WOW! Respeckt!
Also kann es auch vorkommen, das beide Schleifer beim Loslassen des
Gebers durchkontaktieren was dann aus 100µA 200µA macht oder ist der
Geber mit Raster alle 2 Bitmuster, also bei 01 und 10 so das in
Ruhestellung nur einer durchkontaktiert?

Die Entprellung würde ich ohne Kondensatoren in Software machen da die
Kondensatoren auch noch etwas Strom zu GND führen.
In der Codesammlung ist ein gutes Drehencoder-Programm mit Entprellung
von Peter Dannegger.

MfG
Andi
OP (Firma: TU Wien) #231564
Lesenswert?

Hallo Andi

> Wie lange soll es denn laufen?
> Sind 4 Monate (wenn auch in der Praxis) mit einer Knopfzelle nicht
> lang genug?

Ich find nicht. Sollte so unkompliziert wie eine (gute) TV Fernedienung
seien, und die läuft jahrelang mit einer Batterie (meist hat die
allerdings auch mehr mAh.

>>Der Drehgeber ist selbst gebastelt, zwei Schleifkontakte auf einem
>>Stück Platine.
>
> WOW! Respeckt!

Keine Vorschusslorberen, noch ist er nicht fertig.

> Also kann es auch vorkommen, das beide Schleifer beim Loslassen
> des Gebers durchkontaktieren

Nach momentaner Planung ja.

> was dann aus 100µA 200µA macht

Ich wollte nur einen der Kontakte zum Aufwecken benutzen, dann ist der
zweite stromlos und es bleibt bei 100µA.

> oder ist der Geber mit Raster alle 2 Bitmuster, also bei 01
> und 10 so das in Ruhestellung nur einer durchkontaktiert?

Nein, kein Raster.

> Die Entprellung würde ich ohne Kondensatoren in Software machen
> da die Kondensatoren auch noch etwas Strom zu GND führen.

Hatte ich auch geplant, jedenfalls hab ich mal vorsichtshalber einen
ATtiny mit 4K Flash besorge, damit da auch sicher alles problemlos
Platz hat.

> In der Codesammlung ist ein gutes Drehencoder-Programm mit
> Entprellung von Peter Dannegger.

Oh, danke, werd ich mir raussuchen, hoffentlich in C.

Grüße
Flo
Gast #231567
Lesenswert?

naja du zieshst doch mit nem Transi auf GND.. ich würde mal schätzen mit
einem NPN.

Nun machst du einfach eine Stufe die einen NPN und einen PNP enthält
(in meiner skitze die beiden reichten Mosfets einfach durch PNP/NPN
transen ersetzen) welche du mit dem gleichen Signal anstuerst, die
Ausgänge zusammenlegen, einer der Transen sperrt dann immer und der
ander leitet, also hast du dan abwechselnd GND bzw. VDD anliegen.
Aber ich wieß natürlich nicht den genauen Aufbau deines
Selbstbauencoders.
Gast #231568
Lesenswert?

@Läubi: Ein normaler, einfacher Drehimplusgeber hat 2 Kanäle. Kanal A
und B.
Entweder leitet (zieht) Kanal A (01) über einen Schleifer die +3V auf
GND oder Kanal B (10) oder beide (00) oder keiner (11).
Da noch eine komplexe Elektronik einzubauen wäre Unsinn ausgenommen bei
optischen Drehimpulsgebern.

MfG
Andi
Gast #231573
Lesenswert?

Dran denken: Wenn du mit großen Pullup-Widerständen arbeitest, sind die
Eingänge sehr störempfindlich. Ein wenig statische Aufladung, ein Trafo
in der Nähe usw. bewirken einen Pegelwechsel. Also drauf achten, kurze
Leitungen zu verwenden und ggf. abzuschirmen. 100K sind noch gut in den
Griff zu bekommen, bei 1M-10M muss man schon genauer hinschauen.
OP (Firma: TU Wien) #231574
Lesenswert?

Hallo

@Läubi
> Kannst du sonst mal eine Bild / Zeichnung machen wie dein Drehgeber
> den nun genau aufgebaut ist?

Klar, noch ist er nicht fertig, aber ich schick Dir was, wenn er
funktioniert.

@Winfried
> Dran denken: Wenn du mit großen Pullup-Widerständen arbeitest,
> sind die Eingänge sehr störempfindlich.

Ja und langsam. Aber da kommt ja Netbandit's idee wie gerufen:

> Und sobald er aus dem Sleep gerufen wird schaltet er auf den
> internen PullUp.

Gute Idee, das mach ich.

Grüße
Flo

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren