mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster mit ADC einlesen


Autor: Daniel R. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
durchaus üblich und funktioniert auch problemlos. Kannst du noch
vereinfachen, Widerstandskette. Kommt mit insgesamt 4 Widerständen aus.

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich die Spannungsteiler also weglassen?
Wo fällt dann die restliche Spannung ab?

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ..........

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein jeder taster kann einen Widerstand brücken

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achsooo....ok, alles klar.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Prellen der Tasten bekommt man mit ´nem R/C vor dem A/D-pin
> weg.

Das bringt aber auch nicht viel, oder? Man muß trotzdem so oft messen,
bis sich der Wert stabilisiert hat.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist wohl wahr...Ein RC muss auf alle Fälle hin.
Der Rest unterscheidet sich ja nicht viel vom Einlesen eines Tasters an
einem I/O Pin.

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.