Forum: Mikrocontroller und Digitale Elektronik taster über analogeingang abfragen


von volker (Gast)


Lesenswert?

Hallo,

mit meinem Arduino will ich mehrere Taster (10-20) abfragen. Habe nun 
durch googeln eine mir passende Lösung gefunden: es sollen alle taster 
an einem analogeingang abgefragt werden um dieses zu ermöglichen soll 
jeder taster einen anderen Widerstand "einschalten".

Solche Beispiele habe ich nun schon genug gefunden , aber ich will 
gleichzeitig einen Interrupt auslösen nun meine Frage kann ich einfach 
den von den Tastern kommenden impuls (der über den Widerstand kommt) an 
den Interrupt pin anschliessen. Hängt wahrscheinlich davon ab wie groß 
mein Widerstand ist.

Wenn man das so löst spart man sich doch auch das entprellen, oder ?

Viele Grüße

Volker.

von Teo D. (teoderix)


Lesenswert?

Nee, das wird so nix.
Wieso glaubst Du einen Interrupt zu brauchen?
Falls gebraucht, überlege auch ob Deine Schaltungsbeispiele auch mit 
gleichzeitigem drücken mehreren Tasten klar kommen.

von volker (Gast)


Lesenswert?

hallo,

danke für die Antwort.

kann ich überhaupt ohne interuppt sinnvoll arbeiten ? ich will den 
arduino ja auch mal einschlafen lassen oder vielleicht etwas anderes 
zeitintensives machen und da würde der interuppt das programm ja immer 
zur analogabfrage zwingen.

Mehrere Taster können nicht gedrückt werden und wenn doch dann gibt es 2 
möglichkeiten entweder passiert nichts (Widerstandswert wird nicht 
gefunden) oder das falsche (zufällig gibt es den Widerstandswert schon) 
beides ist aber egal sollte es aber wirklich ein problem werden dann 
kann man doch die taster die man zusammen drücken kann auch mit so einem 
Widerstand versehen dass eine auswertung möglich ist

Welche anderen möglichkeiten hätte ich denn?  Porterweiterung , 
flipFlops und Schieberegister (ist wahrscheinlich eine Porterweiterung)

gruss volker.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Der Analogeingang braucht eine Spannung, also muss das ein 
Spannungsteiler sein. Um Ungenauigkeiten zu vermeiden am besten alle 
Widerstände hintereinander und die Taster gehen auf die 
Verbindungspunkte. Der gemeinsame Pol aller Taster zum Analogeingang, 
außerdem die Spannungen so wählen, dass ein pull-Up bei ungedrücktem 
Taster fast bis auf 5V zieht und dann ein Transistor zum 
Interrupteingang. Offene Taster - kein Interrupt, irgendeiner gedrückt - 
Interrupt (muss der high oder low sein?).

von Joe F. (easylife)


Lesenswert?

Du könntest einen LC75700T verwenden.
Das Ding scannt dir eine Matrix von bis zu 30 Tasten autark, und könnte 
deinen Arduino bei Tastendruck aufwecken (Leitung DO geht auf low).

von Jens (Gast)


Lesenswert?

Moin,

es gibt doch den Analog Comperator, der einen Interrupt auslösen kann. 
Damit sollte es möglich sein, auch mit kleinen Spannungen, wie sie eine 
Tastatur-Matrix am Analogport liefert, einen Interrupt auszulösen.

Alternativen:
 AD-Wandler im free running mode laufen lassen, den Interrupt nutzen
 An jede Taste noch eine Diode, darüber digitalen Eingang zum Interrupt 
nutzen

Gruß
Jens

von m.n. (Gast)


Lesenswert?

Da es nur den einen Arduino gibt, ...
Wenn es ein AVR basiertes Teil ist, nimm einen der Eingänge PC0-PC5, 
einen Pullup-Widerstand (10k) und zu schaltende Widerstände, die am 
ADC-Eingang einen Pegel <= 2 V erzeugen. Jedes Drücken einer Taste kann 
dann zusätzlich über PCINTx (x = 8-13) erkannt und ausgewertet werden.

von ??? (Gast)


Lesenswert?

Was willst Du denn machen ?
Den Arduino mit jedem der Taster aufwachen lassen ?
Oder willst Du die Taster via IRQ abfragen, das wird nix !
Über den ADC bekommst Du den angelegten Wert der Spannung gegen die 
Referenz.
Keine Ahnung wie das intern beim Arduino geregelt ist, ob 3,3V oder 5V 
oder extra REF.
Mußt Du im Datenblatt nachlesen.
Spannungsteiler wurde ja schon genannt, wenn Du mehrere Taster 
gleichzeitig abfragen willst mußt Du den so berechnen das immer ein 
eindeutiger Wert herauskommt und der sich nicht bei verschiedenen 
Kombinationen wiederholt.
Wie man Spannungsteiler berechnet weißt Du ?
Ich persönlich würde zum Aufwachen einen extra Taster nehmen, dann weiß 
man auch was Sache ist.
Oder wenn man den ADC Pin auch als IRQ verwenden kann vor'm schlafen 
gehen den als IRQ definieren und beim Aufwachen dann wieder als ADC 
konfigurieren.
Da mußt Du aber wieder nachsehen ab welchem Pegel da ein IRQ erkannt 
wird.

von Andreas (Gast)


Lesenswert?

Schieberegister ist doch gut.

Zum Analogeingang:
Man könnte mit dem Analog Comparator bei einer Spannungsänderung ein 
Interrupt auslösen, aber...

5V / (20 + 1) = 0.238V ( +1 = keine Taste gedrückt)
Mit 8 Bit: 255 / 21 = 12.14 = 12 Digits
Mit 10 Bit: 1023 / 21 = 48.7 = 48 Digits

Die Fehlerwahrscheinlichkeit ist dabei sehr hoch!

Entprellen muss man aber sowieso in beiden Fällen

MfG,
Andreas

von Joe F. (easylife)


Lesenswert?

Andreas schrieb:
> Entprellen muss man aber sowieso in beiden Fällen

Wie denn?
Wenn die Analogspannung sich nicht "sprungartig" ändert, sweepst du dir 
schön alle Tasten nacheinander durch...

von m.n. (Gast)


Lesenswert?

??? schrieb:
> Oder wenn man den ADC Pin auch als IRQ verwenden kann vor'm schlafen
> gehen den als IRQ definieren und beim Aufwachen dann wieder als ADC
> konfigurieren.

Das ist genau überhaupt nicht erforderlich.

> Da mußt Du aber wieder nachsehen ab welchem Pegel da ein IRQ erkannt
> wird.

Da muß man nicht immer wieder nachsehen: ein Blick ins Datenblatt zeigt 
den richtigen Schwellwert nebst Hysterese.

von volker (Gast)


Lesenswert?

hallo,

danke.

könnte man auch die widerstände nicht in reihe schalten sondern an jedem 
taster einen anderen und dann parallel zum analogport , wäre mir wegen 
meiner kabel die schon liegen lieber. ginge natürlich auch mit 
reihenschaltung.

das mit dem transistor, das habe ich jetzt noch nicht gesehen. damit 
werden die Taster dann ja praktisch entprellt. Weil das eigentlich noch 
ein problem wäre wenn ich mit einem unentprellten Taster auf den 
Interuppt gehe.

Viele Grüße

Volker.

von ??? (Gast)


Lesenswert?

m.n. schrieb:
> ??? schrieb:
>> Oder wenn man den ADC Pin auch als IRQ verwenden kann vor'm schlafen
>> gehen den als IRQ definieren und beim Aufwachen dann wieder als ADC
>> konfigurieren.
>
> Das ist genau überhaupt nicht erforderlich.
>

Warum, löst der ADC immer einen IRQ aus wenn was anliegt ?

>> Da mußt Du aber wieder nachsehen ab welchem Pegel da ein IRQ erkannt
>> wird.
>
> Da muß man nicht immer wieder nachsehen: ein Blick ins Datenblatt zeigt
> den richtigen Schwellwert nebst Hysterese.

Ja was glaubst denn Du wo er nachsehen soll ?

von ??? (Gast)


Lesenswert?

volker schrieb:
> hallo,
>
> danke.
>
> könnte man auch die widerstände nicht in reihe schalten sondern an jedem
> taster einen anderen und dann parallel zum analogport , wäre mir wegen
> meiner kabel die schon liegen lieber. ginge natürlich auch mit
> reihenschaltung.
>

Das kommt wieder darauf an ob Du erkennen willst ob mehrere Taster 
gleichzeitig gedrückt sind.
Da mußt Du dann R||R ausrechnen und dann in URI einsetzen.

> das mit dem transistor, das habe ich jetzt noch nicht gesehen. damit
> werden die Taster dann ja praktisch entprellt. Weil das eigentlich noch
> ein problem wäre wenn ich mit einem unentprellten Taster auf den
> Interuppt gehe.
>

Ob der Taster am IRQ Pin prellt interessiert nicht viel, wenn Du in die 
IRQ Routine den AufwachIRQ abschaltest kann da sooft was anliegen wie 
will, kein IRQ wird ausgelöst.
Und wenn Du das via ADC machen willst nimm den schon genannten 
FreeRunningMode und sample da mindestens fünfmal drüber bevor Du den 
Wert auswertest.
Softwareentprellung sollte man Hardwareentprellung vorziehen.
Also überlege Dir ob immer nur ein Taster gedrückt werden kann/darf und 
wie Du das mit dem wake erledigen willst.

von volker (Gast)


Lesenswert?

hallo,

sind das schon viele Antworten , Danke, die muss ich erst mal alle 
verstehen ???

zu Andreas:  Schieberegister war meine erste Idee glaube aber nicht dass 
ich das hinbekommen hätte die Lösung mit dem Analogeingang fände ich 
einfacher.

Warum muss ich in beiden fällen entprellen ?

Bei der Analoglösung wird ja ein Wert gemessen und ja nach wert wird 
eine Aktion ausgelöst also könnte ich doch eine gewisse Zeit (1s) messen 
und den höchsten Widerstand nehmen.

Bei der schieberegister Lösung wird ja so eine art FlipFlob geschaltet 
und dann holt sich der Arduino das irgendwann ab dann muss ich doch auch 
nicht entprellen.

Was ist ein AnalogComperator ?


Viele Grüße Volker.

von volker (Gast)


Lesenswert?

hallo gast


auch wenn ich die widerstände parallel schalte müsste ich doch einen 
Unterschied zwischen Taster1 Taster2 und Taster1 und gleichzeitig 
Taster2 erkennen.

das mit dem Interuppt abschalten ist eine sehr gute Idee dann könnte ich 
beim ersten flakkern auslösen IRQ abschalten Messen und dann wieder 
einschalten.


Viele Grüße  Volker

von volker (Gast)


Lesenswert?

hallo,

wie muss ich mir den IRQ mit einem extra Taster vorstellen. Muss ich 
dann bevor ich einen Taster betätige immer den AufwachTaster drücken ?

Grüße Volker.

von m.n. (Gast)


Lesenswert?

volker schrieb:
> könnte man auch die widerstände nicht in reihe schalten sondern an jedem
> taster einen anderen und dann parallel zum analogport

Nur so und natürlich mit jeweils anderen Widerstandswerten. Andernfalls 
kann man den gedrückten Taster nicht eindeutig zuordnen.

??? schrieb:
> Warum, löst der ADC immer einen IRQ aus wenn was anliegt ?

Du weißt, was PCINT beim AVR bedeutet?

volker schrieb:
> wie muss ich mir den IRQ mit einem extra Taster vorstellen. Muss ich
> dann bevor ich einen Taster betätige immer den AufwachTaster drücken ?

Nein! Jeder Taster kann die ISR auslösen.

von volker (Gast)


Lesenswert?

hallo,

@m.n

leider stehe ich mit meine fast Anfängerkenntnissen auf dem Schlauch

Wenn ich jeden Taster mit dem IRQPort verbinde und jeden Taster über 
einen Widerstand mit dem Analogport dann werden doch durch die 
Verbindung mit dem AnalogPort die Taster "gemischt"

Kannst Du mir da bitte etwas mehr erklären?

Vielen Dank


Gruß Volker.

von Andreas (Gast)


Lesenswert?

Joe F. schrieb:
> Wie denn?
> Wenn die Analogspannung sich nicht "sprungartig" ändert, sweepst du dir
> schön alle Tasten nacheinander durch...

So lange warten, bis der Wert sich nicht mehr ändert, bei einem 
"digitalem" Taster macht man das doch genau so :)

An Volker

> Was ist ein AnalogComperator ?
Der Analog Comp a rator ist bereits im Controller eingebaut, er 
vergleicht zwei Spannungen und beim Überschreiten einer Schwelle löst 
ein Interrupt aus.

> Warum muss ich in beiden fällen entprellen ?
Beim Schalten springt der Kontakt ein bißchen, als Faustregel, je älter 
der Schalter, desto schlimmer. Der Controller ist aber so schnell, dass 
er das Prellen als mehrere Tastendrücke "sehen" kann. Deswegen wartet 
man auch, bis man den nächsten Tastendruck akzeptiert.

Bei der analogen Lösung misst man nicht den Widerstand, sondern die 
Spannung. Die bekommst Du mit Hilfe eines Spannungsteilers. Wenn alle 
Widerstände in Reihe sind, ist es einfacher die (gleichen) 
Spannungsstufen zu erzeugen. Man nimmt gleiche Widerstände, z.B. 1K, 
dann ist der Spannungsabfall bei 20 Tastern etwa 240mV.
Hier muss man aber auch abwarten, bis die Spannung sich nicht mehr 
ändert, dann kann man den Taster "berechnen".
Das Problem ist, das die Kontakte mit der Zeit verdrecken und oxidieren, 
dann stimmt die Spannung u.U. nicht mehr.

Die Schieberegister liest man in kurzen Abständen ein und prüft ob die 
Eingelesene Taster betätigt wurden.

MfG,
Andreas

von ??? (Gast)


Lesenswert?

m.n. schrieb:
>
> ??? schrieb:
>> Warum, löst der ADC immer einen IRQ aus wenn was anliegt ?
>
> Du weißt, was PCINT beim AVR bedeutet?
>

Ja und was hat das nun mit dem ADC zu tun ?
Der ADC Pin kann als digitaler Eingang/Ausgang, Analogeingang und 
IRQ-Pin genutzt werden.
Wenn ich nun z.B. den ADC so einstelle das automatisch eine Wandlung 
angestoßen wird wenn sich am Pin was tut hat das nichts mit PCINT zu 
tun.
Die sichere Seite ist also immer den Pin so umzukonfigurieren das sich 
da nix ins Gehege kommt.
Oder ich verstehe gerade nicht was Du sagen willst.

von volker (Gast)


Lesenswert?

hallo,

@andreas

vielen Dank für Deine Bemühungen aber ich verstehe es nicht . Ich dachte 
ich muss nur entprellen wenn der Taster oder Schalter direkt eine Aktion 
bewirkt wenn ich aber doch den Widerstand/Spannung messe dann ist es 
doch egal wieviele male der Schalter/Taster vorher flakkert ich muss nur 
den höchsten wert nehmen und dann etwas auslösen.

Bei dem Schieberekister dachte ich daß da so eine Art Speicher FlipFlops 
davor sind und diese dann auch einmalig von 0 auf 1 gehen und erst vom 
AVR zurückgesetzt werden können , nach der Übertragung durch 
Schieberegister.

Vielleicht kapiere ich es mit eurer Hilfe irgendwie


grüße Volker.

von Andreas (Gast)


Lesenswert?

1
                        +
2
                       +     + +5v
3
                 +----+   ---+
4
                 |           |
5
                 |          +-+
6
                 |          | | 1k
7
                 |          | |
8
                 |      +   +-+
9
                 |     +     |
10
                 +----+  +---+
11
                 |           |
12
                 |          +-+
13
                 |          | | 1k
14
                 |          | |
15
                 |      +   +-+
16
    zum uC +-----+     +     |
17
                 +----+  +---+
18
                 |           |
19
                +-+         +-+
20
                | | 1M      | | 1k
21
                | |         | |
22
                +-+         +-+
23
                 |           |
24
                 |           |
25
                 +-----------+
26
                        |
27
                      +---+
28
                       +-+
29
                        +

Wenn das so wie auf der Zeichnung ist, dann ist es tatsächlich die 
höchste Spannung...
Aber wenn der oberste Taster kurz betätigt wurde, und Du danach die 
Messung startest, könntest Du irgendeinen Wert zwischen +5v und GND 
messen, denn die Spannung wird sich ja nicht schlagartig ändern, da sind 
ja noch Kapazitäten vorhanden. An dem Analogeingang sollte ja auch noch 
ein Kondensator mit 10-100nF dran. Da fällt die Spannung mehr oder 
weniger langsam ab.

Das lesen der Schieberegister geschieht so schnell, dass Du quasi den 
aktuellen Wert der Eingänge einliest. Die Eingänge speichern nicht 
irgendwelche Werte, sondern folgen der angelegten Spannung, also den 
Tastern. Das speichern ist ja nur beim "schieben" notwendig.

MfG,
Andreas

von m.n. (Gast)


Lesenswert?

volker schrieb:
> Kannst Du mir da bitte etwas mehr erklären?

Wie sah denn die Schaltung aus, die Du im Netzt gefunden hattest?

Ich schrieb: 10 k Pullup an einem ADC-Eingang gegen VCC. Dann von diesem 
ADC-Eingang diverse unterschiedliche Widerstände, die jeweils mit einem 
eigenen Taster gegen GND geschaltet werden.
Möglich Werte wären: 6k2, 5k6, 5k1, 4k7, 4k3, 3k9, 3k6, 3k3, 3k0, 2k7, 
2k4, 2k2, 2k0, 1k8, 1k5, 1k2, 1k0.

Dadurch werden in Verbindung mit dem Pullup unterschieliche Spannungen 
am ADC-Eingang erzeugt, die immer <= 2 V sind und gemessen werden 
können. Bei jedem Tastendruck und -öffnen wird der betreffende PCINT 
ausgelöst, mit dem der µC auch aufgeweckt werden kann.
Daß jeweils immer nur eine Taste gedrückt werden kann, hattest Du ja 
bereits erkannt.

Die Geschichte ist doch supersimpel.

von ??? (Gast)


Lesenswert?

volker schrieb:
> hallo,
>
> @andreas
>
> vielen Dank für Deine Bemühungen aber ich verstehe es nicht . Ich dachte
> ich muss nur entprellen wenn der Taster oder Schalter direkt eine Aktion
> bewirkt wenn ich aber doch den Widerstand/Spannung messe dann ist es
> doch egal wieviele male der Schalter/Taster vorher flakkert ich muss nur
> den höchsten wert nehmen und dann etwas auslösen.
>

Lies Dir hier das Tutorial durch vor allem Entprellung.
Sobald Du einen Taster drückst prellt der mechanisch und löst somit 
viele kurze Flanken aus.
Du willst aber nicht wissen ob da nun gerade ein Kolibri flattert, 
sondern das der Nutzer den Taster auch wirklich gedrückt hat.
Wenn nach >10ms immer noch ein Kontakt besteht wird der Taster unten 
gehalten.
Da der ADC im kHz Bereich arbeitet bekommst Du bei prellenden Tastern zu 
unterschiedlichen Zeiten unterschiedliche Werte.
Daher erst nach mehrmaliger Messung den Wert übernehmen.

> Bei dem Schieberekister dachte ich daß da so eine Art Speicher FlipFlops
> davor sind und diese dann auch einmalig von 0 auf 1 gehen und erst vom
> AVR zurückgesetzt werden können , nach der Übertragung durch
> Schieberegister.
>

Warum heißt das Schieberegister ?
Genau Du schiebst auf einer Seite was herein und das wird um ein Bit 
weiter geschoben.
Was passiert nun wenn Du da einen prellenden Taster anschließt ?
Überlege mal.

von volker (Gast)


Angehängte Dateien:

Lesenswert?

hallo,

das mit dem entprellen von schieberegistern verstehe ich wirklich nicht 
. ich wollte den taster ja nicht ans schieberegister sondern an ein 
speicher (bistabiles) flipflop anschliessen und dem kann das prellen 
doch wirklich egal sein es bekommt irgend ein flakkernden impuls und 
geht deswegen auf "1" und der bleibt dann solange bis der arduino 
irgendwann die werte abholt.

Das entprellen geschieht doch mit FlipFlops.


die schaltung die ich im Netz gefunden habe sieht immer so wie in der 
angehängten grafik aus , im Prinzip auch so wie Andreas gepostet hat

Ich wollte den Widerstand Parallel haben (dann natürlich immer einen 
anderen) und einen IRQ auslösen.

Viele Grüße  Volker

von ??? (Gast)


Lesenswert?

volker schrieb:
> hallo,
>
> das mit dem entprellen von schieberegistern verstehe ich wirklich nicht
> . ich wollte den taster ja nicht ans schieberegister sondern an ein
> speicher (bistabiles) flipflop anschliessen und dem kann das prellen
> doch wirklich egal sein es bekommt irgend ein flakkernden impuls und
> geht deswegen auf "1" und der bleibt dann solange bis der arduino
> irgendwann die werte abholt.
>

Also pollst Du doch sowieso den Eingang.
Wo liegt nun Dein Problem den >10ms zu pollen und dann den maximalen 
Wert zu übernehmen ?

> Das entprellen geschieht doch mit FlipFlops.
>

Warum willst Du denn sinnfrei extra Logik extern verbauen wenn Du das 
ganze in Software ohne extra Hardware lösen kannst ?
Und extern entprellen kann man auch mit RC Glied usw. usf.

> die schaltung die ich im Netz gefunden habe sieht immer so wie in der
> angehängten grafik aus , im Prinzip auch so wie Andreas gepostet hat
>

Was Du da gepostet hast ist der Spannungsteiler der schon erwähnt wurde.


> Ich wollte den Widerstand Parallel haben (dann natürlich immer einen
> anderen) und einen IRQ auslösen.
>

Was willst Du nun mit dem IRQ ?
Und es bleibt sich immer noch gleich ob Du nun Serienschaltung oder 
Parallelschaltung der Widerstände hast.

P.S.: Was für ein FlipFlop würdest Du denn eigentlich nehmen ?

von volker (Gast)


Lesenswert?

hallo,

nur um nun nicht für verwirrung zu sorgen:

bei meinem post wegen dem flipflops ging es nur um das entprellen, was 
meiner meinung nach durch die FlipFlops geschieht.

Prinzipiell will ich das durch das gezeigte Widerstandsnetzwerk lösen . 
Den Interupt benötige ich um den Arduino in den Schlafmodus setzen zu 
können

Nach dem auslösen des Interuppts wird natürlich kurz gepollt um zu 
erkennen wann der taster ganz gedrückt ist.

Ich benötige jetzt einen Tip wie ich am besten den Interupt ansteuere.

Ob ich die Widestände Parallel oder in Reihe schalte denke ich ist auch 
egel . Leitungstechnisch wäre für mich eben parallel besser.


Auch bei der WiderstandsLösung muss ich nicht entprellen weil ich ja 
mehrfach messen will

Viele Grüße Volker,

von volker (Gast)


Lesenswert?

hallo,

achso .....  ich denke daß ich über die Transistorlösung von christoph 
oder aber über eine diode von jens nachdenken werde

viele Grüße  Volker

von Dietrich L. (dietrichl)


Lesenswert?

volker schrieb:
> Auch bei der WiderstandsLösung muss ich nicht entprellen weil ich ja
> mehrfach messen will

Das "mehrfach messen" ist die Entprellung! Denn Du musst solange 
messen wie die der Taster maximal prellt. Nichts Anderes macht 
Software-Entprellung bei Digitalen Eingängen.

Gruß Dietrich

von Dietrich L. (dietrichl)


Lesenswert?

volker schrieb:
> bei meinem post wegen dem flipflops ging es nur um das entprellen, was
> meiner meinung nach durch die FlipFlops geschieht.

Dafür brauchst Du aber eine spezielle Schaltung.

Ein Schieberegister enthält zwar auch Flipflops, aber da entprellt 
erstmal nichts: es wird der aktuelle Zustand abgefragt (im 
Schieberegister abgespeichert) - genauso, wie bei normalen 
Digitaleingängen. Beim Schieberegister kommt lediglich eine 
Verzögerungzeit hinzu zwischen der Abfrage und der Verfügbarkeit der 
Daten im µC.

Gruß Dietrich

von ??? (Gast)


Lesenswert?

OK,
nun hab ich's kapiert:

<°>>>>>>>>>>>>>><

Soviel Zäune die hier rumgeschwunken werden sind ein paar zu viel oder 
der TO peilt es wirklich nicht, dann würde ich zu Briefmarken raten ...

von Peter D. (peda)


Lesenswert?


von volker (Gast)


Angehängte Dateien:

Lesenswert?

hallo,

habe mal versucht das ganze mit zeichnung darzustellen.

jetzt fehlt mir aber bestimmt noch einiges könnte mir das jemand 
vielleicht ergänzen (erde zB)

Viele  Grüße Volker

von volker (Gast)


Lesenswert?

hallo,

wenn ich eine tastermatrix auslese , würde ich nehmen wenn ich 
gleichzeitig drücken will, brauche ich doch auch einen interuppt, oder.


viele grüße volker.

von volker (Gast)


Lesenswert?

hallo,

was sollen "briefmarken"  helfen. das würde nach dem taster drücken doch 
tage dauern bis die Post meine Lampe einschaltet. Vielleicht ging mir 
dann ein Licht auf.


viele Grüße Volker

von Peter D. (peda)


Lesenswert?

volker schrieb:
> habe mal versucht das ganze mit zeichnung darzustellen.

Warum so kompliziert?
Du nimmst einfach ein Pullup, der so hochohmig ist, daß der Interrupt 
zum Aufwachen aus dem Powerdown an der hochohmigsten Taste auslöst. 
Praktischer Weise sind bei den meisten AVRs die ADC-Pins auch gleich als 
Pin-Change-Interrupt einstellbar.
Nach dem Aufwachen schaltest Du dann den Interruptpin ab und einen 
Pullup zu, der die richtige Größe für die Messung hat.

Sinnvoller Weise macht man aber die ganze Stromsparerei eh erst, wenn 
die eigentliche Programmfunktion perfekt läuft.

von m.n. (Gast)


Lesenswert?

Peter D. schrieb:
> Du nimmst einfach ein Pullup, der so hochohmig ist, daß der Interrupt
> zum Aufwachen aus dem Powerdown an der hochohmigsten Taste auslöst.
> Praktischer Weise sind bei den meisten AVRs die ADC-Pins auch gleich als
> Pin-Change-Interrupt einstellbar.

Dann braucht er ja noch einen Widerstand ;-)

> Nach dem Aufwachen schaltest Du dann den Interruptpin ab und einen
> Pullup zu, der die richtige Größe für die Messung hat.

Wie gesagt: supersimpel!

von ??? (Gast)


Lesenswert?

Peter D. schrieb:
> volker schrieb:
>> habe mal versucht das ganze mit zeichnung darzustellen.
>
> Warum so kompliziert?
> Du nimmst einfach ein Pullup, der so hochohmig ist, daß der Interrupt
> zum Aufwachen aus dem Powerdown an der hochohmigsten Taste auslöst.
> Praktischer Weise sind bei den meisten AVRs die ADC-Pins auch gleich als
> Pin-Change-Interrupt einstellbar.
> Nach dem Aufwachen schaltest Du dann den Interruptpin ab und einen
> Pullup zu, der die richtige Größe für die Messung hat.
>
> Sinnvoller Weise macht man aber die ganze Stromsparerei eh erst, wenn
> die eigentliche Programmfunktion perfekt läuft.

Kommt mir das jetzt nur so vor oder ist das genau mein Vorschlag ?

von volker (Gast)


Lesenswert?

hallo,

ich komme mir so langsam etwas blöd vor. Kann mir jetzt nicht mal jemand 
, da Ihr ja alle die Lösung wisst, zeigen (am besten mit Zeichnung) wie 
ich diesen PullUp Widerstand an der hochohmigsten Taste anschliesse wenn 
ich eine ParallelSchaltung der Widerstände habe bei einer 
Reihenschaltung bekäme ich das hin, glaube ich :-)

Viele Grüße  Volker.

von m.n. (Gast)


Lesenswert?

Hier ist eine Schaltung mit 4k7 Pullup: 
Beitrag "Re: Tastenmatrix auslesen über nur 2 Leitungen"
R1 - R15 können 200 Ohm haben. Das schöne an der Anordnung sind die 
gleichen Widerstände und daß eine Priorität der Taster vorgebbar ist.

Es gibt Eingabefelder 0-9, mit * und # und gemeinsamen Massepin, bei 
denen diese Anordnung optimal ist.

von volker (Gast)


Lesenswert?

Hallo,

das ist aber eine Reihenschaltung. Ich wollte eine Parallelschaltung.


Gruß Volker.

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
Noch kein Account? Hier anmelden.