10x10x10 LED Cube (Blau)

  • Halli Hallo Forum.

    da Ihr mir bei meinem 3x3x3 Cube schon so super geholfen habt,
    werde ich mich auch in meinem nächsten Projekt an eure Professionellen Köpfe wenden ;)

    Dieses soll der große Bruder meines Cubes werden.
    Ein 10x10x10 mit Atmega32 und Schieberegistern.

    Da der andere Würfel einfach an ein Arduino Board angeschlossen wurde kommen hierbei natürlich einige neue Dinge auf mich zu.
    Zum einen die Schieberegister zum andern eine ISP oder eine Serielle Schnittstelle zum Programmieren des Atmega.

    Bisher habe ich mich soweit ins Thema eingelesen das Schieberegister nichts weiter sind als "porterweiterungen" für den Microcontroller.
    Soll heißen ich schreib ins Schieberegister den Wert 01010101. Diese Bits werden dann solange durchgerückt bis alle drin sind.
    Werden es mehr als 8 Bits werden diese in das nächste Register weitergeschoben.

    Habe mir verschiedene Bauanleitungen angesehen aber nur Schieberegister mit 8 Outputpins gesehen. Allerdings brauche ich doch 10 an jedem Schieberegister oder?
    Oder muss ich dann 14 Stück der 8pin Schieber verwenden um auf meine insgesamt 110 Pins zu kommen?

    Dann die nächste Frage:
    Was wäre einfacher? (Vorteile/Nachteile)
    Eine ISP Schnittstelle oder eine Serielle Schnittstelle zum programmieren des Atmega?
    Habe beides noch nicht genutzt und würde gerne eure Meinung hören.

    Denke das ist erstmal alles... werde mich mal weiter in verschiedenste tutorials einlesen ;)

  • Habe mir verschiedene Bauanleitungen angesehen aber nur Schieberegister mit 8 Outputpins gesehen. Allerdings brauche ich doch 10 an jedem Schieberegister oder?
    Oder muss ich dann 14 Stück der 8pin Schieber verwenden um auf meine insgesamt 110 Pins zu kommen?

    Ich bin mir jetzt nicht 100%ig sicher, ob es keine mit 10 Pins gibt, glaube ich aber eher nicht, weil du im Grunde immer ein Byte an Daten rausschiebst und 1 Byte = 8 Bit. http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI erklärt eigentlich alles. Auf der Webseite gibt es noch weitere Infos zur Ansteuerung über SPI

    Was wäre einfacher? (Vorteile/Nachteile)
    Eine ISP Schnittstelle oder eine Serielle Schnittstelle zum programmieren des Atmega?

    Nimm die ISP Schnittstelle.

  • Zitat

    Was wäre einfacher? (Vorteile/Nachteile)

    Eine ISP Schnittstelle oder eine Serielle Schnittstelle zum programmieren des Atmega?

    Habe beides noch nicht genutzt und würde gerne eure Meinung hören.

    Ganz klar ISP in Verbindung mit einem USB-Programmer. (AVR ISP MKII)
    Das Programmieren geht ziemlich schnell, über die serielle mit Ponyprog dauert das ewig,
    Und weniger Schaltungsaufwand...nur ein Widerling am Resetpin.


    PS:
    Hab ich nicht eigt gestern schonmal auf dieses Thema geantwortet? Da hab ich dir auch was zu den Schieberegistern geschrieben...
    Wieso ist mein Beitrag weg?

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.

    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

  • Sorry White Fox. Schaue hier eigentlich 2 mal am Tag rein aber deinen verlorenen Beitrag hab ich nicht gesehen :/.

    Der AVR ISP MKII hört sich gut an. Hab mir mal die Daten auf der Atmel Homepage angeschaut.

    Habe jetzt auch noch jemanden gefunden der mir die Platine ätzen könnte.
    Werd mir mal einen Schaltplan zusammenbasteln und euch dann vorstellen.

    **EDIT**

    [Blockierte Grafik: http://www.bildhosting.net/img/png/TH_7775eba401d4624853c2bae940762791.png]

    Habe hier mal meine Schaltung zusammengestellt die ich brauche um die LED zu befeuern.
    Da der Würfel im gesamten ja einiges an Strom saugen wird, wird die Ausgangsleistung des Microcontrollers bei weitem nicht mehr reichen.
    Daher habe ich mir mittels WWW mal eine Verstärkerschaltung zusammengebaut.

    Leider bin ich kein Profi und habe sowas noch nicht gemacht. Bevor ich anfange auch nur ein Bauteil zu löten möchte ich mir sicher sein das ich verstanden habe was ich da tue ;).

    Also:
    Das Signal kommt Beispielsweise aus PD0, sicherheitshalber habe ich vor die Basis der Transistoren einen Vorwiderstand gesetzt.
    Bei einem Positiven Signal schalten beide Transistoren durch sodass genügend Strom auf der Leitung zu SL1 liegt(ist hier für die Ebenen gedacht).
    Habe ich das richtig verstanden?
    Reichen als Transistoren die NPN BC140?
    Habe auch noch von MOSFET Transistoren gehört die oft zur Verstärkung von Schaltungen eingesetzt werden (da sie höhere Stromstärken aushalten).... wären die eventuell besser geeignet?

    3 Mal editiert, zuletzt von HartzIV (22. Februar 2012 um 17:11)

  • Hi,

    Also ich verstehe deine Schaltung erlich gesagt überhaupt nicht. Auf der einen seite hast du die Transistoren die auf GND schalten und auf der adneren Seite VDD + Widerstände....


    schau dir doch mal die LED-Cubes von http://www.stefan-weigert.de/ an sind zwar RGB lassen sich aber problemlos runterskallieren.


    Die bauteile lassen sich so alle verwenden (die GALs must du ja nicht verwenden kann man problemlos auch auf andere Weise lösen) dann hast du nen anhaltspunkt.

  • Ah jetzt weiß ich wozu die LED Treiber gut sind....hätt ich mir den aufwand ja sparen können :D
    Danke für die Seite! :thumbup:
    So die Anordnung der LED wird folgendermaßen:
    Kathoden (-) werden zu Säulen zusammengefasst. Die Anoden werden zu Ebenen zusammengefasst.
    Dies daher um weniger Bauteile zu benötigen die den Strom für jede Säule verstärken müssten.
    So muss ich nur Strom auf eine der 10 Ebenen geben und die entsprechende Säule an GND.

    Ok habe mir jetzt mal ausgerechnet was ich pro Ebene an Strom brauche:
    Jede LED benötigt 20mA (laut Datenblatt). Leuchtet soweit auch ganz gut.
    Jede Ebene hat 100 LED benötigt also 2000mA (2A) wenn alle gleichzeitig leuchten.
    Da es ja aber per multiplexing gebaut wird leuchtet jede nur 1/16 der Zeit...daher braucht jede LED auch nur ein 1/16 des Stroms... habe ich das richtig verstanden?
    Oder ist es genau umgekehrt das man das 16fache draufrechnen muss damit die LED in der kurzen Zeit hell genug wird?

    Mit ersterer Vermutung wären es pro Ebene 125mA.
    Mit letzterer wären es 32.000mA (32A)!!
    Erscheint mir etwas viel ?(

  • Irgentwie hast du das Multiplexen noch nicht so ganz richtig verstanden ...

    So wie du das aufbauen willst wird immer ebenenweise durchgeschaltet/gemultiplext sprich zuerst setzt du die 100 Ausgänge für die jeweilige ebene und dann schaltest du die Ebenen ein.

    Dadurch können maximal 100 LED's auf einen Schlag an sein. Also wenn man von 20mA Nennstrom ausgeht wären das dann 2A.

    Aber dadurch das immer nur eine Ebene angeschaltet ist hat man praktisch nur ein zehntel der Helligkeit was in der Regel zuwenig ist deswegen muß man den Strom halt erhöhen.

    Effektive ist das sogar weniger als ein zehntel weil du ja auch CPU Zeit brauchst um die 100 Ausgänge mit den Daten für die nächste Ebene zu füttern und erst dann die Ebene zuschalten solltest.

    Die meisten legen wohl den Cube so aus das statt 20mA nur 60-80 mA fließen sprich du hast dann 6-8A für die Ebenen.

    Ich kann dir nur dazu raten das teil etwas kleiner zu bauen vorallen wenn du dich noch nie mit Schieberegister beschäftigt hast sonst ist der Frust zu groß.

    Achja solltest du mal 'vergessen' die Ebenen auszuschalten weil sich dein Programm aufgehangen hast oder weil du einen programmierfehler gemacht hast halten das die LED's nur ein ganz paar Sekunden aus weil sie halt überstromt werden.


    mfg
    Falo

  • Zitat

    Dadurch können maximal 100 LED's auf einen Schlag an sein. Also wenn man von 20mA Nennstrom ausgeht wären das dann 2A.

    Aber dadurch das immer nur eine Ebene angeschaltet ist hat man praktisch nur ein zehntel der Helligkeit was in der Regel zuwenig ist deswegen muß man den Strom halt erhöhen.


    Eigentlich ist doch JEDE Ebene mit insgesamt 2A versorgt, jeweils 20mA für jede LED. Wieso hat man dann nur ein Zehntel der Helligkeit wenn nur eine Ebene an ist? Die bekommt doch trotzdem die volle 2A?

    Zitat

    Die meisten legen wohl den Cube so aus das statt 20mA nur 60-80 mA fließen sprich du hast dann 6-8A für die Ebenen.


    Ok das wäre wohl etwas viel um das mit den mir bis jetzt bekannten Treibern zu realisieren.

    Wie wäre es denn dann es umgekehrt zu machen sodass die Ebenen an GND gehen und die Säulen an +?
    Dann hätte ich doch pro Säule "nur" einen Strom von 60mA*10 zu handlen oder?

    Zitat

    Achja solltest du mal 'vergessen' die Ebenen auszuschalten weil sich dein Programm aufgehangen hast oder weil du einen programmierfehler gemacht hast halten das die LED's nur ein ganz paar Sekunden aus weil sie halt überstromt werden.

    Naja bei der Stromstärke werden das nicht mal mehr Sekunden sein 8| .

    Zitat

    Ich kann dir nur dazu raten das teil etwas kleiner zu bauen vorallen wenn du dich noch nie mit Schieberegister beschäftigt hast sonst ist der Frust zu groß.


    Du hast sehr wahrscheinlich recht! Aber leider hab ich mich jetzt an dieser Größe festgebissen und möchte nicht erst auf eine kleinere Stufe wechseln.... ist leider manchmal ne nachteilige Eigenschaft von mir.


  • Eigentlich ist doch JEDE Ebene mit insgesamt 2A versorgt, jeweils 20mA für jede LED. Wieso hat man dann nur ein Zehntel der Helligkeit wenn nur eine Ebene an ist? Die bekommt doch trotzdem die volle 2A?

    Weil zu jedem Zeitpunkt nur eine der 10 Ebenen an ist, sprich jede Ebene leuchtet nur ein Zehntel der Zeit lang und gibt damit auch nur ein Zehntel des Lichtstroms ab. Um das zu kompensieren kann man der LED mehr Strom geben, denn die halten kurzzeitig höhere Pulsströme aus. Genaueres steht im Datenblatt der LEDs. Nimm einfach Lichtstarke LEDs, die sind dann selbst bei 1:10 Multiplexing und normalem Strom hell genug. Du willst ja nur was Anzeigen und keinen Raum beleuchten...


    Ok das wäre wohl etwas viel um das mit den mir bis jetzt bekannten Treibern zu realisieren.

    Wie wäre es denn dann es umgekehrt zu machen sodass die Ebenen an GND gehen und die Säulen an +?
    Dann hätte ich doch pro Säule "nur" einen Strom von 60mA*10 zu handlen oder?


    Wie rum du das anschließt ist egal, der Strom bleibt der gleiche. Am einfachsten ist es, wenn du die LEDs gegen Masse schaltest. Die Ebenen kannst du mit N-Kanal-MOSFETs ansteuern, die einzelnen LEDs - falls nötig - mit NPN-Transistoren.

    Beispiel:
    A) VCC -> LED -> Widerstand -> NPN (mit Basiswiderstand!) -> N-FET der Ebene //EDiT: so funktioniert es nicht :D
    B) VCC -> NPN (geht auch ohne Basiswiderstand) -> LED -> Widerstand -> N-FET der Ebene //EDiT: B) VCC -> NPN (geht auch ohne Basiswiderstand) -> Vorwiderstand -> LED -> N-FET der Ebene (so macht es endlich Sinn)

    Bei A kannst du an den LED max. ca. VCC-0,4V erreichen, bei B max. ca. Basisspannung des NPN-0,7V.

    3 Mal editiert, zuletzt von the_tony (23. Februar 2012 um 22:57)

  • Zitat

    Weil zu jedem Zeitpunkt nur eine der 10 Ebenen an ist, sprich jede Ebene leuchtet nur ein Zehntel der Zeit lang und gibt damit auch nur ein Zehntel des Lichtstroms ab. Um das zu kompensieren kann man der LED mehr Strom geben, denn die halten kurzzeitig höhere Pulsströme aus. Genaueres steht im Datenblatt der LEDs. Nimm einfach Lichtstarke LEDs, die sind dann selbst bei 1:10 Multiplexing und normalem Strom hell genug. Du willst ja nur was Anzeigen und keinen Raum beleuchten...


    Jetzt hab ichs verstanden ^^. Hätte sowieso Ultrahelle LED genommen.

    Zitat

    Beispiel:
    A) VCC -> LED -> Widerstand -> NPN (mit Basiswiderstand!) -> N-FET der Ebene
    B) VCC -> NPN (geht auch ohne Basiswiderstand) -> LED -> Widerstand -> N-FET der Ebene


    Uff.... :huh:
    kann mir darunter nur schwer etwas vorstellen... kannst du mir das als Schaltplan oder als Zeichnung zeigen?


  • Uff.... :huh:
    kann mir darunter nur schwer etwas vorstellen... kannst du mir das als Schaltplan oder als Zeichnung zeigen?

    Uff, beim Zeichnen ist mir jetzt aufgefallen, dass A gar nicht funktionieren kann :D

    //EDiT:

    So kann das Beispielsweise für 2 Ebenen mit je 2 LEDs aussehen. Alle LEDs einer Ebene sind an der Kathode miteinander verbunden (common cathode).

    2 Mal editiert, zuletzt von the_tony (23. Februar 2012 um 22:56)

  • Ich versuch mich mal noch schnell vorm Bett dran das Beispiel B) in einer schaltung zu interpretieren ;)
    **EDIT**
    Ah du kamst mir zuvor.
    Ok jetzt ergibt das ganze für mich einen Sinn. Danke! :thumbup:

    Werd mal ne Nacht drüber schlafen und mich dann morgen wieder melden.
    Finds super das Ihr alle helft.... Klasse Forum kann ich da nur sagen!

    Einmal editiert, zuletzt von HartzIV (23. Februar 2012 um 23:08)

  • Soo hab mir wieder einige Gedanken gemacht:
    So wie mir das the_tony erklärt hat bekomme ich auf jedenfall genug Strom drauf, verbrate aber viele Mosfet und NPn Transistoren.
    Was wäre wenn ich stattdessen einen LED Treiber (bsp.: UDN2981A) nehme und ihn hinter jedes der Schieberegister setze.
    Dieser kann (so wie ich es verstanden habe) jedes Eingangssignal auf bis zu 500mA am Ausgang hochschrauben.
    Jede Säule braucht 60mA*10=600mA. Ok meine LED wären dann etwas schwach auf der Brust aber sie würden leuchten.
    Da wäre natürlich die Frage ob es nicht stärkere LED Treiber gibt?

  • Dieser kann (so wie ich es verstanden habe) jedes Eingangssignal auf bis zu 500mA am Ausgang hochschrauben.
    Jede Säule braucht 60mA*10=600mA. Ok meine LED wären dann etwas schwach auf der Brust aber sie würden leuchten.
    Da wäre natürlich die Frage ob es nicht stärkere LED Treiber gibt?

    Du hast es leider immer noch nicht VERSTANDEN wie wie das Multiplexen wirklich funktioniert.

    Eine Säulenweise ansteuerung würde bedeuten das du nur noch eine Einschaltzeit von 1/100 hättest dann müßtest du theoretisch 600mA durch jede LED (6A pro Säule) jagen das hält aber selbst im Pulsbetrieb keine 20mA LED aus.

    Lies dich hier mal ein und plane erst weiter wenn du die funktionsweise wirklich verstanden hast:
    http://www.mikrocontroller.net/articles/LED-Matrix

    mfg
    Falo

  • Ok habe es mir clevererweise mal aufgezeichnet... also den Würfel.


    Jetzt da ich Ihn als Schaltung sehe verstehe ich (hoffentlich 8| ) was ihr meint.


    Also:
    In einer Zeiteinheit leuchtet eine Ebene nur 1/10 lange. In einer Zeiteinheit leuchten also einmal alle 10 Ebenen durch.
    Dadurch müssen die LED 10 mal soviel Strom bekommen um hell genug zu sein.
    Die LED haben einen Nennstrom von 20mA.
    Dementsprechend hat jede Säule einen Pulsstrom von 20mA*10LED=200mA
    und jede Ebene 20mA*100LED=2A
    richtig?
    Dann setze ich die gewünschten LED auf + und schalte dann die entsprechende Ebene auf GND und es leuchtet.
    Ist das soweit korrekt?

  • Ist das soweit korrekt?

    NEIN,bis auf deinen letzten Satz paßt da fast nichts.

    Letzer Versuch von mir:
    .

    Zitat


    In einer Zeiteinheit leuchtet eine Ebene nur 1/10 lange. In ZEHN Zeiteinheiten leuchten also einmal alle 10 Ebenen durch.


    Dadurch müssen die LED 10 mal soviel Strom bekommen um hell genug zu sein
    Die LED haben einen Nennstrom von 20mA.

    Dementsprechend hat jede LED einen Pulsstrom von 20mA*10 LED=200mA

    und jede Ebene zieht pro eingeschalteter LED 200mA macht also bis zu 100 * 200mA = 20A

    Und um den Strom etwas zu reduzieren geht man halt nicht von 20mA pro LED aus sondern nimmt nur 6-8mA pro LED mit einer geringfügig reduzierten Helligkeit.

    mfg
    Falo

  • Zitat

    In einer Zeiteinheit leuchtet eine Ebene nur 1/10 lange. In ZEHN Zeiteinheiten leuchten also einmal alle 10 Ebenen durch.


    Entschuldigung.... das meinte ich eigentlich auch.

    Zitat

    Dementsprechend hat jede LED einen Pulsstrom von 20mA*10 LED=200mA

    und jede Ebene zieht pro eingeschalteter LED 200mA macht also bis zu 100 * 200mA = 20A


    Ok ich errechne mir den Pulsstrom indem ich den Nennstrom mal die "Multiplexzeit" rechne. Das habe ich jetzt verstanden.
    Logisch das dann bis zu 20A pro Ebene fließen.

    Zitat

    Und um den Strom etwas zu reduzieren geht man halt nicht von 20mA pro LED aus sondern nimmt nur 6-8mA pro LED mit einer geringfügig reduzierten Helligkeit.


    Argh... weiter oben hattest du von 60-80mA geschrieben. Das hat mich etwas verwirrt. Klar das du eigentlich 6-8mA meintest um den Strom pro Ebene auf maximal 6-8A zu drücken..
    Danke für die Geduld mit mir aber ich denke jetzt hab ichs ^^

  • So werde nun also die Ebenen mittels 10 Low-Side N-Kanal-Mosfet auf GND schalten.
    Die einzelnen LED werden per High-Side NPN Transistor auf VCC geschaltet.

    Als Mosfet habe ich mir die IRF7403 rausgesucht die eine dauerhaften Kollektorstrom von 8,5A aushalten und einen Schwellwert von 4,85V haben.
    Als NPN Transistor habe ich mir FMMT617(SOT23 von Zetex) rausgesucht die einen dauerhaften Kollektorstrom von 3A aushalten und einen Schwellwert von 15V haben.
    Oder gibt es besser geeignete? Oder mache ich wieder etwas total falsch? ;(

  • Ich würde die Plus-Seite mit nem PNP schalten, siehe dazu auch hier... oder gleich mit nem Array wie UDN2981... wobei Du bei dem aber nen recht hohen Drop hast

    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!