RGB Matrix Controller Schaltplan

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Bevor ich jetzt anfange zu löten, würde ich gern mal eine zweite Meinung zu meinem Schaltplan einholen, ob ich irgendwas vergessen habe, oder ob noch irgendwas sinvoll wäre.

    Also das ganze soll ein Controller für eine 8x8 RGB LED Matrix werden.
    Ich habe das mit 74HC595 Schieberegister umgesetzt, und kontrolliert wird das ganze mit einem Atmega328.

    Auf dem Atmega328 habe ich entsprechen ein Sketch gebrannt, was die Register ansteuert.
    Dabei werden die ganzen Zeilen als Bitfolge an das erste Board geschickt.
    Die Zeile selbst wird mit dem zweiten Board ausgewählt.
    Die Pins sind schon definiert am Atmega, es gibt Daten, Takt und Anzeige Pins für die beiden Boards einzeln. Das erste Board hat außerdem ein PWM Pin (D5 am Atmega, 250KHz 6 bit) zugewiesen um die Helligkeit zu kontrollieren.

    Board 1:

    Board 2:

    Bisher funktionieren die Tests auf dem Steckboard sehr gut, und es läuft so wie erwartet.
    Das einzige "Problem" was ich habe ist, das bei niedriger Helligkeit die LEDs zu flackern beginnen. Muss da dann noch irgendwas zwischen, ein Kondensator oder sowas, damit es nicht flackert?
    Oder ist die Frequenz zu niedrig, so das ich die irgendwie erhöhen muss?
    Habe ich sonst noch irgendwas vergessen?

    Könnte die Ampere Zahl evtl zu groß für die Register werden ? Jeder Register kann maximal alle 8 LEDs einschalten, also 8*20mA = 160mA. Ich habe im Datenblatt gelesen, das als absolutes Maximum 20mA pro Ausgang benutzt werden sollte, damit bin ich also am absoluten Maximum, kann das Probleme verursachen, und es wäre evtl besser dort auch noch Transistoren zwischen zu schalten?

  • Hi,
    also ich finde, das sieht gut aus :thumbs1:

    Das mit dem Flackern kenne ich ... das konnte ich beim Dimmen durch ein PWM-Signal auch schon beobachten, hab' mir da aber noch keinen Kopf drum gemacht.
    Ich denke das kommt u.a. daher, dass bei einer LED kein Glühfaden da ist der schwächer glimmt sondern Du eben irgendwann unter die Zündspannung kommst, und dann ists halt duster ...
    Und ja ... evtl. was "Glättendes" in Form von Kondensator könnte das abmildern ...
    Und nein, ich habe keine Ahnung, was Du da am besten nimmst ;) ... vielleicht mal mit nem 10uF Kerko anfangen :s


    cheers,
    -ds-

  • Hi,
    hmmm ... :s ...
    nachdem ja der Pegel langsam abfallen soll (statt der harten Flanke, die die LED ausknipst) würde ich sage, den Kondensator quasi "in Reihe" schalten ...
    Vielleicht ist da auch ein Elko als eine Art Minipuffer sinnvoller :s

    Wie gesagt - keine Ahnung, ich würde da auch rumexperimentieren ...

    cu,
    -ds-

  • Hallo RyuKajiya,

    das Flackern kommt von der geringen Frequenz. Bei höherer Frequenz deuten die Augen dies als steigende Helligkeit. Kommt die Pulsweite in den Bereich, in dem das menschliche Auge zwei unterschiedliche Bilder auch getrennt wahrnehmen kann, dann erkennt das Auge bzw. das Gehirn HELL - DUNKEL. Es flackert.

    Üblicherweise regelt man die Helligkeit von LEDs durch Widerstände. An Deiner Stelle würde ich mal einem programmierbaren Widerstand eine Chance geben.

    Und dann PWM weglassen. Das macht bei LEDs nicht wirklich Sinn.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (19. Januar 2015 um 22:48)

  • Na das ist mir schon klar. Ich suche aber nach Möglichkeiten das zu verhindern.

    Langsamer abfallende Flanke bringt nichts, das ist ja der Output Enable Pin vom Register, da ist entweder an oder aus. Aber so halb an gibts da nicht.

    Und das PWM bei LEDs kein Sinn macht ist ist eine komische Aussage, denn grade bei LEDs wird das ja andauernd benutzt!

    Ich spiel gerade noch mit dem Sketch rum, das ich die Frequenz erhöhe. Aber das hat ja leider auch Auswirkungen auf den internen Takt des Atmegas wenn man daran rum spielt.

    Wie heißen eigentlich Lochraster-Platinen auf Englisch? Ich suche noch nach Eagle Routing-Regeln für Lochraster Platinen. Das was der so berechnet ist ja meistens für PCBs.

  • Hallo RyuKajiya,

    PWM wird an LEDs ausprobiert, weil Du da etwas siehst. LEDs werden mit konstanter Gleichspannung betrieben und nicht mit pulsierendem Sonstwas. Eine sinnvolle Anwendung sind Servo-Motoren...

    Aber egal.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (19. Januar 2015 um 22:55)

  • PWM wird an LEDs auch benutzt um die Helligkeit zu regulieren.
    Alle günstigeren LED Strips benutzen das schon seid Jahren.
    Da gibts dann z.B. auch PWM LED Driver Chips.
    Gibt auch ICs mit PWM Dimmer direkt eingebaut.
    Oder auch welche die RGB mit PWM Dimming mischen.
    Gibt auch Namhaftere wie MAX6974/5 die PWM bei LEDs benutzen.

    PWM Wird bei sehr vielen Feldern benutzt, und bei LEDs auch sehr viel. Könnte dir noch sehr viel mehr Beispiele raussuchen...

    Einmal editiert, zuletzt von RyuKajiya (19. Januar 2015 um 23:23)

  • Hi,


    ...
    Langsamer abfallende Flanke bringt nichts, das ist ja der Output Enable Pin vom Register
    ...


    nö ... ich dachte bei einem Kondensator mehr als eine Art Puffer. Also dass die Spannung nicht abrupt von HIGH auf LOW fällt, sondern die Entladekurve des Kondensators diesen Flankenwechsel etwas "rund" schleift ... wenn Du verstehst, was ich meine ... dann ist die LED nicht sofort aus sondern erst, wenn die Spannung unter der Zündspannung liegt ...


    ...
    Und das PWM bei LEDs kein Sinn macht ist ist eine komische Aussage, denn grade bei LEDs wird das ja andauernd benutzt!
    ...

    ich denke, da habt ihr beide irgendwie recht.
    Bei RGB-LEDs wird ein PWM-Signal zum Mischen der Farben verwendet. Das ist auch das, was ich mit "dimmen" meinte. Hier wird halt durch Verändern der R/G/B Anteile die Farbe kontrolliert.
    Ein echtes Dimmen einer LED ist imho nur über die Regelung der Stromzufuhr möglich.
    Bei Servo-Motoren wird übrigens das Signal nur zur Positionierung verwendet. Der Antrieb selbst erfolgt i.d.R. über eine separate Spannungsquelle, da Servos oft sehr hohe Ströme benötigen.
    Man verwendet afaik allerdings sehr wohl PWM Signale zur Drehzahlregelung. Was m.E. auch prima klappen müsste wären Glühbirnen.


    ...
    Wie heißen eigentlich Lochraster-Platinen auf Englisch? Ich suche noch nach Eagle Routing-Regeln für Lochraster Platinen. Das was der so berechnet ist ja meistens für PCBs.

    Hm, DIY PCB habe ich schon öfter mal gelesen oder auch Matrix Circuit Board


    cu,
    -ds-

  • Schon gefunden: perfboard, veroboard oder stripboard.
    Schon raus gefunden, das für Eagle wohl nur wenig dafür gibt, da wird meistens eher auf sowas wie Fritzing verwiesen.
    Versuch da noch raus zu kriegen ob für die Lochrasterplatinen dort auch ein Autorouting gibt.
    Die Ausgänge der Register auf die Pin Header würde ich gerne mal berechnen lassen... das ist ne unschöne Lötarbeit :D

  • Hi,

    Zitat


    Könnte die Ampere Zahl evtl zu groß für die Register werden ? Jeder Register kann maximal alle 8 LEDs einschalten, also 8*20mA = 160mA. Ich habe im Datenblatt gelesen, das als absolutes Maximum 20mA pro Ausgang benutzt werden sollte, damit bin ich also am absoluten Maximum, kann das Probleme verursachen, und es wäre evtl besser dort auch noch Transistoren zwischen zu schalten?


    Der Strom ist definitiv zu groß! Ein einzelner Pin darf zwar mit 20ma (oder waren es nicht soagr 35?) belastet werden, der Strom für das gesamte IC darf aber 70ma nicht überschreiten. Das ist soweit ich weiß bei allen IC's so. (Also schlussendlich auch beim Pi und Arduino usw.)

    Im Schieberegister Tutorial auf mikrocontroller.net habe ich mal was von dieser "Problematik" gelesen. Da wird auch
    gezeigt wie man dem Problem zumindest ein bischen mit einer einfachen "Trickschaltung" entgegen wirken kann:
    http://www.mikrocontroller.net/articles/AVR-T…Schieberegister

    Da die Chips aber anscheinend wie auch hier http://www.ledhilfe.de/viewtopic.php?p=192108#p192108 zu lesen ist recht belastbar sind würde ich der einfachheit halber mal auf zusätzliche Treiber verzichten. Die "Trickschaltung" würde ich aber wenn möglich so einsetzen. Die ICs zur Sicherheit auch "sockeln". Und mit dem Led Strom vielleicht auch noch etwas runter gehen, sofern es die Helligkeit zulässt.

    Muss aber dazu sagen dass ich selber nicht's in der Richtung im Einsatz habe und mich damit auch zu wenig auskenne um jetzt konkrete Werte nennen zu können.

    -----
    Zum Thema Layouter für Lochrasterplatinen fällt mir eigentlich nur der "Lochmaster" ein. Der besitzt aber soweit ich weiß kein Autorouting und ist mit 50€ nicht gerade billig. Daher auch noch nicht getestet. :)

    DON'T PANIC!

  • Diese Trickschaltung kommt nicht in Frage, weil es RGB LEDs sind mit gemeinsamer Kathode, also umdrehen kann ich da so ohne weiteres nichts.
    Normalerweise werden ICs doch auch warm wenn man die überlastet oder ?
    Also das alle 8 Ausgänge durchgehend belastet werden dürfte relativ selten vorkommen. Ich multiplexe damit ja curch 8 Zeilen der LED Matrix, wenn also durchgehend alle Ausgänge belastet werden, dann müsste ja die ganze Matrix an sein.
    Ich habe ja schon ein paar Stunden getestet damit, und bisher sind die Register gefühlt kein °C wärmer geworden, egal was ich in der Anzeige hatte.
    Notfalls muss ich da auch mit Transistoren arbeiten wie bei der Kathode.

    Wobei mir auch grade einfällt, das die LEDs ja zwar mit 20mA angegeben sind, aber geht das da wirklich auch durch? Ich hab da ja auch Vorwiederstände dran hängen, also eigentlich sollte das doch dann weniger sein... oh man, ich sollte echt mal meine E-Technik Formeln auffrischen...

  • Hallo RyuKajiya,

    welcher Strom durch die LED fließt, kannst Du ja messen oder so ausrechnen:

    I = (U -Uf)/R

    I : Strom [A]
    U: Angelegte Spannung [V]
    Uf: Vorwärtsspannung der LED [V]
    R: Vorwiderstand an der LED [Ohm]

    Dann weißt Du mehr...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • RGB Spannung: 3,0-3,2V Strom: 20MA
    Betriebstemperatur: -20 bis 85 Grad Leuchtwinkel: 15C Lebensdauer: 100,000

    Leider ist es nich pro Farbe angegeben, daher ist die Vorwärtsspannung eine teils unbekannte Variable.

    Wenn ich mich jetzt richtig errinere hab ich an Rot 270ohm gehängt, bei 5V Netzteil und gerechnet mit 3V, also müsste es ja 2/270 sein, also nur 7,4mA.
    Kommt das hin ?

  • Hallo RyuKajiya,

    die Vorwärtsspannungen liegen bei
    - roten LED im Bereich 1,6 bis 2,2 V
    - grünen LED im Bereich 1,9 bis 2,5
    - blauen LED um 3,4 V

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Grün und Blau sind meistens gleich.
    Habe auch diese Angaben zu ähnlichen vom gleichen Händler gefunden
    R: wavelength 630-640nm Brightness 1000-1200mcd Voltage 1.8-2.0V
    G: wavelength 515-512nm Brightness 3000-5000mcd Voltage 3.2-3.4V
    B: wavelength 465-475nm Brightness 2000-3000mcd Voltage 3.2-3.4V

    Kann man die Vorwärtsspannung irgendwie messen?

  • Hallo RyuKajiya,

    z.B. so: http://www.hobby-bastelecke.de/halbleiter/led_durchlass.htm

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hi,
    wie Du den Spannungsabfall pro LED messen kannst - da hat Andreas Dir ja schon einen schönen Link gepostet.
    Ich steuere hier mit einem Arduino RGB LEDs mit gemeinsamer Kathode an.
    Die Vorwiderstände werden dabei mit 100 bzw. 150 Ohm empfohlen. Hilfreich finde ich diese Grafik:

    images?q=tbn:ANd9GcRYYVbURak_vEjGQx14a9MJdszCyJ34-oFHAR5DsLFF3BxmTi-TtA

    An Strom benötigt die LED dann knapp 14 mA pro Farbe ....

    //EDIT:
    -> Hier <- hat joh.raspi wohl vollkommen recht. Laut Datenblatt ist die Maximal-Leistung pro IC mit 500 mW und der Gesamtstrom mit 70 mA angegeben.
    Da hätte ich jetzt nicht mehr dran gedacht, dass die Leistung überschritten wird.


    cu,
    -ds-

  • Ja, solche Beispiele habe ich auch schon gefunden, wobei mich dabei dann immer sehr irritiert, das der Wiederstand an Rot höher ist.
    Denn bei meinem LEDs mit gemeinsamer Kathode ist Rot ein wenig schwächer als Grün und Blau, also müsste doch der Wiederstand dort kleiner als die anderen beiden sein, damit die Helligkeit für alle drei Farben dann gleich ist?
    Zumindest habe ich das jetzt so auf dem Steckbrett gemacht, und die Farben sind gleich hell, wenn an Rot ein kleinerer Wiederstand hängt. Alle 3 Farben an ergibt auch ein weißes Licht, daher denke ich das es so dann auch richtig ist.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!