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,
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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.