Forum: Mikrocontroller und Digitale Elektronik Störungen durch Elektrosmock


von Daniel H. (doomstar)


Lesenswert?

Hi

Ich weis nicht ob ich hier richtig bin aber es wirkt sich halt auf das 
Programm aus.

Bin gerade dabei ein Tastenfeld von Reichelt an mein Mikro 
anzuschließen. Das Tastenfeld hat 8 Pins. 4 für waagerecht und 4 für 
senkrecht. Draus ergibt sich immer eine der 16 Tasten.

Leider muss ich durch die Bauart erst 4 auf High setzten und die anderen 
4 auslesen und umgekehrt damit ich die Taste eingelesen habe.

Das Problem ist das ich durch einstreuungen Signale bekomme wo keine 
sein dürften. Leider kann ich nichts über einen Wiederstand auf Masse 
legen um einen sauberen Low Pegel zu bekommen.

Jemand nee Idee wie ich das Lösen kann?

MFG
Daniel

von johnny.m (Gast)


Lesenswert?

Öhh, wie lang sind die Leitungen vom µC zur Tastatur? Eigentlich ist das 
Auslesen einer Matrixtastatur relativ störsicher. Und Deine 
Auslese-Philosophie verstehe ich auch nicht ganz. Normalerweise legt man 
vier der Pins (entweder die Spalten- oder die Zeilenanschlüsse) über als 
Ausgang geschaltete µC-Pins auf Masse (Low) und fragt die jeweils 
anderen (die an als Eingang mit Pull-Up geschaltete Pins angeschlossen 
sind) ab. Als Beispiel: Die Spalten sind auf Ausgänge (Low-Pegel) 
gelegt. Die Zeilen liegen an Eingängen mit Pull-Up. Die Zeilen werden 
jetzt abgefragt. Ist irgendeine Taste gedrückt, dann wird der 
entsprechende Zeilen-Pin auf Low gezogen. Jetzt werden (in C z.B. in 
einer for-Schleife) die Spalten der Reihe nach auf High-Pegel 
geschaltet. Sobald sich der "verdächtige" Zeilenpin ändert (von Low auf 
High) hat man die richtige Spalte gefunden.

von johnny.m (Gast)


Lesenswert?

Ach ja, noch was: In den Leitungen zwischen den Spaltenanschlüssen und 
den als Ausgang geschalteten µC-Pins Strombegrenzungs-Widerstände (150 
Ohm reichen) einbauen, damit nicht gleich der µC abraucht, wenn jemand 
mehrere Tasten gleichzeitig drückt ("dicke-Finger-Syndrom").

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

>Tastenfeld von Reichelt an mein Mikro anzuschließen

Soll das Tastenfeld singen? (Singstar-Keyboard?)

Wie man eine Matrix-Tastatur (mit einem AVR) ausliest, beschreibt Atmel 
in einer Application Note (AVR240). Wie das funktioniert hat JoHnny ja 
schon beschrieben.

von thkais (Gast)


Lesenswert?

OT: Kann mir mal jemand die Art.-Nr. des Tastenfeldes schreiben? Sowas 
suche ich schon länger bei Reichelt, habe aber offensichtlich nicht die 
richtigen Suchbegriffe. Danke.

von johnny.m (Gast)


Lesenswert?

Tasten*felder* habe ich bei Reichelt schon lange nicht mehr gesehen. Die 
letzten hab ich beim großen C bestellt. Hab auch im aktuellen 
Papierkatalog nichts dergleichen gefunden.

von fieser, klugscheissender Rahul (Gast)


Lesenswert?

>Hab auch im aktuellen Papierkatalog nichts dergleichen gefunden.
Dafür gibt es doch auch die Ergänzungs-CD...(oder den Business-Katalog 
;-)

von johnny.m (Gast)


Lesenswert?

@Rahul:
Ich meinte natürlich (auch wenn es oben im Prinzip anders steht) den 
*Reichelt*-Papierkatalog...

von Falk (Gast)


Lesenswert?

@johnny.m

> Ach ja, noch was: In den Leitungen zwischen den Spaltenanschlüssen und
> den als Ausgang geschalteten µC-Pins Strombegrenzungs-Widerstände (150
> Ohm reichen) einbauen, damit nicht gleich der µC abraucht, wenn jemand
> mehrere Tasten gleichzeitig drückt ("dicke-Finger-Syndrom").

Wieso sollte der uC abrauchen? Wenn ich die Spalten treibe (meinetwegen 
mit LOW) und die Zeilen per Pull-ups ah HIGH ziehe, dann kann der USER 
drücken was er will, es raucht rein gar nix ab. Been there, done this.

MfG
Falk

von johnny.m (Gast)


Lesenswert?

Wenn Du in einer Zeile mehrere Tasten gleichzeitig drückst und eine 
(oder mehrere) Spalten sind wegen der gerade laufenden Abfrage auf 
High-Pegel (Ausgang) und andere auf Low-Pegel, dann gibts Strom satt 
(Kurzschluss über die Zeilenleitung). Das lässt sich allerdings umgehen, 
wenn man nicht das Portregister sondern das Datenrichtungsregister 
umschaltet. Dadurch spart man sich tatsächlich die Widerstände und u.U. 
ne Menge Ärger...

von Falk (Gast)


Lesenswert?

@johnny.m

> Wenn Du in einer Zeile mehrere Tasten gleichzeitig drückst und eine
> (oder mehrere) Spalten sind wegen der gerade laufenden Abfrage auf
> High-Pegel (Ausgang) und andere auf Low-Pegel, dann gibts Strom satt

Die HIGH-Pegel sind aber nur duch (schwache) Pull-ups generiert, ala 
I2C.
-> Alles im gruenen Bereich.

> (Kurzschluss über die Zeilenleitung). Das lässt sich allerdings umgehen,
> wenn man nicht das Portregister sondern das Datenrichtungsregister
> umschaltet. Dadurch spart man sich tatsächlich die Widerstände und u.U.
> ne Menge Ärger...

Eben drum. Ergo. -> Es werden keine Serienwiderstände als 
Kurzschlusschutz benötigt.

MFG
Falk

von johnny.m (Gast)


Lesenswert?

> Die HIGH-Pegel sind aber nur duch (schwache) Pull-ups generiert
Sind sie in dem Fall eben nicht. Wenn ich einen Ausgangspin auf 
High-Pegel schalte (zumindest bei µCs, die Push-Pull-Ausgänge besitzen, 
also z.B. AVR), dann ist da kein schwacher Pull-Up! Bei µCs mit 
Open-Collector-Outputs (z.B. 8051er) ist das kein Problem. Man muss nur 
daran denken, wenn man einen AVR o.ä. hat, muss man das 
Daten*richtungs*register umschalten und nicht das Datenregister.

von Falk (Gast)


Lesenswert?

> > Die HIGH-Pegel sind aber nur duch (schwache) Pull-ups generiert

> Sind sie in dem Fall eben nicht. Wenn ich einen Ausgangspin auf

In welchem Fall? Wenn mans falsch macht?

> Daten*richtungs*register umschalten und nicht das Datenregister.

Das hat doch keiner bestritten.

MFG
Falk

von johnny.m (Gast)


Lesenswert?

> Das hat doch keiner bestritten.
Nö, aber bei µCs mit OC-Input kann man es eben auch gefahrlos mit dem 
Datenregister machen, bei Push-Pull aber nicht. Deshalb der Hinweis. 
Gibt vll. auch Leute, die bisher mit 8051ern gearbeitet haben (und die 
Umschaltung mit dem Portregister gemacht haben) und auf z.B. AVR 
umsteigen. Und genau die wundern sich dann...

von fieser, klugscheissender Rahul (Gast)


Lesenswert?

>dann ist da kein schwacher Pull-Up!

Doch. Wenn man das DDR und das Port-Register umschaltet, hat man auf der 
einen Seite die hochohmigen Pullups und auf der anderen Seite Masse, 
sofern ein Taster betätigt wurde.
Die Atmel-Application-note beschreibt das ganz wurderbar.

>Been there, done this.
Me, too...

von johnny.m (Gast)


Lesenswert?

> Wenn man das DDR und das Port-Register umschaltet
Eben genau darum ging es doch! Bei µCs mit OC-Output muss man nämlich 
nur das Portregister umschalten und braucht sich um das 
Datenrichtungsregister gar nicht zu kümmern, was eben bei µCs mit 
Push-Pull-Ausgängen u.U. fatal wäre. Und wer zum Teufel liest schon 
Appnotes;-?

von fieser, klugscheissender Rahul (Gast)


Lesenswert?

>Und wer zum Teufel liest schon Appnotes;-?

Ich! (Zumindest die...)


>Bei µCs mit OC-Output muss man nämlich nur das Portregister umschalten >und 
braucht sich um das Datenrichtungsregister gar nicht zu kümmern, was >eben bei µCs 
mit Push-Pull-Ausgängen u.U. fatal wäre.

In einem anderen Thread schrieb jemand:
"Man sollte wissen, was man tut"

Das gilt wohl auch in diesem Fall...

von johnny.m (Gast)


Lesenswert?

> Das gilt wohl auch in diesem Fall...
Das gilt eigentlich immer, oder nicht;-?

von Dennis (Gast)


Lesenswert?

Mal noch gaaanz was anderes:
Das heißt SMOG (Wortkreuzung Smoke + Fog), natürlich gibt's auch noch 
den Schmock, das is aber wieder ne ganz andere Baustelle ;-)

von Daniel H. (doomstar)


Lesenswert?

@Dennis

Danke für die Berichtigung. :)

@johnny

Ist ein Atmega 8 und die leitung ist ca. 20cm lang.

Werde das mal so probieren wie du es geschrieben hast. Was mich schon 
wundert ist das auf den Eingängen ohne Pull up immer so um die 0,5V 
liegen je nachdem wie die Kabel liegen.

Also ich geh jetzt mal sofort testen und danke für die Antworten.

von johnny.m (Gast)


Lesenswert?

> ...die leitung ist ca. 20cm lang.
Das ist natürlich schon ne Menge...

> ...probieren wie du es geschrieben hast...
OK, aber beim AVR eben dran denken, das DDRx umzuschalten bei der 
Abfrage der Spalten (Also von Ausgang auf Eingang) und nicht das 
PORTx. Nicht, dass die obige Diskussion Dich jetzt völlig 
durcheinandergebracht hat.

Die von Rahul erwähnte Appnote hab ich mir zwar noch nicht en détail 
angesehen, aber sich sowas anzuschauen ist in dem Zusammenhang sicher 
auch nicht verkehrt (steht allerdings glaub ich auch ne Menge drin, was 
Du momentan wahrscheinlich nicht brauchst).

von Daniel H. (doomstar)


Lesenswert?

@johnny

Ok so klappt es. Muss halt gucken das ich die störungen so weg bekomme. 
Klappt auch sehr gut.

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.