8 DIP Schalter abfragen ad-wandler

OP #5674492
Lesenswert?

Hi,

gibt ein Widerstandsnetzwerk (Schaltung) welche/s es erlaubt 8 DIP 
Schalter (alle Kombinationen) über einen Analogpin sicher abzufragen?

Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit wenig (<=4) 
Pins 8 Schalter (DIP-Schließer) abzufragen?

Danke.

DS
OP #5674729
Lesenswert?

Hallo Karl,

danke für den Tip, es sind aber leider keine wechsler.

Hier:

http://www.avr-asm-tutorial.net/avr_de/apps/tasten_schalter_adc/tasten_schalter.pdf

Wird das ja schon ganz schön erklärt, es steht aber auch eindeutig da:

"Eine Warnung gleich zu Beginn: versuche das nicht mit mehr als vier 
Schaltern, es wird misslingen. Nimm dann besser zwei ADC-Eingänge für 6 
oder 8 Schalter."

Es geht aber meistens um Taster von denen maximal einer zurzeit gedrückt 
werden darf und nicht um Schalter von denen mehrere gleichzeitig aktiv 
sein können...

Gruß
Dennis
Gast #5674730
Lesenswert?

Karl M. schrieb:
> kann man ein R2R-Netzwerk verwenden.

Das verlangt Umschalter, die sind als DIP-Schalter selten.

Dennis S. schrieb:
> über einen Analogpin sicher abzufragen?

Das sind 256 Stufen, m.a.W. alles muss genauer als 1% sein. Mit 2 
ADC-Eingängen und damit 16 Stufen wäre das einfacher. Aber realisierbar 
ist es schon.

Klassisch wäre ein Schieberegister, dafür reichen 3 Pins. Ein einfaches 
Mäuseklavier benötigt fast immer Pullups an jedem Schalter, da kann es 
platzsparender sein 8 Controller-Pins zu verwenden, wenn die interne 
Pups haben - kein Hühnerfutter.

Georg
#5675016
Lesenswert?

Route 6. schrieb:
> DS2408 benötigt einen(!) I/O-Pin am µC für acht Ein-/Ausgänge.

Und ist gut teuer....
Bei einem Bastelpojekt spielt das zwar keine grosse Rolle, muss aber 
trotzdem nicht sein. Ausserdem brauchts auch einiges an Code (wenn nicht 
eh schon im Projekt)

-2 A/D-Eingänge gehen problemlos
-I2C ist auch ne Möglichkeit
-Schieberegister mit SPI wurde schon genannt, geht mit kleinen Tricks 
auch mit 2 Pins
Gast #5675140
Lesenswert?

Dennis S. schrieb:
> gibt ein Widerstandsnetzwerk (Schaltung) welche/s es erlaubt 8 DIP
> Schalter (alle Kombinationen) über einen Analogpin sicher abzufragen?
>
> Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit wenig (<=4)
> Pins 8 Schalter (DIP-Schließer) abzufragen?


Taster über Analogeingang ist doof, weil die Entprellung nicht gut geht.

Man könnte ein R2R Netzwerk nutzen, müsste aber 0.1% genau und damit 
teuer sein und jeder Schalter müsste ein Umschalter oder gepuffert sein 
(74HC244).

Besser ist Abfrage per Multiplex, wenn man andere Ausgänge hat die man 
kurzfristig beliebig schalten kann reicht dann sogar 1 (Digital-)eingang 
und pro Schalter 1 Diode.
#5675408
Lesenswert?

georg schrieb:
> Karl M. schrieb:
>> kann man ein R2R-Netzwerk verwenden.
>
> Das verlangt Umschalter, die sind als DIP-Schalter selten.
>
> Dennis S. schrieb:
>> über einen Analogpin sicher abzufragen?
>
> Das sind 256 Stufen, m.a.W. alles muss genauer als 1% sein.

Gute R2R-Netzwerke gibt es komplett mit den nötigen Umschaltern und 
Buffer-OP z.B. als AD5331 im TSSOP-20. Der braucht zwar noch eine 
positive Flanke, damit Änderungen am ADC ankommen, aber meist reicht 
dafür das Reset-Signal oder eine Blink-LED oder so. Zum Ausgleich ist er 
bei Digikey genau 1 Cent billiger als der DS2408 :)
Gast #5675469
Lesenswert?

Dennis S. schrieb:

> gibt ein Widerstandsnetzwerk (Schaltung) welche/s es erlaubt 8 DIP
> Schalter (alle Kombinationen) über einen Analogpin sicher abzufragen?

Nicht wirklich. Ein gutes Widerstandsnetzwerk ist ja nur die eine Hälfte 
der Aufgabe...

> Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit wenig (<=4)
> Pins 8 Schalter (DIP-Schließer) abzufragen?

Kommt drauf an. Nämlich: ob beliebige Kombinationen der acht Schalter 
erkannt werden müssen, oder ob nur nur ein Schalter erkannt werden muss 
(während alle anderen in der "Ruheposition" sind). Letzteres ist mit 4 
Pins problemlos machbar: Prinzip "Charlieplexing" (nur halt für Input). 
Du brauchst dazu nur 8 Dioden.

Ersteres hingegen nicht. Am zuverlässigsten und einfachsten wäre hier 
eine Lösung mit Schieberegistern, braucht zwei bis drei Pins am µC und 
ein passendes 8Bit-Schieberegister (PISO mit Latch). Im Falle von nur 
zwei µC-Pins auch noch ein DRC-Glied, um die Latch-Funktion 
bereitzustellen.
Gast #5675621
Lesenswert?

MaWin schrieb:
> Taster über Analogeingang ist doof, weil die Entprellung nicht gut geht.

Das habe ich neulich mit einem Arduino gemacht und funktioniert sauber: 
Wert lesen, 15ms später nochmal lesen. Wenn mehr als drei digit 
Abweichung, raus - wird geprellt haben. Im Gegensatz zu Dennis' Frage 
brauche ich keine gleichzeitige Betätigung.

c-hater schrieb:
> Kommt drauf an.

Wer lesen kann, ist klar im Vorteil:
Dennis S. schrieb:
> (alle Kombinationen)

Und genau da gerät die Kuh auf's Eis: 8 Schalter sind 256 Kombinationen, 
mit 12 bit Auflösung könnte das gerade so gehen. Ich bezweifele, dass 
das zuverlässig realisierbar ist.
Gast #5675650
Lesenswert?

Dennis S. schrieb:
> Hi,
>
> gibt ein Widerstandsnetzwerk (Schaltung) welche/s es erlaubt 8 DIP
> Schalter (alle Kombinationen) über einen Analogpin sicher abzufragen?
>
> Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit wenig (<=4)
> Pins 8 Schalter (DIP-Schließer) abzufragen?
>
> Danke.
>
> DS

Wie wäre es mit einem Schieberegister? Dann kannst du beliebig viele 
Schalter anschließen...
Moderator (Firma: Titel) Persönliche Seite #5676117
Lesenswert?

Dennis S. schrieb:
> über einen Analogpin sicher abzufragen?
"Sicher" geht das mit dieser Analog-Widerstands-Geschichte überhaupt 
nicht.
Denn wenn da "nur" ein einziges Bit kippt und das zwischen 01111111 und 
1000000 passiert,  dann hast du alle Schalter falsch eingelesen.

Und selbst wenn das heute mit neuen Schaltern noch geht: in 5 Jahren 
sind die oxidiert und haben nach dem Umschalten auch mal 
Übergangswiderstände im "100 Ohm und mehr"-Bereich...
Gast #5676146
Lesenswert?

Lothar M. schrieb:
> "Sicher" geht das mit dieser Analog-Widerstands-Geschichte überhaupt
> nicht.
> Denn wenn da "nur" ein einziges Bit kippt und das zwischen 01111111 und
> 1000000 passiert,  dann hast du alle Schalter falsch eingelesen.

Ich bitte Dich. Analoge Signale kann man leicht filtern. Und bei der 
Auswertung fragt man nicht auf Gleichheit ab, sondern ob sich der Wert 
innerhalb eines Bereiches befindet.

> Und selbst wenn das heute mit neuen Schaltern noch geht: in 5 Jahren
> sind die oxidiert und haben nach dem Umschalten auch mal
> Übergangswiderstände im "100 Ohm und mehr"-Bereich...

Das ist doch mehr als übertrieben. Kauf Schalter, zu denen es ein 
Datenblatt gibt.
#5676211
Lesenswert?

HildeK schrieb:
> Jetzt müsst ihr nur noch 0.1%-Widerstände finden, die die Toleranz über
> Temperatur, Alterung u.a. auch noch einhalten werden.
> Wird nicht einfach sein ...
>
> Lothar M. schrieb:
>> "Sicher" geht das mit dieser Analog-Widerstands-Geschichte überhaupt
>> nicht.
>
> Dem schließe ich mich an.

ABER:

Dennis S. schrieb:
> Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit
> wenig (<=4) Pins

Also sind 2 oder 3 Analog-Eingänge erlaubt. Mit 3 Eingängen, also 3 
Schaltern pro Eingang, ist es ja wohl trivial.
Mit 4 Schaltern an einem Eingang kann man z.B. 2k4, 4k7, 10k, 20k nehmen 
und 2k4 für die andere Seite vom Spannungsteiler; 1% reicht locker. Dann 
liefert ein 10-Bit-ADC:
1
 0   1023
2
 1    914
3
 2    826
4
 3    753
5
 4    678
6
 5    628
7
 6    585
8
 7    547
9
 8    512
10
 9    483
11
10    457
12
11    434
13
12    408
14
13    389
15
14    372
16
15    357
Sicher geht alles noch sicherer...

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