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


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 Felix (Gast)


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


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


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


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


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

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.