Forum: Mikrocontroller und Digitale Elektronik TLC5940 (6x kaskadiert) – LED blinkt nur kurz beim Einschalten, danach keine Funktion


von Karanvir (karan)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe das "4 Gewinnt" Spiel versucht auf einer Platine mit LEDs zu
realiseren. Dazu wurde ein LED-Raster aus 6x7 bicolor LEDs (Gelb und
rot) gewählt. Das ganze wird über ein Atmega328P angesteuert. Die LEDs
werden mithilfe von TLC5940 angesteuert. Es gibt 3 Taster, mit denen man
die Spalte quasi auswählt (also links oder rechts) und eine "OK" Taste
zum Bestätigen. Unter dem Raster ist noch eine LED Reihe, mit der man
die Spalte auswählt.
Ich habe die Schaltpläne anhehängt.

Aufbau:
Mikrocontroller: ATmega328P (16 MHz Quarz)
LED-Raster: 6x7 Bicolor LEDs (rot/gelb, gemeinsame Anode an 5V)
Ansteuerung: 6× TLC5940 (kaskadiert)
LED-Strom: ca. 18 mA (IREF = 2 kΩ)
Versorgung: 5V (USB)

Verkabelung TLC ↔ ATmega:
GSCLK → PD3 (Arduino D3)
BLANK → PB1 (D9)
XLAT → PB2 (D10)
SIN → PB3 (D11)
SCLK → PB5 (D13)
VPRG → GND
DCPRG → GND
XERR → nicht verwendet

Testaufbau:
Aktuell ist nur eine Bicolor-LED angelötet (OUT11/OUT12 des ersten TLC)
Rest der Schaltung vollständig bestückt

Nun zum Problem:
Ich habe die Platine bestellt und fast alle Bauteile aufgelötet. Zum
Testen habe ich nur eine bicolor LED angelötet und sonst sind alle
Bauteile angelötet.
Den Atmega habe ich via Arduino programmiert, dabei blitzt die eine LED
nur kurz auf beim Einschalten und blinkt nicht.

Bereits getestet:
Einzelner TLC auf Breakout + Arduino → funktioniert einwandfrei
GSCLK manuell getoggelt → LED reagiert
BLANK testweise LOW → keine Änderung
Spannung am OUT-Pin gemessen (~0.4V)
Verhalten beim Einschalten sporadisch (kein deterministisches Verhalten)

Der Code:
#include <Tlc5940.h>

void setup() {
  Tlc.init();
  Tlc.clear();
  Tlc.update();
}

void loop() {

  //LEDs ein
  Tlc.set(7, 0);
  Tlc.set(8, 0);
  Tlc.set(9, 0);
  Tlc.set(10, 0);
  Tlc.set(11, 0);
  Tlc.set(12, 0);
  Tlc.set(13, 0);
  Tlc.set(14, 0);
  Tlc.set(15, 0);
  Tlc.set(16, 0);
  Tlc.update();
  delay(1000);

  //LEDs aus
  Tlc.set(7, 4095);
  Tlc.set(8, 4095);
  Tlc.set(9, 4095);
  Tlc.set(10, 4095);
  Tlc.set(11, 4095);
  Tlc.set(12, 4095);
  Tlc.set(13, 4095);
  Tlc.set(14, 4095);
  Tlc.set(15, 4095);
  Tlc.set(16, 4095);
  Tlc.update();
  delay(1000);
}

Hat jemand eine Idee, woran es liegen könnte?
Insbesondere ob es ein Problem mit GSCLK Signal (Signalqualität
/Verteilung) oder BLANK / XLAT Timing
oder der Kaskadierung der TLCs sein könnte?

Vielen Dank!
Lg Karan

von Jörg R. (solar77)


Lesenswert?

Ein Thread zum Thema sollte eigentlich reichen:

https://www.mikrocontroller.net/topic/584304#new

von Karanvir (karan)


Lesenswert?

Sorry, hatte es im falschen Forum hochgeladen und dort lässt es sich 
irgendwie nicht löschen.

von Jörg R. (solar77)


Lesenswert?

Karanvir schrieb:
> Sorry, hatte es im falschen Forum hochgeladen und dort lässt es
> sich irgendwie nicht löschen.

Hallo,

ok, du bist neu im Forum. Da muss kann man nicht alles wissen und 
kennen.

Einen eigenen Thread kannst du nur innerhalb einer Stunde nach dem 
Erstellen löschen. Das aber auch nur solange kein Kommentar abgegeben 
wurde. Ausnahme mit der einen Stunde ist nur das Unterforum „Markt“. 
Hier kannst du unbegrenzt lange löschen und editieren..aber auch hier 
nur dann solange kein Kommentar abgegeben wurde.

In deinem Fall hättest du einen Moderator per PN anschreiben sollen, mit 
der Bitte den falsch eingestellten Thread zu verschieben.

Falls hier jetzt ein Moderator mitliest kann er den falsch eingestellten 
Thread ja löschen, bevor in Beiden die Diskussion losgeht.

https://www.mikrocontroller.net/topic/584304#new

von Markus M. (adrock)


Lesenswert?

Das Layout ist wild.

von Karanvir (karan)


Lesenswert?

Hallo,

der Thread im anderen Forum wurde gelöscht.

Lg

von Vanye R. (vanye_rijan)


Lesenswert?

> Das Layout ist wild.

Ich weiss nicht ob "wild" die richtige Beleidung ist. :-D Aber ja, man 
schaut drauf und will am liebsten die Augen zu machen, obwohl ich 
garnicht so genau sagen kann wieso. Erinnert irgendwie an schlimme 
Jugenderlebnisse mit Schaltplaenen von grossen Schaltkaesten in der 
Industrie.
Bestimmt liegt es an Kikad. :-D

Vanye

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Karanvir schrieb:
> Hat jemand eine Idee
Hast du ein geeignetes Messgerät für diese Aufgabe? Ein digitales 
USB-Oszi wie zB von Picoscope oder alternativ ein Oszi und dazu ein 
10€-Logicanalyzer sind die Mindestmessmittel, die man zur erfolgreichen 
Inbetriebnahme solcher seriellen Bussysteme benötigt, weil man nur damit 
sieht, ob die Signalintegrität und die Timinganforderungen eingehalten 
werden.

Alles andere ist wie "Autofahren nach Gehör": wenns scheppert dann ist 
irgendwas schief gelaufen.

: Bearbeitet durch Moderator
von Rainer W. (rawi)


Lesenswert?

Lothar M. schrieb:
> ... schippern ...

Was hat Autofahren nach Gehör mit Schifffahren zu tun?

https://www.openthesaurus.de/synonyme/schippern

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Das war die Autokonrektor... ;-)

Aber auch bei der Schifffahrt wirds ähnlich verlaufen.

: Bearbeitet durch Moderator
von Stephan S. (uxdx)


Lesenswert?

Lothar M. schrieb:
> Alles andere ist wie "Autofahren nach Gehör": wenns scheppert dann ist
> irgendwas schief gelaufen.

"Just married" ;-)

von Karanvir (karan)


Lesenswert?

Ein Oszi habe ich leider nicht, aber ein Logic Analyzer (8 Ch, 24MHz) 
und ein Multimeter hätte ich zur Verfügung

von Frank S. (whugnit)


Lesenswert?

Du könntest den SOUT des letzten TLC5940 zurückführen, dann könntest Du 
den Status zurücklesen (wenn ich beim Überfliegen das Datenblatt korrekt 
verstanden habe) oder auch einfach nur das resultierende 6x192 oder 6x96 
bit Schieberegister per SW testen mit Testmustern testen. Dazu wäre noch 
kein Oszi erforderlich.

von Falk B. (falk)


Lesenswert?

Karanvir schrieb:
> in Oszi habe ich leider nicht, aber ein Logic Analyzer (8 Ch, 24MHz)
> und ein Multimeter hätte ich zur Verfügung

Das reicht. Die paar seriellen Signale anschließen und messen. Wichtig 
ist BLANK! Das muss LOW sein, damit die Ausgänge aktiv werden.
Es braucht für den PWM-Betrieb einen dauerhaften Takt an GSCLK und einen 
periodischen negativen Puls an BLANK. Vorher sollten die beiden 
Registerketten für Dot Correction und Grayscale mit 1 gefüllt werden. 
Das sollte deine Bibliothek machen. Hast du auch die richtigen Pins 
angeschlossen und auch in der Software eingestellt? Das kann und muss 
man mit dem Logicanalyzer messen.

Siehe Fehlersuche.

Die Signale BLANK, GSCLK, SCLK, SIN, XLAT, IREF und VPROG sind wichtig. 
Alles anschauen und messen.

Zum einschalten der LEDs brauch es mindestens
Die beiden Schieberegister mit 1 laden, sprich
DCPRG = 1, SIN = 1, VPRG = 0V, 192 Takte an SCLK
DCPRG = 1, SIN = 1, VPRG = 5V, 96 Takte an SCLK

einen HIGH-LOW Puls an BLANK und dann 1 Takt an GSCLK.

von Wastl (hartundweichware)


Lesenswert?

Karanvir schrieb:
> Hat jemand eine Idee, woran es liegen könnte?

Hauchdünne Versorgungs- und Masseleitungen, wildes unsystematisches
Verbinden dieser Leitungen ohne die geringste Tendenz zu einer
Stern- bzw. Baumstruktur. Soweit das aus dem niedrigst auflösenden
Layout-Bild zu entnehmen ist ..... Zwei Layout-Bilder die das
Gleiche zeigen, nur in anderen Farben, OMG.

Ich sage voraus dass dieses Layout nicht zuverlässig funktionieren
wird. Ich lasse mich aber gerne belehren. Man braucht sich bloss
mal anschauen wie gedankenlos oder unfachmännisch (oder beides)
der Quarz mit seinen Kondensatoren angeschlossen ist. Da braucht
es gar keine Hinweise auf irgendwelche Software-Probleme, völlig
für die Katz.

von Wastl (hartundweichware)


Lesenswert?

Vanye R. schrieb:
> Bestimmt liegt es an Kikad.

Mit Sicherheit ist Kikad hier an der Fehlfunktion schuld.

von Wastl (hartundweichware)


Lesenswert?

Dafür bekommt Vanye dann noch Minuspunkte. Da weiss man was für
Knallköpfe hier am Werk sind.

von Jörg R. (solar77)


Lesenswert?

Wastl schrieb:
> Dafür bekommt Vanye dann noch Minuspunkte.

Wofür soll er denn stattdessen Pluspunkte bekommen? Weil er wieder! 
nicht korrekt zitiert? Weil sein Kommentar so super schlau ist? Weil er 
Kicad und Beleidigung falsch schreibt? Reicht dir das?


> Da weiss man was für Knallköpfe hier am Werk sind.

Genau, aber du bist ja auch dabei.


Vanye R. schrieb:
>> Das Layout ist wild.
>
> Ich weiss nicht ob "wild" die richtige Beleidung ist. :-D

Keine Ahnung was du damit meinst, eine Beleidigung ist es keinesfalls.
„Wild“ ist einfach nur eine Feststellung.

Eine Beleidigung ist dein permanentes Verhalten wenn du Bezug auf andere 
Kommentare nimmst. Weshalb nennst du den Zitierten nicht? Ich finde das 
fast schon asozial.


> Vanye

Lass doch einfach deinen Namen am Ende jeden Kommentars weg, denn das 
ist vollkommen sinnlos und überflüssig. Den Namen sieht man auch so.

: Bearbeitet durch User
von Harald A. (embedded)


Lesenswert?

Platine 2-lagig, wenn ich das richtig sehe? Die Arbeit könnte man noch 
halbwegs retten, wenn man auf 4-Lagen umsattelt.

von Frank S. (whugnit)


Lesenswert?

Eine zweilagige Leiterplatte würde ausreichen bei ausreichend 
vermaschten Masseflächen und ausreichend dicken Versorgungsleitungen. 
Ich kann im Layout nicht erkennen wie die gerechneten Flächen aussehen 
würden, daher ist eine Bewertung nicht möglich.

Beim SCLK ist es ungünstig dass die 6 ICs so verteilt sitzen, 
schließlich ist jeder einzelne auf ein sauberes Taktsignal angewiesen 
(der Baustein kann immerhin bis 30 MHz). Wenn man ein Taktsignal an 
mehrere Senken anschließt dann sollten diese möglichst nah beisammen 
sein. Ob das Signal aber selbst dann bei 6 Lasten noch ausreichend 
sauber ist kann ich nicht sagen. Bei wirklich kritischen Taktsignalen 
würde man einen Taktverteiler verwenden, hier könnte es bei gutem Layout 
evtl. auch noch ohne gehen. Wenn das Signal zu unsauber ankommt kann es 
sein dass eine Flanke doppelt erfasst wird und damit doppelt geschoben 
wird was zu Datenverfälschungen führt

Wenn durch zu viele Lasten an einem Taktsignal die Flanke einfach nur zu 
flach wird könnte es passieren, dass durch leicht unterschiedliche 
Schaltschwellen oder zusätzlich durch Störungen mangels sauberer Masse 
nicht alle Bausteine gleichzeitig takten. Im ungünstigsten Fall wird 
dann an einem nachgeschalteten TLC5940 vielleicht schon das gerade erst 
ausgegebene SOUT des vorigen TLC noch in diesem Takt übernommen wodurch 
auch wieder alles durcheinander kommen könnte.

Jede einzelne Abweichung von einem guten Layout kann, muss aber nicht zu 
Problemen führen.

Wie schon geschrieben könnte man durch einen Test der Schieberegister 
per SW ganz leicht herausfinden ob diese zuverlässig, unzuverlässig oder 
überhaupt nicht funktionieren.

von Karanvir (karan)


Angehängte Dateien:

Lesenswert?

Danke einmal für die vielen Nachrichten.

Falk B. schrieb:
> Die Signale BLANK, GSCLK, SCLK, SIN, XLAT, IREF und VPROG sind wichtig.
> Alles anschauen und messen.

Also ich habe am BLANK Pin mit einem Logic Analyzer gemessen und der 
zeigt, dass es für 1s lang high ist und dann für ca 600us auf LOW.
GSCLK habe ich auch gemessen und da ist ein Takt vorhanden: ca. 997us 
LOW und ca. 345us auf HIGH.
SCLK unregelmäßiger  Takt. ca. 60ms LOW und 250ns HIGH
SIN ganze Zeit auf HIGH
XLAT zuerst unregelmäßig, dann ca 1ms LOW und ca 250ns HIGH.

Ja es ist ein 2-lagiges Layout.

Ich habe gehofft/gedacht, dass man quasi die Bauteile platzieren kann 
und "einfach" verbinden kann oder groß nachzudenken. Es sollte ja kein 
professionelles Projekt werden, daher habe ich keine Gedanken zur 
Verteilung bzw. zum Layout gemacht. Noch dazu dachte ich, dass die 
Library im Code ausreicht, um das Projekt zu betreiben. Tja, dumm von 
mir, aber so lernt man irgendwie etwas dazu.

Die Versorgungsleitung ist halt 0,5mm dick ansonsten sind alle Leitungen 
0,2mm dick.

Ich habe nun das Layout geplottet und als PDF Datei angehängt, hoffe 
dadurch eventuell, dass etwas zum Erkennen ist.

Wastl schrieb:
> Ich sage voraus dass dieses Layout nicht zuverlässig funktionieren
> wird. Ich lasse mich aber gerne belehren. Man braucht sich bloss
> mal anschauen wie gedankenlos oder unfachmännisch (oder beides)
> der Quarz mit seinen Kondensatoren angeschlossen ist. Da braucht
> es gar keine Hinweise auf irgendwelche Software-Probleme, völlig
> für die Katz.

Ich hätte gedacht, den Quarz mit seinen Kondensatoren so nah wie möglich 
und die Leitungen so kurz wie möglich, würde da ausreichen.

Lg Karanvir

von Falk B. (falk)


Lesenswert?

Karanvir schrieb:

> Also ich habe am BLANK Pin mit einem Logic Analyzer gemessen und der
> zeigt, dass es für 1s lang high ist und dann für ca 600us auf LOW.

Das muss anders herum sein! Blank muss ein kurzer HIGH Puls sein, 
welcher den internen PWM-Zähler rücksetzt.

> GSCLK habe ich auch gemessen und da ist ein Takt vorhanden: ca. 997us
> LOW und ca. 345us auf HIGH.

Macht ca. 700 Hz. Das ist für PWM zu wenig. Bei 100Hz PWM-Frequenz und 
12 Bit braucht man eher 410kHz!

> SCLK unregelmäßiger  Takt. ca. 60ms LOW und 250ns HIGH
> SIN ganze Zeit auf HIGH
> XLAT zuerst unregelmäßig, dann ca 1ms LOW und ca 250ns HIGH.

Könnte passen. XLAT ist nur ein kurzer HIGH Puls, um die Daten der 
Schieberegister zu speichern.

Ein Bild sagt mehr als 1000 Worte.

> Ja es ist ein 2-lagiges Layout.

Ist nicht schlimm, auch ist dein Layout nicht so schlim wie einige 
Nörgler hier immer wieder rausposaunen.

 > Ich habe gehofft/gedacht, dass man quasi die Bauteile platzieren kann
> und "einfach" verbinden kann oder groß nachzudenken.

JAIN.

> Es sollte ja kein
> professionelles Projekt werden, daher habe ich keine Gedanken zur
> Verteilung bzw. zum Layout gemacht. Noch dazu dachte ich, dass die
> Library im Code ausreicht, um das Projekt zu betreiben. Tja, dumm von
> mir, aber so lernt man irgendwie etwas dazu.

Noch hast du nichts gelernt. Zuerst müssen die Fehler gefunden und 
behoben werden.

> Die Versorgungsleitung ist halt 0,5mm dick

Reicht, kann man hier aber breiter machen, es ist genügend Platz da.
Ich sehe hier eher ein Problem der Masseleitung deiner TLC5940. Mach mal 
ein gutes Bild, wo die Masseleitung + Flächen leuchten (Highlighing). 
Ich hab da meine Bedenken.

https://www.mikrocontroller.net/articles/Richtiges_Designen_von_Platinenlayouts

Abschnitt Masseflächen

> ansonsten sind alle Leitungen
> 0,2mm dick.

Breit. Kann man machen, ist aber eher unnötig dünn. Bei der Platine und 
Platz reichen auch 0,3mm. Aber heute kann man sich schmale Leitungen 
leisten, der Chinamann kann das problemlos ätzen.

> Ich habe nun das Layout geplottet und als PDF Datei angehängt, hoffe
> dadurch eventuell, dass etwas zum Erkennen ist.

Sieht auf den ersten Blick gut aus. Allerdings kann man keine kritischen 
Signale anzeigen. Lad mal die KiCAD Daten hoch, dann kann man mehr 
sagen.

> Ich hätte gedacht, den Quarz mit seinen Kondensatoren so nah wie möglich
> und die Leitungen so kurz wie möglich, würde da ausreichen.

Tut es auch.

von Thorsten S. (whitejack)


Lesenswert?

ich habe mich auch mal mit dem Spiel beschäftigt, ich meine bei 2005 
rum, gab es auch mal ein Spiel im Elektor und ich hatte auch eine Studio 
Simulation irgendwo her.

Ich weiß noch dass der Algorithmus des "Gegners" sehr sehr 
unterschiedlich stark war, der eine war mega schlecht - da machte das 
Spielen gar keinen Spaß und der andere war sehr sehr gut, da musste man 
schon drei mal überlegen vor dem nächsten Zug...

von Karanvir (karan)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Sieht auf den ersten Blick gut aus. Allerdings kann man keine kritischen
> Signale anzeigen. Lad mal die KiCAD Daten hoch, dann kann man mehr
> sagen.

Ich habe die KiCad Dateien als ZIP Datei hochgeladen, hoffe man kann sie 
öffnen.

Nachdem einige Signale (BLANK, GSCLK, usw.) lt. Messungen  nicht ganz 
stimmen, würde das bedeuten, dass die Library Tlc5940 nicht zu 
gebrauchen ist?
Müsste ich selber einen Code schreiben, der dann die ganzen ausgänge 
toggelt? (SEUFZ)

Lg

von Thorsten S. (whitejack)


Lesenswert?

https://www.meine-schaltung.de/spiele/vier_gewinnt_mit_arduino/


Du kannst doch selber mal toggeln. Prozessor raus und los gehts - dann 
siehst du doch sofort ob und was passiert...

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Karanvir schrieb:
> Ich habe die KiCad Dateien als ZIP Datei hochgeladen, hoffe man kann sie
> öffnen.

Naja. Es ist schon so wie befürchtet hatte. Deine "Massefläche" ist 
extrem zerstückelt. Ob das so läuft, muss man testen. Beim nächsten 
Layout muss das aber anders werden.

https://github.com/PaulStoffregen/Tlc5940/blob/master/examples/BasicUse/BasicUse.ino

/* This loop will create a Knight Rider-like effect if you have LEDs 
plugged
   into all the TLC outputs.  NUM_TLCS is defined in "tlc_config.h" in 
the
   library folder.  After editing tlc_config.h for your setup, delete 
the
   Tlc5940.o file to save the changes. */

Du musst das #define NUM_TLCS in "tlc_config.h" im Bibliotheksordner auf 
6 einstellen (naja, so richtig C++ ist das nicht).

In deinem Schaltplan sind XLAT und BLANK am Controller vertauscht!
Du hast aber Glück! Man kann die Pins im Quelltext anders zuordnen, man 
braucht keine Hardwareänderung.

https://github.com/PaulStoffregen/Tlc5940/blob/master/pinouts/ATmega_8.h

Die Kondensatoren parallel zu deinen Tastern sind falsch, das macht man 
so nicht. Entprellung macht man per Software. Oder wenn schon per 
Hardware, dann richtig mit RC-Filter, siehe Artikel.

Dein PIN-Signal muss auf VCC gesetzt werden.

Wenn du die Änderungen gemacht hast, sollte das einfache Beispiel oben 
mit dem Knight Rider Effekt funktionieren.

Probier mal.

P S Dein Schaltplan ist im Wesentlichen OK. Aber auf Seite 1 kann man 
das alles deutlich übersichtlicher ohne Schnörkel zeichnen.

Schaltplan richtig zeichnen

: Bearbeitet durch User
von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Sooooooo, ich war dann mal so frei und habe die Schaltung, vor allem das 
Layout, "etwas" aufgeräumt.

Zur Schaltung

Schaltplan sauber zeichnen, vor allem Seite 1!
Keine doppelten Signalnamen!
GSCLK sollte ein Pin mit PWM-Fähigkeit sein, wenn man denn WIRKLICH PWM 
nutzen will. Denn dort wird ein dauerhalft hoher Takt benötigt, im 
Bereich von 400 kHz! Das kann man nicht sinnvoll ohne PWM Pin erzeugen.

Bei der LED-Matrix sollte man diese im Schaltplan so anordnen, wie 
sie im Layout angeordnet ist. Im Normalfall ist das NICHT so! Hier aber 
doch, denn damit wird die wichtige Info transportiert, siehe unten.
An U49 habe ich am Ende von SCK einen RC-Snubber (Terminator) platziert. 
Vielleicht braucht man ihn, vielleicht nicht. Siehe 
Wellenwiderstand.
Eigentlich braucht man für ein 4 Gewinnt Spiel keinen Quarzoszillator, 
der interne 8 MHz RC-Takt reicht locker.
Für die TLC5940 reichen 1uF als Entkoppelkondensator.

Layout

Um das Chaos und die Verknotung der Leitungen zu minimieren, um eben 
NICHT auf eine 10 Lagen Platine ausweichen zu müssen (haha), sollte man 
die Zuordnung der LEDs zu den Treibern eben NICHT einfach 1:1 leicht im 
Schaltplan eintragen, sondern geometrisch optimieren. Damit ergibt sich 
vielleicht ein wenig "Chaos" und "unlogische" Zuordnung, aber das kann 
man recht einfach hier wieder in Software korrigieren, Stichwort 
"Mapping". Man braucht nur eine Tabelle, um die physischen LEDs den 
logischen LEDs der Matrix zuzuordnen.
Der Gewinn liegt in der deutlich veringerten Komplexität der 
Verdrahtung.

Damit kommen wir zum Höhepunkt der Veranstaltung. Um mal ein berühmtes 
Filmzitat zu bemühen.

"DAS ist eine Massefläche!"       ;-)

Siehe Anhang. Viel Spaß damit

: Bearbeitet durch User
von Karanvir (karan)


Lesenswert?

> Sooooooo, ich war dann mal so frei und habe die Schaltung, vor
> allem das
> Layout, "etwas" aufgeräumt.

Wow! Vielen Dank für die Mühe! Man sieht, wieviel man da so rausholen 
kann.

> Zur Schaltung
>
> Schaltplan sauber zeichnen, vor allem Seite 1!
> Keine doppelten Signalnamen!
> GSCLK sollte ein Pin mit PWM-Fähigkeit sein, wenn man denn WIRKLICH PWM
> nutzen will. Denn dort wird ein dauerhalft hoher Takt benötigt, im
> Bereich von 400 kHz! Das kann man nicht sinnvoll ohne PWM Pin erzeugen.

GSCLK ist ja am PIN PD3 am Atmega verbunden, der kann ja soweit ich weiß 
PWM Signal liefern.

> Layout
>
> Um das Chaos und die Verknotung der Leitungen zu minimieren, um eben
> NICHT auf eine 10 Lagen Platine ausweichen zu müssen (haha), sollte man
> die Zuordnung der LEDs zu den Treibern eben NICHT einfach 1:1 leicht im
> Schaltplan eintragen, sondern geometrisch optimieren. Damit ergibt sich
> vielleicht ein wenig "Chaos" und "unlogische" Zuordnung, aber das kann
> man recht einfach hier wieder in Software korrigieren, Stichwort
> "Mapping". Man braucht nur eine Tabelle, um die physischen LEDs den
> logischen LEDs der Matrix zuzuordnen.
> Der Gewinn liegt in der deutlich veringerten Komplexität der
> Verdrahtung.

Ja stimmt, so könnte man es auch lösen, wäre eventuell etwas verwirrend 
aber ja.

> Damit kommen wir zum Höhepunkt der Veranstaltung. Um mal ein berühmtes
> Filmzitat zu bemühen.
> "DAS ist eine Massefläche!"       ;-)

Das sieht wirklich toll aus jetzt.

> Siehe Anhang. Viel Spaß damit

Nochmals vielen Dank!
Ich werde den Schaltplan ein wenig aufräumen und die angesprochenen 
Punkte ausbessern und eine neue Platine bestellen.

von Chris V. (nagut)


Lesenswert?

Wow. Ich bin auch beeindruckt, welche Arbeit sich Falk da jetzt gemacht 
hat!
Ich hoffe daher ein wenig, man nimmt mir dieses Posting hier jetzt nicht 
krumm...

Karanvir schrieb:
> Ich werde (...) eine neue Platine bestellen.

Bevor Du bestellst: Was war denn der eigentliche Grund für Dich, dieses 
ganze Vorhaben überhaupt anzugehen? Wolltest Du unbedingt mal eine etwas 
komplexere Schaltung entwerfen und bauen? Oder wolltest Du ein cooles 
Hardware-4-Gewinnt-Spiel haben? Oder hast Du einen Sack voll Bauteile 
gefunden, der "verbastelt" werden muss?

Weil ... man könnte das ganze schaltungstechnisch viel einfacher und 
gleichzeitig mit noch mehr coolen Möglichkeiten (z.B. mehr als 2 
Spieler, leichter auch variable Feldgrößen möglich, noch ganz andere 
Spiele auf gleicher Hardware, ...), realisieren, wenn man eine Kette von 
WS2812 benutzt. Elektrisch und Layout-technisch wäre sowas aber 
natürlich deutlich langweiliger. D.h. ich will Dich zu nix überreden, 
sondern wollte es nur mal erwähnt haben.

von Karanvir (karan)


Lesenswert?

> Bevor Du bestellst: Was war denn der eigentliche Grund für Dich, dieses
> ganze Vorhaben überhaupt anzugehen? Wolltest Du unbedingt mal eine etwas
> komplexere Schaltung entwerfen und bauen? Oder wolltest Du ein cooles
> Hardware-4-Gewinnt-Spiel haben? Oder hast Du einen Sack voll Bauteile
> gefunden, der "verbastelt" werden muss?
> Weil ... man könnte das ganze schaltungstechnisch viel einfacher und
> gleichzeitig mit noch mehr coolen Möglichkeiten (z.B. mehr als 2
> Spieler, leichter auch variable Feldgrößen möglich, noch ganz andere
> Spiele auf gleicher Hardware, ...), realisieren, wenn man eine Kette von
> WS2812 benutzt. Elektrisch und Layout-technisch wäre sowas aber
> natürlich deutlich langweiliger. D.h. ich will Dich zu nix überreden,
> sondern wollte es nur mal erwähnt haben.

Ich wollte wirklich ein cooles Hardware 4 Gewinnt Spiel basteln und 
dabei eine etwas komplexere Schaltung entwerfen. Ich hätte aber nicht 
gedacht, dass diese Schaltung so komplex wird. Ich wollte meine PCB 
Layout Kenntnisse auffrischen und daher entstand dieses Projekt.
Stimmt vollkommen, mit WS2812B wäre das Ganze um einiges einfacher (habe 
ich auch schon in Betracht gezogen bzw. wird dann eventuell eh 
umgesetzt, wenn dieses Projekt mit den TLCs nichts wird), aber ich 
wollte eigentlich eine komplexere Schaltung bauen, um auch ein wenig 
dazu zu lernen, wie man Schaltungen bzw. Layout entwirft, bei denen HIGH 
Speed Signale eine Rolle spielen.

von Falk B. (falk)


Lesenswert?

Karanvir schrieb:
>> nutzen will. Denn dort wird ein dauerhalft hoher Takt benötigt, im
>> Bereich von 400 kHz! Das kann man nicht sinnvoll ohne PWM Pin erzeugen.
>
> GSCLK ist ja am PIN PD3 am Atmega verbunden, der kann ja soweit ich weiß
> PWM Signal liefern.

Stimmt, hab ich übersehen. Das Symbol im Arduino-Schaltplan hat die 
Pin-Funktion OC2B nicht dargestellt. 8-0

> Ich werde den Schaltplan ein wenig aufräumen

Was willst du denn da noch aufräumen?

> und die angesprochenen
> Punkte ausbessern und eine neue Platine bestellen.

Versuch lieber erstmal, die vorhandene Platine zum Laufen zu kriegen. 
Auch wenn das Layout nicht optimal ist, sollte es funktionieren.

von Karanvir (karan)


Lesenswert?

> Was willst du denn da noch aufräumen?

Im Sinne von ausbessern und umändern, beispielsweise die Seite 1.

> Versuch lieber erstmal, die vorhandene Platine zum Laufen zu kriegen.
> Auch wenn das Layout nicht optimal ist, sollte es funktionieren.

Ja auf jeden Fall. Bevor ich da Änderungen vornehme oder eine neue 
Platine bestelle, werde ich die jetzige versuchen zum Laufen zu bringen.

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
Noch kein Account? Hier anmelden.