Forum: Mikrocontroller und Digitale Elektronik 8 Buttons mit (einem) Analog-In messen - wie?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rene M. (sanduhrgucker)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ach Meno! Die Frage ist mir schon peinlich, aber muss wohl so raus:

Aus ein paar Resten in meiner Bastelkiste möchte ich mir einen Atari 
Touch Me nachbauen. Mit einem Attiny85, 4 LEDś, einer I2C 
7-Segmentanzeige und 8 Buttons kann man das sicher easy umsetzen. - 
Dachte ich mir.

Nun habe ich aber doch ein Problem:
Für die Erkennung der 8 Buttons wollte ich einfach die 3V 
Referensspannung per Widerstand an einem Analog-In runterdrücken.

Also rechnete ich 3/8 was zu einem 0,375V Bereich pro Button führt. 
Jetzt wollte ich mit dem Ohmschen Gesetz einfach ermitteln wie groß die 
Widerstände sein müssen. Das will mir aber nicht wirklich gelingen, weil 
AAA-Batterien  jede Menge verschiedene Stromstärken haben können.

Ist das noch irgendwie machbar, oder muss ich doch einen ganz anderen 
Ansatz verfolgen? - Klar ein anderer MC oder ein 
Schieberegister/Portmultiplexer würden das Problem auch lösen, sind aber 
grade nicht vorhanden.

Vielleicht hat ja jemand einen Tip?

von Max D. (max_d)


Bewertung
1 lesenswert
nicht lesenswert
Wenn dein adc als Referenz die Batteriespannung nutzt, dann kürzt sich 
selbige am Ende raus.

von nur zufällig hier (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich werfe einfach mal "Spannungsteiler" in den Raum.

von Jörg R. (solar77)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Rene M. schrieb:
> Also rechnete ich 3/8 was zu einem 0,375V Bereich pro Button führt.

Verstehe ich das richtig dass wenn z.B. Taste 1 gedrückt wird 0,375 Volt 
gemessen werden, bei Taste 2 0,75 Volt usw.?

Dann so:

nur zufällig hier schrieb:
> Ich werfe einfach mal "Spannungsteiler" in den Raum.


> Jetzt wollte ich mit dem Ohmschen Gesetz einfach ermitteln wie groß die
> Widerstände sein müssen. Das will mir aber nicht wirklich gelingen, weil
> AAA-Batterien  jede Menge verschiedene Stromstärken haben können.

Das Ohmsche Gesetz brauchts du eigentlich nicht. Alle Widerstände müssen 
einfach nur gleich groß sein, z.B. 10 K. Je höher umso weniger Last für 
die Batterien. Je geringer umso weniger Verfälschung durch den 
Eingangswiderstand des Analogpin vom Attiny85, aber höhere Belastung für 
die Batterien.

von Spannungsteiler (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey, wer will mich denn hier haben ? :-))
...ohne zu viel zu plappern, schau Dir doch mal an, wie es der
Chinamann mit dem Arduino Displayshield macht....

https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino

Der Vorteil von unterschiedlichen Widerständen ist es, daß bei
gleichzeitiger Betätigung mehrerer Taster ein Widerstandswert
entsteht, der mit keinem Verwendetem Widerstand übereinstimmt,
also auch gut auszuwerten ist.

von wendelsberg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Spannungsteiler schrieb:
> Der Vorteil von unterschiedlichen Widerständen ist es, daß bei
> gleichzeitiger Betätigung mehrerer Taster ein Widerstandswert
> entsteht, der mit keinem Verwendetem Widerstand übereinstimmt,
> also auch gut auszuwerten ist.

In dieser Schaltung nicht.
Wenn RIGTH gedrueckt ist, kannst Du dazu drucken, was Du willst, das 
Ergebnis bleibt AD0=0V.

wendelsberg

von Spannungsteiler (Gast)


Bewertung
1 lesenswert
nicht lesenswert
wendelsberg schrieb:
> In dieser Schaltung nicht.

Richtig!
Die Verwendete Technik soll dem TO weiterhelfen sein Vorhaben zu
realisieren.
Ich mag niemanden sein Häppchen in mein Mund stecken und das auch
noch kauen....

Wer gescheid weiterdenkt und selber Kreativ bleibt, der wird mit
mehr Wissen und guten Lösungen belohnt :-))

Weitergehts!!!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
1 lesenswert
nicht lesenswert
Seid ihr denn sicher, das ihr immer Querstrom durch eure 
Widerstandskette schicken wollt, auch wenn nichts gedrückt ist? Gerade 
bei den niedrigen Werten in 'Spannungsteilers' Schaltung fliesst doch 
recht reichlich und nuckelt die Batterie leer.
Schliesst den Spannungsteiler doch so an, das ein Strom erst dann 
fliesst, wenns Knöpfchen gedrückt wird.

: Bearbeitet durch User
von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Beitrag "Tastenmatrix auslesen über nur 2 Leitungen"

Das Rechnen kann man einfach dem Compiler überlassen.

von Klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rene M. schrieb:
> Aus ein paar Resten in meiner Bastelkiste möchte ich mir einen Atari
> Touch Me nachbauen. Mit einem Attiny85, 4 LEDś, einer I2C
> 7-Segmentanzeige und 8 Buttons kann man das sicher easy umsetzen. -
> Dachte ich mir.

Von den Teilen, die du hier auflistest, ist der µC sicher das billigste. 
Kauf dir einfach einen mit mehr Pins.

MfG Klaus

von Viktor B. (coldlogic)


Bewertung
1 lesenswert
nicht lesenswert
Ich werfe mal den Begriff "R-2R-DAC" in den Raum. Ist einfach 
nachzubauen und ermöglicht das Auslesen von jeder beliebigen 
Tastenkombination. ein schöner Nebeneffekt ist, dass im 8-Bit-Register 
des ADC des Attiny dann eine Stelle für einen Button steht. D.h. man 
kann ohne viel "switch case" und ohne große If-Konstrukte arbeiten durch 
den (1<<x) Schiebeoperator.

MfG, Viktor

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
Viktor B. schrieb:
> Ich werfe mal den Begriff "R-2R-DAC" in den Raum. Ist einfach
> nachzubauen und ermöglicht das Auslesen von jeder beliebigen
> Tastenkombination.

Bei 8 Tasten hast du 256 Kombinationen, das wird nix mit "normalen" 
5%/1% Widerständen. Da braucht man schon präzise 0,1% Resis und einen 
sauberen Aufbau um auch die "letzte" (aka LSB) Taste noch zuverlässig 
auszuwerten (von Kontaktwiderständen ganz zu schweigen).

von Jörg R. (solar77)


Bewertung
0 lesenswert
nicht lesenswert
Matthias S. schrieb:
> Seid ihr denn sicher, das ihr immer Querstrom durch eure
> Widerstandskette schicken wollt, auch wenn nichts gedrückt ist? Gerade
> bei den niedrigen Werten in 'Spannungsteilers' Schaltung fliesst doch
> recht reichlich und nuckelt die Batterie leer.

Bei insgesamt 80K und 3 Volt fließen 37,5 uA, das nuckelt die Batterien 
nicht schnell leer. Die Widerstände können ggf. auch noch erhöht werden.

Das Gerät ist zudem wohl mehr aus wie an, weil es scheinbar ein 
Spassprojekt ist.

: Bearbeitet durch User
von Rene M. (sanduhrgucker)


Bewertung
0 lesenswert
nicht lesenswert
So, mal eine kurze Rückmeldung.
Ich habe mir alles angesehen, und bin jedem Tip gefolgt.

Ich schätze ich werde die Widerstandskette "vom Chinamann" vielen Dank 
an (Gast) nehmen.

Vielen Dank an alle!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
-2 lesenswert
nicht lesenswert
Jörg R. schrieb:
> Bei insgesamt 80K und 3 Volt fließen 37,5 uA, das nuckelt die Batterien
> nicht schnell leer.

Ist aber unnötig. Wenn man den Stromverbrauch eines MC im Tiefschlaf 
(hier z.B. ein Tiny2313 mit 400nA) dagegen setzt, sind 37µA schon eine 
Menge. Bei der Schaltung von 'Spannungsteiler' sinds noch deutlich mehr.
Ausserdem missachtet die erste Schaltung den empfohlenen Quellwiderstand 
für ADC Betrieb.

: Bearbeitet durch User
von Jörg R. (solar77)


Bewertung
1 lesenswert
nicht lesenswert
Matthias S. schrieb:
> Jörg R. schrieb:
>> Bei insgesamt 80K und 3 Volt fließen 37,5 uA, das nuckelt die Batterien
>> nicht schnell leer.
>
> Ist aber unnötig. Wenn man den Stromverbrauch eines MC im Tiefschlaf
> (hier z.B. ein Tiny2313 mit 400nA) dagegen setzt, sind 37µA schon eine
> Menge. Bei der Schaltung von 'Spannungsteiler' sinds noch deutlich mehr.
> Ausserdem missachtet die erste Schaltung den empfohlenen Quellwiderstand
> für ADC Betrieb.

Das Gerät besteht unter anderem aus 2 Led 7-Segmentanzeigen. Schon 
deshalb spielen die 37uA überhaupt keine Rolle. Das Gerät wird 
vermutlich kaum zum Einsatz kommen weil es ein Spassprojekt ist. Der 
Tiny wird vermutlich auch nicht in den Tiefschlaf versetzt. Und, die 8 
mal 10k sind ein Vorschlag. Die können je nach Eingangswiderstand des 
Tiny, den ich grad nicht kenne, auch noch erhöht werden.
Rechne mal aus wie lang 2 AA Zellen 37uA bereitstellen können?

Der TO hat einen Attiny85, keinen 2313. Der 85er verbraucht vermutlich 
noch weniger Strom im Tiefschlaf, was aber wie oben beschrieben keine 
Rolle spielt.


Edit: Der Tiny85 hat 100M Eingangswiderstand am ADC. Die Widerstände 
können daher auch je 1M haben = 375nA Strom durch den Spannungsteiler.

: Bearbeitet durch User
von Manfred (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Klaus schrieb:
> Kauf dir einfach einen mit mehr Pins.

Ein selten dusseliger Vorschlag, irgendwann genügen halt die Ports nicht 
mehr.

Rene M. schrieb:
> Ich schätze ich werde die Widerstandskette "vom Chinamann" vielen Dank
> an (Gast) nehmen.

Eine analoge Tastenabfrage habe ich gerade aufgebaut, funktioniert gut.

Als Hinweis: Ich habe in der Software Toleranzfenster gebaut. Für z.B. 
meine Taste 5 erwarte ich vom ADC einen Wert "464" (von 1023), die Taste 
ist aber gültig, wenn ich zwischen 444 und 484 lese. Der Abstand von 
einer zur nächsten Taste beträgt hier ca. 100, da scheinen mir +-20 als 
Toleranzfenster passend.

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]
  • [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.