Forum: Mikrocontroller und Digitale Elektronik Tristate DIP Schalter mit AVR abfragen


von Tishima (Gast)


Lesenswert?

Hallo!

Bin grade  auf Tristate DIP Schalter gestoßen und frag mich, wie man die 
mit AVR verwenden würde.
Hat jemand einen Tip, wie Tristate DIP Schalter mit nem AVR abgragt 
werden.
Die Dinger haben 3 Schaltzustände gegen + oder - geschaltet und offen.

gruß,
Bjoern

von Sebastian (Gast)


Lesenswert?

Vielleicht kann man die Portpins mit einem sehr großen Pull-Down 
Widerstand belasten, so dimensioniert, daß bei eingeschaltetem Pull-Up 
immer noch dieser überwiegt, aber sich dennoch in offenem Zustand ein 
Low-Pegel einstellt. Damit kann man dann den Schalter folgendermaßen 
abfragen: 1. Messung bei ausgeschaltetem int. Pull-Up: Wenn Pin High, 
dann Schalter=1. Wenn Pin Low, weiter zu Schritt 2: Int. Pull-Up 
einschalten. Wenn Pin High, dann Schalter=offen, wenn Pin Low, dann 
Schalter=0.
Habe das aber nicht ausprobiert.

von Björn W. (bwieck)


Lesenswert?

Tishima wrote:
> Hallo!
>
> Bin grade  auf Tristate DIP Schalter gestoßen und frag mich, wie man die
> mit AVR verwenden würde.
> Hat jemand einen Tip, wie Tristate DIP Schalter mit nem AVR abgragt
> werden.
> Die Dinger haben 3 Schaltzustände gegen + oder - geschaltet und offen.

Mit einem ADC wäre es kein Problem.
Spannungsteiler mit 2 Stück 47k Widerständen.

Den Schalter so dazwischen klemmen das jeweils einer der Widerstände 
überbrückt wird.

Schalter nach VCC = AD-Eingang 5V
Schalter nach GND = AD-Eingang 0V
Schalter offen = AD-Eingang 2.5V

Grüße
Björn

von Tishima (Gast)


Lesenswert?

Hallo!

Die Idee mit dem ADC hatte ich mittlerweile, auch schon.

Die Sache die Sebastian vorgeschlagen hat, werd ich mal bei Gelegenheit 
ausprobieren, wenn mit nem AVR mal wieder spielen muss.

Oder, hat jemand eine bereits erprobte Variante ?

gruß,
Bjoern

von Björn W. (bwieck)


Lesenswert?

Tishima wrote:

> Die Sache die Sebastian vorgeschlagen hat, werd ich mal bei Gelegenheit
> ausprobieren, wenn mit nem AVR mal wieder spielen muss.

Das könnte in der Theorie gehen, ist aber meiner Meinung nach 
grenzwertig.
Die Impedanz ist extrem hoch und fängt sich Störungen von aussen ein.
Der Pulldown muss auf den Porteingang angepasst sein.
Die internen Pullups sind nicht alle exakt gleich...
Sobald Du einen anderen baugleichen AVR nimmst, kannst Du wieder 
abgleichen.

Aber probieren kannst Du ja Mal

Grüße
Björn

von Uhu U. (uhu)


Lesenswert?

Ich habe sowas schon mal mit einem MSP430F20xx implementiert - 
funktioniert prächtig.

Der MSP430F20xx hat aber steuerbare Pullup- und Pulldownwiderstände.

Den Portpin habe ich an die Schaltwippe angeschlossen und die beiden 
anderen Kontakte an Ucc und GND.

Zur Messung wird in einer Timer-ISR zunächst der Pullup aktiviert. Im 
nächsten Timerinterrupt wird der Pinzustand ausgelesen und anschließend 
der Pulldown aktiviert. Im übernächsten Timerinterrupt wird das Spiel 
mit dem Pullup wiederholt...

Wenn der Portpin während des gesamten Zyklus auf einem festen Zustand 
steht, ist der Schalter im betreffenden Zustand. Wenn er der Vorgabe 
durch die Pull-Widerstände folgt, war der Schalter in Mittelstellung.

Die Timerperiode ist notwendig, damit sich die Pegel stabilisieren 
können.

von Peter D. (peda)


Lesenswert?

Du schaltest alle + des Schalters an einen Ausgang und alle Pullups ein.

Dann fragst Du 2-mal ab, den Ausgang mal auf 0 und mal auf 1:

0 - 0: -
1 - 1: Tristate
0 - 1: +


Peter

von Tishima (Gast)


Lesenswert?

Danke, Peter !

Das klingt plausibel. Werd ich bei gelegenheit mal so testen.

gruß,
Bjoern

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.