PCB - was hab ich übersehen?

Hi Forum,
unlängst hab ich zum ersten mal ein PCB machen lassen. Das Layout hab ich mit Fritzing erstellt, und das Board bei Seeed Studio fertigen lassen. Zunächst sah es so aus als würde alles funktionieren, aber das tut es leider nicht…

Das Board hat einen Standalone-Arduino und drei TLC5940 LED-Treiber drauf, sowie diverse Anschlußmöglichkeiten die später ins Spiel kommen sollen. Hier sind Fotos: http://www.ullala.at/projects/lichtblumen/my-first-pcb/?lang=de

Genau diese Kombination von Standalone-Arduino +TLC5940 hab ich letztes Jahr einige male mit selbstgelöteten Platinen erfolgreich zusammengebastelt. Mit dem PCB passiert jetzt aber Unerwartetes:
Teste ich die angeschlossenen RGB-LEDs einzeln durch, funktionieren alle. Sobald ich aber mehrere (zB 8 Stück, je 3 x 20 mA) gleichzeitig zum Leuchten bringe, bleibt das Programm (bzw der Atmega) hängen. Die LEDs sollten einen einfachen Test-Loop bestreiten, abwechselnd rot, grün, blau und weiß (=alle Farben zugleich) darstellen, alle LEDs synchron. Sobald weiß ins Spiel kommt gehen die Lichter aus und es bleiben aus, oder es wird zu rot übergegangen und dann bleiben alle in rot.
Hänge ich eine extra LED direkt an den Atmega, unabhängig von den TLC's, und lasse diese blinken, hört zum Zeitpunkt des Aussetzers auch diese LED auf zu blinken, und leuchtet ca auf halber Kraft. Sie flackert ganz schnell? Der Atmega wird dauernd resettet?

Könnt Ihr mir bitte einen Tip geben, was der Grund sein könnte?

Ich werde am Wochenende versuchen, den Fehler weiter einzugrenzen, aber es wird wohl ein bisschen mühsam. Ausgeschlossen habe ich bereits die Stromquelle, da ich mittlerweile auch alternative Stromquellen durchprobiert habe (zB Polulu Vortage Regulator 3A). Ausserdem habe ich bereits 3 PCBs durchprobiert, sodass man einen zufälligen Fehler der Platine auch ausschließen kann.
Vielleicht habe ich einen fehlerhaften Satz von irgendwelchen der eingesetzten Bauteile?

Ich bin elektronisch recht unerfahren, und muß leider doch davon ausgehen, daß ich bei der Platine einen Fehler aus Unwissenheit gemacht habe. Irgendetwas verursacht ab einem bestimmten Stromverbrauch so etwas wie einen dauernden Reset, und ich verstehe nicht, wie das elektronisch begründet werden kann.

Ich wäre für jeden Tip dankbar!
thx,
ullala :slight_smile:

Für meinen Geschmack fehlen etliche 0,1µF Kondensatoren zwischen Masse und 5V nahe an jedem IC (jedem TLC und dem ATmega) und nahe am Spannungstabilisator(Vin und Vout zu Masse paralell zu C1 und C2).
Der Spannungsstabilisator braucht einen Kühlkörper, ansonsten wird er zu heiß.

Kontrolliere mal, bevor und wenn sich der Arduino blockiert mit einem Multimeter die 5V Spannung. Zuerst im Gleichstom-Bereich und dann im Wechselstrombereich. Du mußtest ca 5V messen und einige Zehner mV Wechselstrom( unter 50mV).

Grüße Uwe

Zunächst mal vielen Dank an Uwe für den Input! Das Problem ist noch nicht beseitigt, aber ich habe heute neue Erkenntnisse gewonnen:

Ich habe die Situation am Steckbrett wiederaufgebaut, und siehe da, der Fehler tritt auch hier auf. Warum alle bisherigen, selbstgelöteten Varianten funktioniert haben - und da waren schon 5 aneinandergereihte TLC5940'er im Einsatz - ist mir im Moment ein Rätsel.

Wie von Uwe vorgeschlagen habe ich die 0,1µF Kondensatoren hinzugefügt, und es hat lediglich bewirkt, dass ich die Anzahl der LEDs erhöhen kann, bevor der Fehler auftritt.
Bezüglich Stromregulierung benutze ich zur Zeit statt dem am Foto sichtbaren Regulator den Polulu Voltage Regulator 5V 3.5A (http://www.nodna.de/Robots-and-Accessories/Power-Battery-Relay-Switch/Voltage-Regulators/STEP-DOWN-Voltage-Regulator-to-33V-or-5V-35A--1482.html), damit der Strom auf jeden Fall ohne der Möglichkeit eines selbst fabrizierten Fehlers fließen soll.
Die Spannung schwankt trotzdem ein bisschen. Im Gleichstrombereich liegt sie bei 4,95 Volt, wenn nur eine Farbe leuchtet, also ein Drittel Verbraucher bemüht werden, und geht runter auf 4,82 Volt, wenn weiß = alle LEDs an sind. Ist eine solche Spannungsschwankung normal?
Stell ich den Multimeter auf Wechselstrom (200V Stellung) - was ich BTW bis zum heutigen Tag noch nie gemacht habe - werden ähnliche Schwankungen mit Werten von 10,3 bis 10,0 angezeigt. Kurz vor dem Ausfall kann ich nichts Besonderes erkennen, und ab dem Moment des Ausfalls bleiben die Werte stehen wo sie sind.

Heute habe ich auch testweise statt den Bestandteilen für den Standalone-Arduino einen echten Arduino angeschlossen, und der Fehler ist ausgeblieben. Sowohl am Steckbrett als auch am PCB. Dann hab ich testweise den Atmega aus dem echten Arduino in den Standalone-Teil eingesetzt und die Hänger wieder gehabt.
Die Schlussfolgerung sollte wohl lauten, daß es an meiner Standalone-Arduino Zusammensetzung liegt. Sie folgt aber dem einfachen Prinzip laut Arduino - Home, da ist ja eigentlich nix, was man falsch machen kann, oder? Vielleicht ist die Frage, wie man es noch weiter verbessern kann, wie zB durch Hinzugefügten des 0,1µF Kondensators?

Ich bin jedenfalls noch am Weitersuchen, was genau falsch ist, und würde mich über weiteres, hilfreiches Feedback freuen!
thx,
ullala :slight_smile:

Jetzt hab ich nicht verstanden; mißt Du 10V Wechselstrom auf dem 5V Anschluß?
Mit welchem Netzteil versorgst Du die Platine?
Um penibel zu sein ist der Quarz nicht am glücklichsten Platz. Neben dem ATmega wären die Anschlüsse kürzer und das ist besser.

Grüße Uwe

Wie von Uwe vorgeschlagen habe ich die 0,1µF Kondensatoren hinzugefügt, und es hat lediglich bewirkt, dass ich die Anzahl der LEDs erhöhen kann, bevor der Fehler auftritt.

Das deutet doch ganz klar auf Probleme mit der Spannungsversorgung. Vermutlich bricht Deine Spannungsversorgung immer wieder kurz ein. Umso länger und stärker je mehr Last Du schaltest. Die Kondensatoren helfen, aber je mehr Last, desto weniger sind sie ausreichend.

Jetzt hab ich nicht verstanden; mißt Du 10V Wechselstrom auf dem 5V Anschluß?
Ah, ich befürchte ich habe Deine ursprüngliche Frage mit dem Messen im Wechselstombereich missverstanden. Ich hab mich schon gewundert, warum ich denn im Gleichstrombereich den Wechselstrom messen soll. Sorry für die Verwirrung.

Mit welchem Netzteil versorgst Du die Platine?
Ein 9V 2000mA Netzteil.

Da haben wir uns falsch verstanden, Ich wollte, daß Du die 5V Gleichstrom im Wechselspannungsbereich mißt. So mißt man den Wechselspannungsanteril der 5V, der eigentlich (fast) nicht vorhanden sein dürften. Dieser Wechselstromanteil kann Schuld an Deinen Problemen sein.
Grüße Uwe

Ich kann mich nur anschließen. Das sieht mir nach dauer-reset des micro-controllers aus.

Du musst mindestens jedem chip die ~100nF goennen und ein paar nicht zu kleine elkos (low ESR) auf die versorgungsspannung setzen, im idealfall dort wo stromspitzen zu erwarten sind (LED treiber) und dort, wo stromspitzen/spannungssschwankungen ueberhaupt nicht ankommen sollen (AVR chip).

Bei DIP chips kannst du das recht leicht nachtraeglich anbringen, auch wenn es nicht 'schoen' aussieht.

http://www.thebox.myzen.co.uk/Tutorial/De-coupling.html

Für heute möchte ich mich mal herzlich für Eure Hilfe bedanken!
Ich hab jetzt noch auf die Schnelle einen größeren Elko direkt in den Sockel zum Atmega gequetscht, und nun funktionieren die ersten 16 RGB-LEDs von der Platine aus.
Morgen werde ich nochmal Spannungen messen, die Details zu verstehen versuchen, und Euch wahrscheinlich mit weiteren Fragen belästigen. Ausserdem dürfen dieses Wochenende noch die Erweiterungsplatinen mitspielen, um die Anzahl der TLCs auf 8 zu erhöhen, d.h. es bleibt sicherlich spannend. Spannend-schwankend? Wie auch immer. Danke!
ullala :slight_smile: