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.
Wieso brauch ich nur einen 595? Ich hab ja schließlich 1:8 Multiplexing
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.
blaue LEDs haben über 3V, der STP16 will allerdings nur 20V, also isses sinnvoll das auf 5 LEDs zu begrenzen^^
man darf doch an den STP16CP05 maximal nur eine LED pro Output verbauen? Reihenschaltung aus 5 LEDs sollte eigentlich nicht funktionieren
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
Der Output Enable ist nicht zum Regeln der Helligkeit gedacht, das Tastverhältnis der einzelnen LEDs bestimmst du mit dem Schieberegister!
Stimmt, aber die globale Helligkeit kann er sehr einfach mit dem OE steuern.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.