www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stromsparen und Pull-up Widerstände?


Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dukönntest (da der Mensch ja ein langsames Eingabegerät ist) den Pullup
nur einschalten wenn du auch tatsächlich den Schalter Abfragst.

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Läubi

> Du könntest (da der Mensch ja ein langsames Eingabegerät ist) den
> Pullup nur einschalten wenn du auch tatsächlich den Schalter
Abfragst.

Das geht nicht, der Schalter soll ja den Controler aus dem Sleep Mode
wecken.

Grüße
Flo

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sebastian arnd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
kannst du nicht einfach den pull-up abschalten wenn die letzte stellung
des Drehimpulsgebers (vor dem schlafen) GND ist?

Gruss sebastian

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn der Ausgang eh VDD oder GND ist... wozu brauchst du dann einen
Pullup?

Autor: David W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Läubis Aussage nicht zutrifft, dann kannste ja auch einfach mal nen
Megaohm ausprobieren, vielleicht reicht das noch ;)

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sebastian arnd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kannst du den pull-up nicht zum pull-down machen ? (ich meine je nach
der stellung vorm schlafen ).
sebastian

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Florian: Wieviel Amper Deine Batterien und welche Spannung?

MfG
Andi

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...meinte "...haben Deine...".

Autor: Läubi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie machst Du die Entprellung des Drehgebers?
Mit Kondensatoren oder per Software?

MfG
Andi

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm.. wenn der selbstgebaut ist, warum nderst du dan nicht die Open
Collector Schaltung?

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Läubi

> hm.. wenn der selbstgebaut ist, warum nderst du dan nicht die
> Open Collector Schaltung?

Und was schlägst Du vor? Umschalter? Das scheint mir nicht mit
vertretbarem Aufwand realisierbar sein.

Grüße
Flo

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja 2 Transen pro kanal finde ich keine Komplexe Elektronik, und er
will ja unbedingt keine Pullups benutzen....

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Die zwei Transistoren wären wirklich kein großer Aufwand, aber ich kann
doch den Eingang der Transistorschaltung auch nicht einfach offen
lassen, oder?

Grüße
Flo

Autor: Netbandit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wenn du im sleep Modus einfach einen sehr großen PullUp verwendest?
(größer 100k)
Und sobald er aus dem Sleep gerufen wird schaltet er auf den internen
PullUp.

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du sonst mal eine Bild / Zeichnung machen wie dein Drehgeber den
nun genau aufgebaut ist?

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian Rist (Firma: TU Wien) (frist)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.