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,