Hi, ich hab hier ein paar LED Treiber vom Typ STP16CP05 liegen.
Ich will damit eine kleine Matrix aufbauen, jetzt weiß ich allerdings
nicht, wie ich das mit möglichst wenigen mache.
Ich wollte zwei davon als Spaltentreiber mit PNP Transistoren verwenden
und jeweils 2, die die Reihen ansteuern.
Dies würde aber bedeuten, dass ich trotzdem die Befehle im Falle der
untersten Zeile durch alle STP16CP05 führen müsste, was ich allerdings
eigentlich vermeiden möchte.
Wie könnte ich das mit den LED Treibern anstellen, dass der Code nicht
durch alle Bausteine durchgezogen werden muss?
lg Thomas
Hab mal ein Plan gezeichnet, könnte das so funktionieren:
Die Basis jedes PNP Transistors liegt an einer Senke des STP16CP05, der
Emitter liegt an der Versorgungsspannung, der Kollektor liegt an der
Anode der jeweils ersten LED.
Die Kathoden der LEDs hängen an dem 2. STP16CP05
Sind 16 LEDs zuviel?, ich wollte zwar ziemliche helle LEDs nehmen und
die dann mit jeweils maximal 3mA betreiben, aber es heißt ja eigentlich
10:1 und nicht 16:1
lg Thomas
Ich bin mir nicht sicher, ob man mit den Dingern wirklich ordentlich
PNPs ansteuern kann, zumindest sind sie eigentlich nicht dafür
gedacht...
Ich würd's so machen:
Nimm zwei von den Teilen und organisiere Deine Matrix statt als 16x16
lieber als 8x32.
Für die Ansteuerung der Spalten nimmst dann ein stinknormales 74HC595
mit dem Du Deine PNPs ansteuerst.
Damit kommst Du dann auch auf ein 1:8 Multiplexing.
>Wie könnte ich das mit den LED Treibern anstellen, dass der Code nicht>durch alle Bausteine durchgezogen werden muss?
Du kannst sie jeweils über eigene Pins ansteuern (die STP16PC05 haben
scheinbar keine ChipSelect Leitung), musst dann aber die SPI
Kommunikation komplett in Software handhaben. Das ist nervig und vor
allem wesentlich langsamer als über den Hardware-SPI im µC.
Häng die Teile einfach in Reihe und klopf die Bytes da durch, mit
Hardware-SPI geht das allemal schnell genug.
(Brauchst bei 8x32 dann 5 Byte pro Spalte, mal 8 Spalten macht das 40
Byte für einen kompletten Bildaufbau. Da kriegste Bildwiederholraten
jenseits von Gut und Böse hin.)
Grüße,
Christian
Edit (weil eben erst realisiert):
>Ich will damit eine kleine Matrix aufbauen, jetzt weiß ich allerdings>nicht, wie ich das mit möglichst wenigen mache.>Ich wollte zwei davon als Spaltentreiber mit PNP Transistoren verwenden>und jeweils 2, die die Reihen ansteuern.
Heiliger Bimbam, was verstehst Du denn unter einer "kleinen Matrix"?!?
Du redest da grad von 32x32 (=1024) LEDs!!!!
Mein Vorschlag mit 8x32 bezog sich auf Deinen Schaltplan, der zeigt
"nur" eine 16x16 Matrix...
wow, vielen Dank für deine Antwort.
Was denkt ihr?, ginge das nich mit den STP16CP05 als Ansteuerung für die
PNPs?
Das sind ja stromquellen, daher sollte sich doch die richtige Spannung
da einstellen?
"wow, vielen Dank für deine Antwort.
Was denkt ihr?, ginge das nich mit den STP16CP05 als Ansteuerung für die
PNPs?
Das sind ja stromquellen, daher sollte sich doch die richtige Spannung
da einstellen?"
Momentmal, was hat das mit Spannug zu tun ?
Du solltest nen 1K vor die Basis hängen, damit du eine Strombegrezung
hast. Spannung, hängt dann vom Transistor und vom Widerstand ab. Und
somit dem daraus resultirendem Strom.
Allerdings auch von der Betriebspannung.
Normalerweise sollte das schon gehen, aber lass diese komischen Treiber
weg, und machs wie mein Vorredner schon super erklärt hat ;)
LG Tim
Also, jetzt hab ich 2 74HCT595 und einen STP16CP05 genommen.
Die Basis der PNPs liegt an den 74HCT595, der Emitter an VCC und der
Kollektor geht zu der Anode der ersten LED in der Reihe.
Der STP16CP05 ist ja eine Senke, daher hab ich ihn an die Kathoden der
LEDs geschalten.
Sind die PNPs richtig herum?
geht das so?
kleine Frage noch zusätzlich:
Ist es überhaupt klug das so mit den PNPs zu verschalten?
Die Ausgänge des 74HCT595 sind ja standardmäßig auf Low, trotz Tri-State
Ausgangs. Das würde ja bedeuten, dass ich Gefahr laufe, dass am Anfang
durch alle LEDs der Pulsstrom fließt?
Den LE Pin des STP16CP05 hab ich parallel zum RCK des 74 595 gelegt. Die
CLK hängt parallel an SCK, passt das so?
Bei Deinem Schaltplan brauchst Du nur einen 595.
Mit z.B. nem BC336 (das war doch der PNP oder?) kannst Du 500mA
schalten, das sollte für 16 LEDs ausreichen. Zur Not halt nen etwas
dickeren PNP nehmen oder die LEDs in zwei Gruppen teilen (wie in Deinem
Plan), aber die Transistoren mit nur einem SR ansteuern.
Mit dem 595 hast Du Recht, die Ausgänge liegen u.U. erstmal auf Masse
nach dem Einschalten, WENN Du den Output Enable ebenfalls auf Masse
liegen hast.
Daher einfach nen Pullup gg. Vcc an /OE dran und den dann mit dem
Controller auf Masse ziehen wenn die Software initialisiert ist -
fertig.
(OE vom 595 solltest Du ohnehin per Controller ansteuern, sonst gibt's
"Geisterbilder" auf der Matrix...)
Ebenso würde ich SCL erstmal auf Masse legen: Solange das auf Masse
liegt sind die Ausg#nge vom 595 hochohmig und die Latches werden
gelöscht. Dann ebenfalls mit dem Controller gg. Vcc ziehen.
Damit kommst Du beim Einschalten erstmal auf nen definierten
Betriebszustand.
Ansonsten sieht der Plan gut aus, die PNPs sind auch richtig rum drin.
Neu schrieb:> Wieso brauch ich nur einen 595?>> Ich hab ja schließlich 1:8 Multiplexing
Eben drum!
Ein 595 steuert dann 8 Spalten (oder Zeilen, je nachdem wie rum man's
sieht) an.
D.h. Du schiebst die Infos für eine Zeile in den STP16CP05, die Info
welche Zeile aktiv ist dann invers (low-active) in den 595. Ergebnis ist
ein 1:8 Multiplexing.
In Deinem Schaltplan von oben nimmst Du einfach den unteren 595 raus und
hängst die LEDs die davon angesteuert werden sollten rechts neben den
oberen Block.
Grüße,
Christian
Mir fällt grad auf, dass ich ja eigentlich nur 3,3V zur Verfügung hab.
Die Senke wäre ja eine Konstantstromquelle, aber geht das dann
überhaupt?
Also, nehmen wir mal an, Spalten gehen von oben nach unten, sie werden
von dem STP16CP05 angesteuert, Reihen gehen von links nach rechts und
werden von den 74 595 gesteuerten PNPs angesteuert.
D.h. Du schiebst die Infos für eine Zeile in den STP16CP05, die Info
welche Zeile aktiv ist dann invers (low-active) in den 595. Ergebnis ist
ein 1:8 Multiplexing.
In Deinem Schaltplan von oben nimmst Du einfach den unteren 595 raus und
hängst die LEDs die davon angesteuert werden sollten rechts neben den
oberen Block.
Meine erste Matrix, sorry, ich verstehs einfach nicht, wieso ich nachdem
ich das Ergebnis invers in den 595 schreibe, ein 1:8 Multiplexing hätte
Gruß
Thomas
Neu schrieb:> Mir fällt grad auf, dass ich ja eigentlich nur 3,3V zur Verfügung hab.>> Die Senke wäre ja eine Konstantstromquelle, aber geht das dann> überhaupt?
Streng genommen ist es ne Konstantstromsenke, keine -quelle. ;)
Ob die 3,3V ausreichen hängt von der benötigten Spannung Deiner LEDs ab.
Bei roten LEDs wird es kein Problem sein, die benötigen so um die 2V.
Bei weissen LEDs wird's ziemlich eng, die brauchen typisch etwas über
3V.
Von den 3.3V gehen aber erstmal ca. 0.6V für den PNP-Transistor ab und
ich glaube der STP16CP05 braucht selbst auch nochmal sowas in dem Dreh
für die Regelung, glaube 0.65V. Macht in Summe dann 1.25V, d.h. es
bleiben von Deinen 3.3V noch 2.05V für die LEDs übrig. Das reicht wie
gesagt grad so für rote LEDs.
Wieso bist Du überhaupt auf 3.3V festgelegt? STP16CP05 kann auf jeden
Fall auch mit 5V arbeiten, dann reicht der Saft auch gut für beliebige
LED-Farben aus...
> Also, nehmen wir mal an, Spalten gehen von oben nach unten, sie werden> von dem STP16CP05 angesteuert, Reihen gehen von links nach rechts und> werden von den 74 595 gesteuerten PNPs angesteuert.
Genau so soll es sein.
Du hast dann also 16 Spalten (gesteuert über STP16CP05) und 8 Zeilen
(gesteuert über 74HC595), macht insgesamt erstmal 128 LEDs.
Zu einem Zeitpunkt sind jeweils nur die LEDs einer Zeile an (maximal 16
Stück auf einmal), daher 1:8 Multiplex weil Du 8 Zeilen hast von denen
eine angezeigt wird.
Noch ein Hinweis zur Auslegung der Bauteile:
Da maximal 16 LEDs gleichzeitig leuchten können muss der
Treibertransistor also maximal 16x den (Puls-)Strom für eine LED
schaffen. Empfehlenswert wäre es, zunächst mal die LEDs nur mit 20mA zu
fahren, dann ist die Matrix zwar nicht ganz so hell wie sie sein könnte,
aber dafür raucht nix ab wenn Deine Ansteuerung nen Bug hat und evtl.
einfach mal stehenbleibt.
>> D.h. Du schiebst die Infos für eine Zeile in den STP16CP05, die Info>> welche Zeile aktiv ist dann invers (low-active) in den 595. Ergebnis ist>> ein 1:8 Multiplexing.>>>> In Deinem Schaltplan von oben nimmst Du einfach den unteren 595 raus und>> hängst die LEDs die davon angesteuert werden sollten rechts neben den>> oberen Block.>> Meine erste Matrix, sorry, ich verstehs einfach nicht, wieso ich nachdem> ich das Ergebnis invers in den 595 schreibe, ein 1:8 Multiplexing hätte
Sorry, da hab ich mich vermutlich doof ausgedrückt. Die inverse
Ansteuerung hat nix mit dem 1:8 zu tun...
Ich meinte damit, dass für die gerade aktive Zeile eine "0" in den 595
getaktet werden muss, für alle anderen Zeilen eine "1". Deshalb invers.
Ich hab mich jetzt für 24x5 entschieden.
Blaue LEDs haben ja über 3V, da geht des echt nicht mehr :-(
Die PNPs hab ich jetzt durch ROHM - RTQ025P02TR (P-Kanal MOSFETs)
ersetzt.
Die Source liegt an VCC, das Gate am 595, das Drain an der Anode der
jeweils ersten LED der Reihe.
Wow, also so langsam glaube ich Du raffst es wirklich nicht.
Warum willst Du das Ganze unbedingt komplizierter aufbauen und ansteuern
als notwendig?
Was ist so schwierig daran, einfach acht Zeilen und 16 Spalten zu
verschalten?
Und (das kapiere ich nun nicht): Was hat die Anordnung Deiner Matrix mit
der Flussspannung der LEDs zu tun?!? o0
Eine Bitte: Lies Dir den Artikel über LED-Matrizen hier im Forum durch
und dann denke nochmal in aller Ruhe über Deine Idee nach. Ich denke, Du
wirst dann feststellen, dass Du ein wenig auf dem Holzweg bist...
btw, die FETs sind prinzipiell schonmal nicht schlecht, aber bei den
hohen Schaltfrequenzen in einer LED-Matrix wirst Du vermutlich nicht um
einen Treiber herumkommen. Zumindest glaube ich nicht, dass ein 595 die
Dinger so einfach umladen kann...
Grüße,
C
> Was ist so schwierig daran, einfach acht Zeilen und 16 Spalten zu> verschalten?
Na ja, man sollte vorher wenigstes mal im Datenblatt der LEDs
nachgucken, ob die überhaupt den 8-fachen Nennstrom vertragen
und dabei ca. 8 mal heller sind.
Da uns Mister Neu aber nichts über seine LEDs sagt, sind alle
Beiträge hier wie deiner: Nutzloses Geschwätz.
Da muß Mister Neu einfach mal nachlesen wie es geht:
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1
Seine Schaltung ist vielleicht tauglich.
jup, kann er.
Ich hab mich jetzt mal am Tutorial orientiert.
Jetzt isses ja möglich, jede LED einzeln anzusteuern, wie regelt man das
jetzt aber mit der Helligkeit ohne vor jedem Anschalten der LED den
Widerstand des STP16CP05 für die Stromeinstellung zu ändern?
Über die Zeit?
Ja, die Helligkeit regelst Du per PWM, wobei PWM hier bedeutet, dass Du
das komplette Bild mehrfach ausgeben musst und dann halt die einzelnen
LEDs nicht jedes Mal einschaltest.
Bild z.B. 10x ausgeben, dabei eine LED nur 5x einschalten und den Rest
aus lassen ergibt eine "dunklere" LED.
Für's erste würde ich das an Deiner Stelle weg lassen, wenn die Matrix
mal läuft kannst Du immer noch versuchen mit den Graustufen zu spielen,
sowas lässt sich nachträglich gut einbauen.
Die (implizite) Frage von MaWin würde ich aber gern nochmal aufgreifen:
Wieviel Pulsstrom halten Deine LEDs denn eigentlich aus?
Hast Du evtl. sogar nen Link zu einem Datenblatt?
Ich wollte eigentlich diese hier verwenden:
MULTICOMP - OVL-3323 - LED 3MM MEGA BRIGHT BLAU
http://www.farnell.com/datasheets/385361.pdf
Ich bin halt davon ausgegangen, dass ich wegen den 1,7cd eigentlich nur
5mA für die Teile brauchen würde.
Die Teile könnten für 0,1ms 100mA ab,
Das heißt, dass der PWM fürs erste nach der Anzahl der LEDs geregelt
werden müsste, wenn mehrere LEDs an einem Strang an sind? und wenn das
alles läuft, in Abhängigkeit der LEDs Anzahl und der gewünschten
Helligkeit?
kleines Update noch:
Ich hab jetzt die Reihen nochmal aufgeteilt, damit der Pulsstrom nicht
so hoch sein muss. Pro Reihe sinds 8 Spalten.
Dadurch gewinnst Du aber leider nichts was die Helligkeit der LEDs
angeht...
Begrenzender Faktor ist bei Dir der Pulsstrom pro LED. (Es sei denn,
Deine Stromversorgung wäre so schlaff, dass sie den Strom nicht liefern
könnte...)
Die können maximal 100mA, bei 8 Zeilen ergibt das im Schnitt 12,5mA für
eine LED bei 1:8 Multiplexing.
Ob ein Transistor nun den Strom für fünf oder zehn LEDs auf einmal
liefern muss ist ziemlich egal.
Ausserdem: Wofür das zweite Schieberegister rechts? Die Transistoren
kann das Register links genauso gut mit ansteuern, einfach parallel
anhängen.
Vorschlag: Beschreibe mal den Gesamtaufbau ein wenig genauer:
- Welcher µC?
- Wie sieht die Stromversorgung aus?
Zur PWM: Mit dem PWM-Pin am STP16CP05 kannst Du nur die Helligkeit für
alle LEDs regeln, ist also nicht geeignet um einzelne LEDs heller oder
dunkler zu machen. Für Deine Anwendung ist der also eher uninteressant,
es sei denn, Du willst die Helligkeit der Matrix global regeln.
Das stimmt, dass ichs eigentlich nicht brauchen würde. Beim Bestücken
werd ichs so machen, wie dus gesagt hast, einfach parallel hängen und
das eine Schieberegister einfach nicht bestücken.
Die LEDs haben ja 1,7cd, man kann ja sagen, dass 1 Candela etwa eine
Kerze auf einem Meter Entfernung entspricht, wenn ich das noch richtig
im Kopf habe.
Bei insgesamt 512 LEDs, die nebereinander sind, kann man glaub ich nicht
mehr bei voller Helligkeit richtig reinschauen.
Ich bin davon ausgegangen, dass ich jede blaue LED nur mit 5mA oder
sowas im Durchschnitt betreibe. Daher sollten doch die 12,5mA Puls
eigentlich vollkommen reichen?
Das Teil soll am Ende eine Wanduhr werden. Da muss das Dimmen auf alle
Fälle funktionieren.
Die Spannungsversorgung wird über ein Schaltnetzteil mit Stecker oder
über 2 LiPo Zellen gemacht. Die Spannungswandlung übernimmt dann ein
LMZ22005 oder sowas in der Richtung, von dem ich mir erhoffe, dass er
EMV mäßig besser ist, als ein normaler Schaltregler mit Spule. Wenn ich
das mit dem Akku noch mache, muss halt noch eine Laderegler IC mit
drauf.
Als Mikrocontroller verwende ich warscheinlich meinen ATmega 644p, der
hier noch rumliegt, falls die Leistung überhaupt reicht, die 512 LEDs
der Matrix zu steuern.
Stimmt, im Prinzip ist ja jede LED in Reihe geschalten, daher isses
egal.
lg Thomas
Vergiss bei den P-Kanal MOSFETs den Pullup-Widerstand am Gate nicht,
sonst hast du eine verwischte Anzeige.
Der 16CP06 hat einen OpenCollector, wird also hochohmig wenn das Digit
nicht angesteuert wird und das nutzt der MOSFET gerne für illegale
Aktionen.
Thomas