Taster mit ADC einlesen

Gast #309132
Lesenswert?

Hi,

mir mangelt es an Pins an meinem ATmega16 und es sollen noch 4 Taster
ran...
Damit nicht jeder Taster einen Pin "frisst" hab ich mir eine
Schaltung überlegt(Anhang).

Somit habe ich vor, den gedrückten Taster über den ADC zu erkennen.

Was meint ihr dazu?


Daniel
Angehängte Dateien:
Gast #309135
Lesenswert?

@Daniel
Gute Idee aber was passiert wenn S1 & S4 Gleichzeitig betätigt werden
?
@crazy horse
Also 1 mehr würd ich schon spendieren.
Es sei denn alle Taster ein ist dann dauer aus.

no bug ... feature :-)

Bleibt dann noch das problem mit dem Tasterprellen.....
( Tretmine )
Duck und weg ..........
Gast #309136
Lesenswert?

Das Prellen der Tasten bekommt man mit ´nem R/C vor dem A/D-pin weg.
Gleichzeitiges Drücken kann man ausschließen, wenn man eine
Widerstandskette nimmt, alle Taster schalten nach Masse und werden mit
dem anderen Pin jeweils zwischen die Kette gelegt. Der dem oberen Ende
der Kette, also dem A/D-Anschluß, nächstgelegene gedrückte Taster
gewinnt, alle weiter unten angeordneten sind damit automatisch in dem
Moment ausgesperrt.
Gast #309137
Lesenswert?

So können auch beliebige Kombinationen ausgelesen werden:
ich denke crazy horse meinte das auch so.



 +       T        T       T       T
        ---      ---     ---     ---          VCC
       -o o-    -o o-   -o o-   -o o-          +
     |  _ |  | _ | | _ | | _ |   _   |
      -|___|-  -|___|- -|___|- -|___|- -|___|-
     |                                |
    === 16k       8k     4k      2k   |   1k
    GND                               |
                                      |
                                      |
                                      |

                                      ADC




created by Andy´s ASCII-Circuit v1.22.310103 Beta www.tech-chat.de
Gast #309138
Lesenswert?

Vielen Dank für Eure Hilfe...
Das hört sich gut an, doch leider kann ich der Zeichnung von phagsae
nicht ganz folgen...Die Taster verwirren mich ein wenig.
Seh ich das richtig, dass nach jedem Widerstand(also links davon)
einfach ein Taster auf Masse schaltet?
Gast #309139
Lesenswert?

Jeder Taster brückt genau einen der Widerstände des Teilers (Die werden
nicht auf Masse gezogen, außer bei dem Taster ganz links!). Du kriegst
also auch beim Drücken mehrerer Taster für jede Kombination einen
anderen Spannungswert am ADC-Eingang.
Gast #309141
Lesenswert?

Durch die Taster werden die Widerstände (mit unterschiedlichen Werten!)
gebrückt.
Du kannst die 16 Möglichkeiten mit einer Wertetabelle
(Excel...)ausprobieren...

So funktionieren auch Widerstandsdekaden...
Gast #309144
Lesenswert?

Naja, wenigstens die vielen "auf-zu"-Preller vom Taster bekommt man so
gebügelt. Zunächst bekommt der A/D (bzw. das Programm) mit, daß sich der
Wert um einen Betrag x geändert hat. Bei der nächsten Abfrage (bspw. im
50ms Takt, je nach R/C) ist der Wert dann stabil. 2-3 Abfragen sind
sicher drin, um einen Widerstand sicher zu detektieren. Ein
Softwarefilter prüft die eingehenden Werte dann mit gewisser Toleranz
auf Plausibilität. Ohne R/C hingegen bekommt man im ungünstigsten Fall
etliche Millisekunden lang -zig Spannungssprünge um mehrere Volt, die
man überhaupt nicht vernünftig auswerten kann. Sicher kann man auch
hier im Programm warten, bis das "Rauschen" zur Ruhe gekommen ist,
aber das ist dann doch etwas unsicher, gerade bei älteren Tasten oder
in rauher Umgebung (Staub, Feuchtigkeit, Störfelder).

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