400er LED-Schriftzug Schaltplan

OP #3219138
Lesenswert?

Hallo

ich möchte einen LED-Schriftzug mit ca. 400 LEDs bauen und habe dafür 
mal einen Schaltplan erstellt. Ich würde mich freuen, wenn jemand mal 
drüber schauen könnte ob das so passt, ins besondere die 
Cascaden-Schaltung der TLC5947 und mir sagt was ich noch verbessern 
kann.

Hier noch die Eckdaten:

Netzteil 24V, 1,8A
Schaltregler LM2576
12 LEDS in einer Reihe
ca. 35 Reihen(noch nicht ganz klar)
LEDs 1,8V - 20mA - 4000mcd - 25°
LED-Treiber TLC5947

Vielen Dank!

Gruß
Carsten
Angehängte Dateien:
Gast #3219242
Lesenswert?

> und mir sagt was ich noch verbessern kann.

Ich sehe 48 maximal 30mA Ausgänge, und wenn 12 LEDs a 1.8V in Reihe 
sollen brauchen die 21.8V, was knapp unter 24V liegt.


Den Schriftzug machst du nun über die Anordnung der LEDs ?

Wozu dann jeden Buchstaben einzeln dimmen können ?
OP #3219325
Lesenswert?

Den Schriftzug will ich über die Anordnung der LEDs erzeugen, es soll 
also keine Matrix werden, da habe ich mich etwas falsch ausgedrückt.

Ich will jeden Buchstaben einzeln ansteuern können und pro Buchstaben 
brauche ich, je nach Buchstaben, so 30-60 LEds. Also brauche ich pro 
Buchstaben ca. 3-6 Reihen, muss dann halt immer ein vielfaches von 12 
sein.

Sind die 2v Überschuss pro reihe zu viel? Sollte ich lieber 13 LEDs 
nehmen?

Das man die dimmen kann ist ein schöner Nebeneffekt aber nicht ganz so 
wichtig.

Ist der Schaltplan soweit ok, kann ich mich an das Layout setzten?

Gruß
Carsten
#3219344
Lesenswert?

@Carsten M. (carsten_m)

>Sind die 2v Überschuss pro reihe zu viel?

Nein, eher zu wenig. Kann man drüber streiten.

>Ist der Schaltplan soweit ok, kann ich mich an das Layout setzten?

Dein KONZEPT ist fragwürdig. Was dort zu sehen ist, ist KEINE Matrix, da 
fehlen noch die Digittreiber, siehe LED-Matrix. Bis zum Layout ist 
noch viel zu tun.
OP #3219373
Lesenswert?

Ich drücke mich glaube immer etwas falsch aus. Ich will gerade kein 
Matrix haben sondern so eine Punktschrift wie in dem Beispiel.

Die LEDs befinden sich auf einem extra Brett. Von der Stiftleiste geht 
dann jeweils ein Signal zu einer Reihe auf dem Brett, dafür wollte ich 
dann ein Flachbandkabele mit Pfostenstecker verwenden und die 24v 
Versorgungsspannung wollte ich immer von Reihe zu Reihe auf dem Brett 
verlegen.

Ich hoffe ich könnte mein vorhaben etwas verständlicher darstellen.

Gruß
Carsten
Angehängte Dateien:
#3219387
Lesenswert?

@ Carsten M. (carsten_m)

>Ich drücke mich glaube immer etwas falsch aus.

Sieht so aus.

>Ich will gerade kein  Matrix haben sondern so eine Punktschrift wie in dem 
>Beispiel.

AHA!

>Die LEDs befinden sich auf einem extra Brett. Von der Stiftleiste geht
>dann jeweils ein Signal zu einer Reihe auf dem Brett, dafür wollte ich
>dann ein Flachbandkabele mit Pfostenstecker verwenden und die 24v
>Versorgungsspannung wollte ich immer von Reihe zu Reihe auf dem Brett
>verlegen.

Also jeder Buchstabe = 1 Reihe LEDs, die alle in Reihe geschaltet sind 
und gemeinsam ein- und ausgeschaltet werden sollen, ggf. noch mit 
Dimmung. Richtig?

Bzw. ein Buchstabe besteht aus einigen Reihen LEDs, weil es sonst 
zuviele pro Reihe werden.
Gast #3219393
Lesenswert?

> muss dann halt immer ein vielfaches von 12 sein.

Nein, musst du nicht, der TLC5749 regelt den Strom auf gleichen Strom 
auch wenn nicht dieselbe Anzahl von LEDs an jedem Ausgang hängt.

Nur die Gesamtbelastung (ca. 1.8W je nach Montage) sollte nicht zu hoch 
werden, an 24V dürften also insgesamt 18 LEDs a 20mA fehlen.
#3219404
Lesenswert?

@ Carsten M. (carsten_m)

>Ja genau so ist es geplant. :)

Na dann mal los.

>Ich hoffe, dass ich den mit dem Schaltplan so umsetzten kann

Geht klar. Denk dran, das die TLC viel Kupfer zum Kühlen brauchen, siehe 
Kühlkörper. Und wähle die Flußspannung der LEDs so, dass ca. 2-3V 
noch übrig bleiben, nicht viel mehr und nicht viel weniger. Hmm, mal 
rechnen.

Wenn der IC 1,8W verkraftet sind das 75mW/Kanal, macht maximal 3,75V 
Restspannung. Passt.
OP #3219428
Lesenswert?

Falk Brunner schrieb:
> Geht klar. Denk dran, das die TLC viel Kupfer zum Kühlen brauchen, siehe
> Kühlkörper. Und wähle die Flußspannung der LEDs so, dass ca. 2-3V
> noch übrig bleiben, nicht viel mehr und nicht viel weniger.

Ok und wenn das gerade nicht passt, weil ich nur noch 6 oder 7 LEDs in 
einer Reihe brauch um den Buchstaben voll zu bekommen, hänge ich einfach 
noch ein Widerstand rein richtig?

Gut dann mach ich mich mal an das Layout, was ich euch dann aber auch 
nochmal vorlegen werde. :)

Vielen Dank erst mal.

Gruß
Carsten
OP #3219800
Lesenswert?

Hallo

so habe jetzt auch das Layout fertig und würde mich freuen, wenn da 
nochmal jemand drüber schauen könnte, man kann da ja doch ne ganze menge 
falsch machen.

Ich habe auch noch mal den Schaltregler extra mit angehängt, hier sollen 
ja  die Strome auch sehr wichtig sein. Ich hoffe ich habe die 
Layoutregeln einigermaßen befolgt.

Also schlagt auf mich ein :)

Edit: Oh ich sehe gerade ich habe die Ebene tPlace nicht mit drauf, wenn 
die noch benötigt wird hole ich das noch nach.


Gruß
Carsten
Angehängte Dateien:
Gast #3219816
Lesenswert?

> Also schlagt auf mich ein

Die eine oder andere Durchkontaktierung in der Nähe der Elkos des 
Schaltreglers zur Masseseite der Platine hin könnte nicht schaden, sonst 
besteht die nächstgelegene Verbindung nur über den Pin des 
Stromversorgungsanschlusses.

Auch beim LM2576 konnte noch die eine oder andere Durchkontaktierung 
hion, schliesslich leiten Vias nicht so besonders.
#3220120
Lesenswert?

@ Carsten M. (carsten_m)

>Geht Klar wurde gemacht. Weitere Änderungen?

Die Verbindungsleitungen zwischen den TLC müssen nicht so dick sein, das 
sind einfache Signale. Wenn man es selber ätzt 0,3mm, bei 
Profiproduktion auch 0,2mm Breite. Bestenfalls die 5V Versorgung kann 
man 0,5mm breit machen.

Die zwei senrechten Letungen auf Bottom in der Mitte weiter 
zusammenrücken, das dort KEINE Masseinsel entsteht.

Die wenigen Leitungen auf Bottom bekommt man zu 90% auch noch auf TOP 
gezogen, nur wo es WIRKLICH nicht durchgeht einen kurzen Umstieg auf 
Bottom machen. Vor allem was die lange Leitung rechts angeht. Dann hast 
du eine nahezu durchgehende Massefläche.

Das mit der Kühlung für die TLC sieht gut aus.
OP #3220789
Lesenswert?

So habe mal versucht eure Vorschläge umzusetzen, ich hoffe so ist es 
besser.

Ich habe hier nicht die Hardware SPI des Atmega genommen, weil im dem 
C-Code die Pins der Datenversorgung vorab definiert werden und ich 
dachte dann das der Atmega noch genug freie Pins hat und ich das einfach 
verteile.
Ist das ein Problem?

Gruß
Carsten
Angehängte Dateien:
#3220815
Lesenswert?

@ Carsten M. (carsten_m)

>Ich habe hier nicht die Hardware SPI des Atmega genommen, weil im dem
>C-Code die Pins der Datenversorgung vorab definiert werden und ich
>dachte dann das der Atmega noch genug freie Pins hat und ich das einfach
>verteile.
>Ist das ein Problem?

Nein, aber man verschenkt ein wenig Rechenleistung. Spielt bei dem 
Projekt aber keine Rolle. Ist mehr Ästhetik.
#3220827
Lesenswert?

Ach ja, zum Layout.

Schalte bei den Polygonen die Option ORPHANTS OFF, denn die kleinen 
Masseflecken ohne elektrische Verbindung bringen nix, im Zweifelsfall 
Ärger.

Die Leiterzüge in die usseren Kontakte der Stiftleiste JP3 erzeugen 
stumpfe Winkel, das sieht komisch aus un kann ggf. leichte Probleme beim 
Ätzen machen. Besser man geht rechtwinklig vom Pad nach links weg, dann 
schräg runter und weiter nach links.

Pin 16 am oberen TLC das Gleiche. Es fehlen Name und Value bei deinen 
TLC Packages.

Zum Themas Schaltregler und Layout gibt es ja den Klassiker vom Lothar.

http://www.lothar-miller.de/s9y/categories/40-Layout-Schaltregler

ICh persönlich bevorzuge achteckige VIAs, da kriegt man auch mehr auf 
engen Raum und sie sehen für mich irgendwie besser aus.

Man kann noch mehr Leitungen von Bottom auf TOP verschieben.

Man kann die Gesamtschaltung komplett nach recht schieben, der Abstand 
zu JP3 ist verschwendet.

Es fehlen Befestigungslöcher, die nimmt man aus der Lib holes.lbr
OP #3258513
Lesenswert?

Hi nochmal,

ich bin codetechnisch etwas ratlos. Die Platine ist wie oben besprochen 
geätzt und beschalten - nun versuche ich die LEDs anzusteuern, erziele 
aber keinen Erfolg. Manche LEDstränge gehen nicht an, eine Änderung des 
angegebenen Wertes ändert nicht die Lichtstärke etc.

Den Code habe ich von 
https://code.google.com/p/monash-wsrnlab/source/browse/trunk/ebug/drivers/tlc5947/tlc5947.c?r=67 
übernommen. Ich gebe zu, dass ich nicht wirklich verstehe, wie die 
Ansteuerung gemacht wird (das Datenblatt zum TLC5947 lässt mich 
weitgehend ratlos zurück) und hatte eigentlich gehofft, mit dem 
bestehenden Code arbeiten zu können.

Kann mir jemand sagen, was ich falsch mache?

Grüße
1
#include <stdlib.h>
2
#include <stdint.h>
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <string.h>
6
#include <math.h>
7

8

9

10
#define F_CPU           8000000UL                  // processor clock frequency
11

12

13
#include <util/delay.h>
14
#define nop() __asm__ __volatile__("nop")
15

16
// Number of cascaded TLC5947 chips
17
#define TLC5947_N 2
18

19

20

21
//XLAT - PB2 SS
22
#define SET_RGB_XLAT_HIGH {PORTC |= (1 << PC5);}
23
#define SET_RGB_XLAT_LOW {PORTC &= ~(1 << PC5);}
24
 
25
//BLANK - PB1
26
#define SET_RGB_BLANK_HIGH {PORTC |= (1 << PC1);}
27
#define SET_RGB_BLANK_LOW {PORTC &= ~(1 << PC1);}
28

29
#if (36 * TLC5947_N > 255)
30
        #define gsData_t uint16_t
31
#else
32
        #define gsData_t uint8_t
33
#endif
34

35
#if (24 * TLC5947_N > 255)
36
        #define channel_t uint16_t
37
#else
38
        #define channel_t uint8_t
39
#endif
40

41
#define gsDataSize ((gsData_t)36 * TLC5947_N)
42
#define numChannels ((channel_t)24 * TLC5947_N)
43

44
extern uint8_t gsData[gsDataSize];
45

46
void TLC5947_SetGS(channel_t channel, uint16_t value);
47
void TLC5947_SetAllGS(uint16_t value);
48

49
#if (3 * 24 * TLC5947_N > 255)
50
        #define channel3_t uint16_t
51
#else
52
        #define channel3_t uint8_t
53
#endif
54

55
uint8_t gsData[gsDataSize];
56

57
void TLC5947_SetGS(channel_t channel, uint16_t value)
58
{
59
        channel = numChannels - 1 - channel;
60
        channel3_t i = (channel3_t)channel * 3 / 2;
61
        switch (channel % 2)
62
        {
63
                case 0:
64
                        gsData[i] = (value >> 4);
65
                        i++;
66
                        gsData[i] = (gsData[i] & 0x0F) | (uint8_t)(value << 4);
67
                        break;
68
                default:
69
                        gsData[i] = (gsData[i] & 0xF0) | (value >> 8);
70
                        i++;
71
                        gsData[i] = (uint8_t)value;
72
                        break;
73
        }
74
}
75

76
void TLC5947_SetAllGS(uint16_t value)
77
{
78
        uint8_t tmp1 = (value >> 4);
79
        uint8_t tmp2 = (uint8_t)(value << 4) | (tmp1 >> 4);
80
        gsData_t i = 0;
81
        do
82
        {
83
                gsData[i++] = tmp1;                     // bits: 11 10 09 08 07 06 05 04
84
                gsData[i++] = tmp2;                     // bits: 03 02 01 00 11 10 09 08
85
                gsData[i++] = (uint8_t)value;   // bits: 07 06 05 04 03 02 01 00
86
        } while (i < gsDataSize);
87
}
88

89

90
void init(void) //initialise ports
91
{
92

93
  //set port output
94
  DDRB = 0xFF; 
95
  DDRC = 0xFF;
96
  DDRD = 0xFF; 
97
  nop();
98

99
  //ports initialize low
100
  PORTB = 0x00;
101
  PORTC = 0x00; 
102
  nop();
103
   
104
}
105

106
int main(void){
107

108
  uint8_t i;
109

110
  init();
111
  PORTD = 0xFD;
112

113
  
114

115
  while (1)
116
  {
117

118
  TLC5947_SetAllGS(1000);
119

120
  }
121

122
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren