Forum: Mikrocontroller und Digitale Elektronik Störungen an/ druch Matrixtrastatur(kabel)


von Felix (Gast)


Lesenswert?

Moin,

Ich habe mir einen kleinen MP3-Player auf Arduino-Basis gebaut.

Also Mega256 (original, kein Clone) + Adafruit Music Maker Shield + 15W 
Verstärker mit TPA3110D2 im Mono-Betrieb. 
(https://media.digikey.com/pdf/Data%20Sheets/Projects%20Unlimited%20PDFs/AMP2X15_DS.pdf), 
dazu eine 3x4 Matrixtastatur.

Die Software ist ziemlich stumpf aus Bibliotheken zusammengeworfen:
Keypad.h, https://playground.arduino.cc/Code/Keypad/ und 
Adafruit_VS1053.h

Solange ich den kleinen onboard 3W-Verstärker des Music Maker Shields 
nutze, läuft alles glatt und ich kann über die Matrixtastatur 
einwandfrei Titel auswählen und abspielen.

Verbinde ich nun aber das Verstärkermodul mit dem Rest, kommt es zu 
Fehlern beim einlesen der Matrixtastatur. Es werden wild Tasten als 
gedrückt erkannt bis der Controller sich aufhängt bzw. der Watchdog 
zuschlägt.

Das Problem tritt sogar auf, wenn das 7-Adrige Kabel (ca. 30cm) zur 
Tastatur nur am Board angeschlossen ist, nicht an der Tastatur.

Nachdem ich den Fehler auf die Kombination aus Verstärker und Kabel 
eingegrenzt hatte, habe ich das Tastaturkabel gegen ein geschirmtes 
ausgetauscht.
Damit ließ sich reproduzierbar feststellen:
Schirmung einseitig auf GND gelegt: alles gut. Schirmung in der Luft: 
Fehler tritt auf.

Wie das immer so ist, ist der Fehler wieder da, nachdem das ganze final 
im Gehäuse verbaut ist. Einziger Unterschied zum letzten 
funktionierenden Aufbau ist ein jetzt längeres Kabel zum Lautsprecher...

Das ganze ist eigentlich relativ ordentlich aufgebaut, mit gefräster 
Platine, Stiftleisten und IDC-Steckern als Mini-Shield auf dem Arduino 
aufgesteckt.

Die Tastatur ist ohne weitere Bauteile einfach mit 7 Portpins des ATmega 
verbunden. Leiterbahnlänge Arduino zur Stiftleiste zwischen 27 und 
2.54mm.

5V Schaltregler Traco TSR-1 für Arduino und Music Maker Shield und der 
Verstärker werden gemeinsam aus einer 12V Batterie versorgt, haben also 
gemeinsamen GND. Versorgung des Arduino/Music Maker per USB ändert 
nichts.

Kann sich da jemand einen Reim drauf machen? Was kann ich Hard- und/ 
oder Softwaremäßig verbessern, um das Problem zu beheben?

Meine erste Idee wäre, mal jedem Tastatur-Pin einen kleinen Kerko 
10-100nF gegen GND zu spendieren!?

Ich frage die Tastatur derzeit in der Hauptschleife mit char key = 
keypad.getKey(); ab, solange keine Taste gedrückt wird also ziemlich 
oft. Gibt es evtl. softwareseitig Ansätze um das etwas zu entschärfen?

Bin erstmal für jeden Hinweis dankbar ;)

Viel Grüße

Felix





Wie das immer so ist,

von Michael U. (amiga)


Lesenswert?

Hallo,

wenn Du nur die internen PullUp Widerstände des AVR? benutzt, sind die 
ziemlich hochohmig, so 30k...
Mit längeren Kabeln zum Keyboard und/oder Störungen im Umfeld eben 
externe PullUp Widerstände reinbauen, 3,3k zum Beispiel.
Kondensatoren (10n sollten da schon reichen) kann man dann im Notfall 
zusätzlich zwischen Input und GND einbauen.

Gruß aus Berlin
Michael

von Felix (Gast)


Lesenswert?

Michael U. schrieb:
> Wenn Du nur die internen PullUp Widerstände des AVR? benutzt, sind die
> ziemlich hochohmig, so 30k...

Ja, ich habe sonst bisher keine weitere Beschaltung. Die Pins werden ja 
alle zwischen Input und Output umgeschaltet, da war ich nicht so sicher 
ob es gut ist, feste Pullups einzubauen?

von Peter D. (peda)


Lesenswert?

Naja bei Class-D rappelt es ganz heftig auf den Lautsprecherleitungen. 
Verdrillen oder Abschirmen kann da helfen.

Ich kenne jetzt die Tastenroutine nicht, wie gut die entprellt. An 
Entprell-Libs habe leider schon viel Mist gesehen.

Extra Pullups (3,3k) können was bringen. Kondensatoren gehen bei ner 
Matrix nicht, da sie ja auch pulst.

von Felix (Gast)


Lesenswert?

So, nachdem ich erst die Lautsprecherkabel im Gehäuse verdrillt habe und 
dann noch das Metallgehäuse, in dem auch die Matrixtastatur verbaut ist, 
mit GND verbunden habe, läuft wieder alles.

Ich werde trotzdem bei Gelegenheit nochmal eine Platine mit zusätzlichen 
3k3 Pullups einbauen, um sicher zu sein.

Vielen Dank für die Tips!

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.