mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DIP Schalter stromsparend beschalten


Autor: Chris S. (chris606)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich habe mal ein dumme Frage.
Ich möchte einen DIP Schalter an einen PIC anschließen und die 
Schaltzustände in der Firmware auslesen.
Nun bin ich am überlegen wie ich den DIP Schalter am besten beschalte um 
bei allen möglichen Schaltzuständen möglichst wenig Strom zu verbraten.
Hat da jemand einen Rat für mich?

Gruß
Christian

Autor: Falk B. (falk)
Datum:

Bewertung
6 lesenswert
nicht lesenswert
Zum Auslesen die internen Pull-Up Widerstände der IOs einschalten, 
danach die IOs auf Ausgang umschalten und LOW ausgeben. So brauchen sie 
0mA. Die DIP-Schalter müssen hierbei nach GND schalten.

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris S. schrieb:
> um
> bei allen möglichen Schaltzuständen möglichst wenig Strom zu verbraten

Ohne Zusatzaufwand geht das nicht, aber man kann ja die "Versorgung" der 
Schalter, also die der Pullup-Widerstände, abschalten. Entweder ist das 
bei den I/Os vorgesehen, oder man hängt die Pullups an einen extra 
Ausgang.

Oder man schaltet das ganze gleich als Matrix, dann ergibt sich die 
mögliche Abschaltung von selbst.

(Die vorige Version ist praktisch eine 1 x n Matrix).

Georg

Autor: Winfried M. (win)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Georg: Wieso soll das nicht gehen? Falk schrieb doch bereits, wie es 
geht.

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Ohne Zusatzaufwand geht das nicht,
Häh?

An meinen AT328 ist ein Schalter gegen GND, der im Normalbetrieb 
geschlossen ist.

Ich initialisiere meinen Pin als Output mit low. Schalter nach GND zu 
gibt keinen Strom, Schalter offen sowieso nicht.

Alle paar Minuten schalte ich meinen Pin auf Input mit internem Pullup 
um, frage den Schalter ab und stelle dann wieder auf Output - low um. Wo 
ist nun das Problem?

Autor: Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred (Gast) schrieb:
>> Ohne Zusatzaufwand geht das nicht,
>  Häh?

Ist das Umschalten von Ausgang/Low auf Input/PullUp kein
Mehraufwand? - Wenn auch nur im Programm-Code...

Autor: Patrick J. (ho-bit-hun-ter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... naja ... eine Batterie muß man auch noch anschließen ... vor lauter 
Schufterei kommt man hier gar nicht mehr zum Bier trinken ...

Wer den Aufwand scheut, einen I/O nominal als LOW,Output zu betreiben 
und zum Einlesen auf Input,PullUP umzustellen, sollte mit der 
eigentlichen Routiene, ob der Pin nun high oder low ist, gar nicht erst 
weiter machen ... DAS nimmt Einem aber noch nicht Mal ein Arduino ab -> 
falsches Hobby

MfG

Autor: Manfred (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Patrick J. schrieb:
> ... vor lauter Schufterei
> kommt man hier gar nicht mehr zum Bier trinken ...
Anstatt Bier zu trinken am PC zu sitzen spart Geld und ist gesünder - 
damit wird das ganz klar wirtschaftlich sinnvoll.

> Wer den Aufwand scheut, einen I/O nominal als LOW,Output zu betreiben
> und zum Einlesen auf Input,PullUP umzustellen, sollte mit der
> eigentlichen Routiene, ob der Pin nun high oder low ist, gar nicht erst
> weiter machen ...
"Routiene" - ???

> DAS nimmt Einem aber noch nicht Mal ein Arduino ab ->
> falsches Hobby
Aber Arduino kann das, in genau dieser Umgebung habe ich das gemacht. 
Ich habe das sogar gemacht, ohne hier um Rat zu fragen - wo ist mein 
Fehler?

Autor: Georg (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Chris S. schrieb:
> Nun bin ich am überlegen wie ich den DIP Schalter am besten beschalte um
> bei allen möglichen Schaltzuständen möglichst wenig Strom zu verbraten.

Ohne was zu tun geht das eben nicht, das haben weder Falk noch ich 
behauptet - man muss was umschalten, und es funktioniert auch nicht in 
"allen möglichen Schaltzuständen" ohne Strom. Wäre auch gegen 
Naturgesetze. Die vom TO gewünschte Beschaltung gibt es also nicht.

Winfried M. schrieb:
> @Georg: Wieso soll das nicht gehen? Falk schrieb doch bereits, wie es
> geht.

Auch nach dem Evangelium Falk geht es nicht einfach von selbst wie der 
TO das meint, und ausserdem hat nicht jeder Prozessor-I/O schaltbare 
Pullups, deswegen habe ich es ergänzt um die Möglichkeit, die Pullups 
mit einem Zusatzpin zu schalten. Scheint manche hier geistig zu 
überfordern.

Rein sachlich ist alles klar und von Falk und mir umfassend beschrieben. 
Wahrscheinlich kommen trotzdem noch einige zig sinnlose Posts wie "Hä". 
Sowas muss man ja einfach mal loswerden.

Georg

Autor: Patrick J. (ho-bit-hun-ter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Manfred schrieb:
> ohne hier um Rat zu fragen

^^ Da

Er gibt Es auch noch zu ;)

Auch beim Arduino musst Du etwas Programm - zumindest per C&P ins 
Steinchen transferieren.
Die Pin-Abfrage, ob High oder Low wird ebenfalls wohl gleich bleiben.
Einzig das Umschalten auf LOW(PullUp aus) und dann auf OUT lässt den 
sonst durch den PullUp weiter fließenden Strom auf Null zusammen 
schrumpfen.

Wo das Problem ist, Das So zu machen, erschließt sich mir auch nicht.
Die Idee ist simpel und toll gleichermaßen.
Kaum Mehraufwand (je zwei Befehle für vor und nach der Abfrage) und 
keinen 'Standby-Strom' für den Eingang.

MfG

Autor: Winfried M. (win)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Georg: Wer komplizierte Lösungen präsentiert, sollte das auch schon 
begründen. Anderen "geistige Überforderung" zu unterstellen, ist völlig 
überflüssig. ;)

Autor: Mani W. (e-doc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris S. schrieb:
> Ich möchte einen DIP Schalter an einen PIC anschließen und die
> Schaltzustände in der Firmware auslesen.

Früher (TM) hat man das mit 10 K bis 100 K Widerständen als
Pull up oder Pull down gelöst...

Autor: eProfi (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Dipschalter kommen bekanntlich öfter im Rudel vor, das kann bei 
batteriebetriebenen Geräten schon mal "ins Geld" (an die Knopfzelle) 
gehen.
Zur Sicherheit kann man über einen Angstwiderstand in Reihe zum Schalter 
nachdenken.
Zu beachten ist, dass beim Umschalten auf die Reihenfolge geachtet 
werden muss, also zuerst auf Low schalten, dann auf Ausgang, bzw. zuerst 
auf Eingang, dann auf Pullup.

Autor: Peter D. (peda)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Zwischen Einschalten des Pullup und Abfragen muß noch mindestens 1 NOP 
sein, da die Eingänge einen Zyklus vorher gelatcht werden.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mani W. schrieb:
> Früher (TM) hat man das mit 10 K bis 100 K Widerständen als
> Pull up oder Pull down gelöst...

Heutzutage (TM) ist soetwas in vielen Mikrokontrollern fest eingebaut 
und auch noch steuerbar. Wenn man nicht zu eigenwillige Vorstellungen 
hat oder die letzt 1/10 µs im Programm ausreizen will/muss, kann man die 
durchaus für solche Aufgaben benutzen.

Manfred schrieb:
> "Routiene" - ???

Oh, oh - etwas übermüdet?

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick J. schrieb:
>> ohne hier um Rat zu fragen
> ^^ Da
> Er gibt Es auch noch zu ;)
> Auch beim Arduino musst Du etwas Programm -
> zumindest per C&P ins Steinchen transferieren.
Programm muß ich in jedem Fall ins Steinchen laden, und das ist beim 
Arduino ja nun ziemlich einfach.

C&P macht wenig Sinn, ich schreibe meinen Kram selbst. Natürlich werde 
ich die Bedienung eines LCD oder Abfrage eines A/D-Wandlers nicht neu 
erfinden, da gebe ich schon zu, auf vorhandene Libraries zuzugreifen.

> Die Pin-Abfrage, ob High oder Low wird ebenfalls wohl gleich bleiben.
> Einzig das Umschalten auf LOW(PullUp aus) und dann auf OUT lässt den
> sonst durch den PullUp weiter fließenden Strom auf Null zusammen
> schrumpfen.
Was eigentlich schon in der ersten Antwort von Falk hinreichend 
erklärt wurde.

> Wo das Problem ist, Das So zu machen, erschließt sich mir auch nicht.
> Die Idee ist simpel und toll gleichermaßen.
Wenn wir ehrlich sind, wissen wir, auch aus eigener Erfahrung, dass man 
simple Lösungen mitunter einfach nicht sieht. Nach einem externen 
Denkanstoß kommt dann "Aha, das hätte ich selbst ..."

Mani W. schrieb:
> Früher (TM) hat man das mit 10 K bis 100 K Widerständen
> als Pull up oder Pull down gelöst...
Du hast die Ursprungsfrage nicht gelesen! Ich selbst hatte die 
Zielsetzung, das Gesamtsystem im sleep auf einstellige µA zu bringen.

100 kOhm an 5 Volt gibt ?? Mikroampere (rechne selbst!), das bringt 
jegliche Sparerei um.

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.