Was ist falsch an diesem einfachen PCB-Design? (Midi-Synthesizer)

Ich entwerfe einen einfachen Synthesizer mit Arduino (nur der Atmega IC) und es funktioniert gut. Das einzige, was ich ständig höre, sind diese lästigen Klicks , wenn ich die Lautstärke etwas erhöhe.

Ich hatte dieses Problem in der Vergangenheit, deshalb habe ich versucht, es zu beheben, indem ich die Leiterplatte entwarf und 3 Massesektoren in digitalen und analogen Teilen auf einer Seite der Leiterplatte trennte. Theoretisch sollte das verhindern, dass der digitale Teil den analogen Teil verunreinigt. Es scheint, dass es nicht ganz funktioniert hat, weil ich immer noch die Klicks hören kann .

Meinen Tests zufolge gibt es zwei Dinge, die gleichzeitig Klicks erzeugen :

1- der Atmega-Kristall: Wenn ich den Atmega-IC entferne, stoppt dieser Klick. **UPDATE: **Dieses Klicken wurde durch das Atmega-Programm verursacht. Aber ich habe noch diese anderen Midi-Click-Sounds:

2- die Midi-Meldungen: Wenn Midi nicht angeschlossen ist, gibt es kein Klicken. Nach jeder gesendeten Midi-Nachricht (z. B. eine Note oder eine Uhr) höre ich ein Klicken. Zum Beispiel macht die Uhr einen konstanten Strom von Klicks und wird beschleunigt, wenn ich das Tempo auf dem Master-Gerät erhöhe, das die BPM sendet. Wenn ich den Atmega IC nehme und Midi-Nachrichten sende, kann ich die Klicks hören, also ist es unabhängig davon. Deshalb denke ich, dass es ein Problem beim PCB-Design ist

Um das Problem zu beseitigen, habe ich den LM358-Teil entfernt, wo sich die "Schere" im schematischen Bild befindet, und ich bekomme nur die Ausgabe von PWM, das ist nur die Ausgabe vom Atmega-IC.

Meine Frage lautet also: Sehen Sie irgendwelche Fehler im PCB-Design? Was könnte die Klickgeräusche verursachen ?

Danke!!

PD: Auf Wunsch kann ich die Eagle-Datei hochladen. Leiterplatte][]

Ich bin mir nicht sicher, ob Sie mit dem, was Sie hier tun, vollkommen auf dem richtigen Weg sind ... Ihnen ist klar, dass das Entfernen des Kristalls wahrscheinlich dazu führt, dass das Programm nicht mehr läuft, oder? Haben Sie versucht, die Software zu ändern, um zu sehen, welche Auswirkungen das hat?
Ihre Klicks können durchaus durch die Wartung des Timers des Arduino-Kerns verursacht werden. Dies ist ziemlich berüchtigt dafür, verzögerungsempfindliche laufende Vorgänge zu stören. Das hörbare Ergebnis liegt möglicherweise nicht bei der Timer-Rate, sondern eher bei einer harmonischen Differenz zwischen dieser und der Rate der zeitempfindlichen Operation.
In der Tat ist das höchstwahrscheinlich ein Softwareproblem. Wie eine Interrupt-Service-Anfrage, die im Weg steht. Ohne Kristall würde es nicht passieren, da der Atmega dann auf den internen Oszillator umschaltet und die Timings nicht mehr dieselben sind, und es würde nicht passieren, wenn Midi nicht verwendet wird, da es dann keine solche Dienstunterbrechung gibt. Ich bezweifle, dass dies ein PCB-Layout-Problem sein könnte.
@ChrisStratton Was ich tue, ist das Entfernen des Atmega IC, nicht des Kristalls. Ich weiß, dass es das Programm stoppt, was ich beweisen wollte, ist, dass einer der Klicks vom Atmega (oder seinem Kristall) kommt. Ok, gerade habe ich ein leeres Programm geladen und das Klicken hat aufgehört. Es war alles in Ordnung, danke an alle! Aber jedes Mal, wenn Midi-Nachrichten empfangen werden, ist ein lauteres Klicken vorhanden, das ist meine Hauptsorge! Ich weiß wirklich nicht, was ich noch versuchen soll. Was ist mit Ferriten? Ich weiß nicht, wie man es benutzt, und ich glaube nicht, dass ich sie hier in meiner Stadt bekommen kann: /
Kannst du die Ausgabe mit einem Oszilloskop aufzeichnen?
"Aber jedes Mal, wenn Midi-Nachrichten empfangen werden, ist ein lauteres Klicken vorhanden." Dies ist höchstwahrscheinlich ein Softwareproblem und muss in der Software behoben werden. Es wird nicht trivial sein – die erste Anforderung wird sein, jedes Bit der Software zu verstehen, die auf dem Gerät läuft, was bedeutet, den verwendeten Arduino-Kerncode entweder zu studieren oder zu entfernen.
Das „Klicken“ oder die Diskontinuität wird wahrscheinlich durch den zusätzlichen Verarbeitungsaufwand des Empfangs von MIDI-Meldungen verursacht. Möglicherweise können Sie dies optimieren und das Problem reduzieren ... aber wenn Ihr Mikrocontroller damit beschäftigt ist, über seine Eingabe nachzudenken, anstatt eine Tonausgabe zu erzeugen, werden Sie einen Klick bekommen. Ein anderer Ansatz wäre, herauszufinden, wie die Tonerzeugung gegenüber allen anderen Aufgaben priorisiert werden kann, aber das könnte auch andere Probleme mit sich bringen.
@CL: Ich habe das Audio aufgenommen, wenn Sie in einen Sound-Editor hineinzoomen, können Sie die Wellenform sehen. Es sind nur dünne Stacheln. Dies ist die Clock-Midi-Nachricht, die empfangen wird. Zuerst beschleunige ich ihn von 100BPM auf 300BPM und reduziere ihn dann wieder, deshalb hört man einen Ton. Die Verstärkung der Audiodatei wurde erhöht, sodass Sie die Klickgeräusche gut hören können. Ich habe festgestellt, dass diese Klicks anscheinend "in der Luft" sind und vom LM358-Operationsverstärker aufgenommen werden, selbst wenn ich den Atmega ausschalte, und selbst wenn ich den Operationsverstärkereingang mit GND verbinde, kann ich immer noch hören, wie er verstärkt wird.
vergessen, die Datei hinzuzufügen, hier ist sie! dl.dropboxusercontent.com/u/103115555/midi%20clock.wav

Antworten (1)

Das 6N137-Datenblatt sagt:

Zwischen den Pins 5 und 8 muss ein 0,1 μF Bypass-Kondensator angeschlossen werden.

Dies ist nicht nur erforderlich, um zu verhindern, dass der 6N137 selbst schwingt, sondern schützt auch den Rest der Schaltung vor Einbrüchen in der Stromversorgung.

Sie haben eine Induktivität vor der digitalen Stromversorgung des ATmega, aber es ist möglicherweise eine bessere Idee, sie zu verschieben / zu kopieren, um den analogen Teil Ihrer Schaltung vor einem der digitalen Teile zu schützen.

Danke für den Rat. Ich habe es von 0,1 uF bis 3300 uF versucht und der Ton ist der gleiche. Wie Sie auch empfohlen haben, habe ich die VCC-Spur geschnitten und über einen Induktor angeschlossen, aber nichts getan.