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
:
Bearbeitet durch User
Hallo, Für die AD-Wandlung von 8 Bit, kann man ein R2R-Netzwerk verwenden. Siehe: https://de.wikipedia.org/wiki/R2R-Netzwerk
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
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
Dennis S. schrieb: > Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit wenig (<=4) > Pins 8 Schalter (DIP-Schließer) abzufragen? DS2408 benötigt einen(!) I/O-Pin am µC für acht Ein-/Ausgänge. Er kann sogar darüber mit Spannung versorgt werden (parasite power).
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
Dennis S. schrieb: > Oder eine andere schnelle Lösung mit etwas Hühnerfutter Eine Reduzierung der Pins für eine Tasteneingabe mache ich immer mit ein paar Dioden. Mit der gezeigten Schaltung können 7 Tasten mit 3 Pins abgefragt werden. Für 8 Schalter wird ein 4. Pin benötigt, aber keine weitere Diode.
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.
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 :)
Hermann W. schrieb: > Eine Reduzierung der Pins für eine Tasteneingabe mache ich immer mit ein > paar Dioden. Nütztz leider bei DIP Schaltern nichts.
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.
Stefanus F. schrieb: > Nütztz leider bei DIP Schaltern nichts. Warum wohl nicht? Dennis S. schrieb: > 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... Das war die Voraussetzung für die Diodenlösung. Geht also wunderbar.
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.
Manfred schrieb: > Wer lesen kann, ist klar im Vorteil: > Dennis S. schrieb: >> (alle Kombinationen) Verdammt, das habe ich doch tatsächlich überlesen. Also, ganz klar: Schieberegister ist die einzig zielführende Lösung.
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...
Was soll der ganze Stress mit Schieberegistern oder one-wire? Zwei Analog-Eingänge und 10 normale Widerstände reichen doch für 2 mal 4 Schalter. Außer, es gibt sowieso einen I2C-Bus. Der ist mit 0 Pins, 0 Widerständen und 1 IC natürlich schon attraktiv.
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...
:
Bearbeitet durch Moderator
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.
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.
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...
Bauform B. schrieb: > Dann > liefert ein 10-Bit-ADC: 0 1023 > 1 914 > ... > 15 357 Diesen Werten sieht man an, daß sie sehr gut separiert werden können. Persönlich würde ich einen IIC-Bus auf zwei freien Pins per Software aktivieren, mit dem sich geeignete IO-Expander abfragen lassen.
Bauform B. schrieb: > ABER: > > Dennis S. schrieb: >> Oder eine andere schnelle Lösung mit etwas Hühnerfutter mit >> wenig (<=4) Pins Das hatte ich übersehen bzw. nicht mehr im Fokus - sorry. War auf einen Pin fixiert.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.