LED-Cube 8x8x8 (pink)

  • Ja, direkt mit dem Oszi gemessen...Rechteck mit 1/8 Verhältnis und 5 V.


    Ich glaube besser ist es, wenn man nach dem Strom geht...ca. um die 20 mA...(dann dürften die 3,2V vom Hersteller nicht zählen...) und überhaupt Zählt eigentlich das Messergebnis.

  • Ich hab nochmal darüber nachgedacht:


    Du hast ja leider keine Kennlinie von den Led´s, oder?
    Aber du könntest dir eine selber erstellen:


    Bau die Schaltung mal mit einer Veränderbaren Vcc-Spannung für den UDN auf deiner Steckplatte auf. Den Vorwiderstand misst du vorher durch, wegen der Tolleranz.
    Du fängst z.B. bei 5V an, misst die Spannung über dem Vorwiderstand und der Led mit dem Oszzilloskop.
    Das Tastverhältnis behälst du bei, sonst würde die Led ja kaputt gehen bevor wir die Kennlinie fertig haben.
    Die Spannung erhöhst du dann in kleinen Schritten immer weiter bis z.b. 9V. Misst immer wieder mit dem Oszzilloskop


    Die Spannungen über dem Vorwiderstand rechnest du, am besten in einer Exel-Tabelle um in Ströme (I=U/R).
    Dann legst du Spannung und Strom in ein Diagramm und fertig ist deine Kennlinie.



    Wenn du nun sagst du möchtest im Mittel später 20mA haben:


    20mA * 8 = 160mA
    8V minus1,8V(UDN) minus denn Wert den du in der Kennlinie bei 160mA hast ist gleich der Spannung über den Vorwiderstand.


    Rvor=Uvor/160mA


    Ich hoffe, ich hab das verständlich beschrieben ;)


    Gruß Stefan

  • Hi,


    danke für die Hilfe und sorry das es etwas länger gedauert hat...

    Zitat

    Du hast ja leider keine Kennlinie von den Led´s, oder?

    Nein leider nicht. Und wenn dan wäre die Kennlinie doch nur für den Normalbetrieb oder? Ohne Pulsbetrieb...

    Zitat

    Das Tastverhältnis behälst du bei, sonst würde die Led ja kaputt gehen bevor wir die Kennlinie fertig haben.

    Meinst du das Tastverhältnis der Spannung oder vielleicht der Tastköpfe? :)


    Ich habe versucht eine Kennlinie zu erstellen... weiß nicht genau, wie ich das Ergebnis deuten soll.
    Bei angelegten 8V am UDN fallen an der LED 6,15V und am Vorwiderstand 0,05V ab. Es fließt ein Strom von 280 mA.
    Wenn wir jetzt annehmen: 280mA / 8 = 35mA. Das ist schon ganz schön fiel für die LED im Pulsbetrieb oder? ?(
    Ich will einfach nicht das mir nach ein paar Monaten die LEDs durchknallen...


    Zum Vergleich habe ich eine Pinke LED durch eine Blaue ersetzt. Die ist ganz schön Hell im Vergleich zur gestrahlten Pinken und hat nur ein
    Unterschied von -0,3V in der gesamten Kennlinie. Das Licht bricht sich einfach komplett anders an der Oberfläche.


    Hier die Meßergebnisse:


    Gruß

  • irgendwas passt da überhaupt nicht...


    Du hast am Vorwiderstand *immer* 0,05 V, egal bei welchem Strom... ?(


    da muss wohl ein Kurzer in Deiner Schaltung sein, der VWS einfach überbrückt - ansonsten müsste dort die Spannung proportional mit dem Strom ansteigen...


    die 0,05V sind praktisch gar nix, die können auch so schon auftreten, wenn die Messleitungen in der Luft hängen - der Vorwiderstand ist hier einfach nutzlos...


    bzw. misst Du wohl irgendwo falsch, dass rein an der LED dann 7 V abfallen, kann auch nicht sein... wichtig sind *zwei* Werte: die Spannung die über dem VWS abfällt, damit bestimmst Du den Strom - und dann die Spannung, die rein über der LED abfällt (*nicht* "Vorwiderstand+LED") für die Kennlinie

    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!

  • So jetzt hat es geklappt denke ich... ;)


    Ich hatte auf dem Breadboard in eine Kontaktreihe das Signalkabel, ein Widerstand und ein LED-Pin gesetzt...*war natürlich der VWS überbrückt*! :whistling:
    Dazu habe ich noch die Spannung über der LED und dem VWS über 2 Tastköpfe gleichzeitig gemessen...das Signal wurde, warum auch immer einfach größer...
    Nun sind alle Meßwerte einzeln aufgenommen worden. Bei 8V am UDN liegen nun 4,3V an der LED und 2V am VWS. Laut Rechnung:


    8V - 1,8 UDN - 4,3V LED = 1,9V / 18 Ohm = 105 mA Pulsstrom / 8 = 13,2 mA. Ist das Ergebnis nun realer? :)


    Was ich mich noch frage: wenn ich die Betriebsspannung auf 8,95V *Vollanschlag NT* drehe dann lautet die Rechnung:


    8,95V - 1,8V UDN - 4,6V LED = 2,55V / 18 Ohm = 141,6 mA Pulsstrom / 8 = 17,7 mA. Wäre das auch noch im Rahmen? Für die LEDs und das NT? Oder sollte man das NT nicht auf voll last fahren?


    Die Meßergebnisse der LED:


    Die Kennlinie passt in etwa auch zu einer blauen LED: *zumindest von den Spannungen her*


    Gruß

  • Ja das sieht schon besser aus.
    Aber was hast du in der Excel-Tabelle gemacht?
    2V / 18 ohm = 0,111mA du hast da aber 1,95mA stehen.


    Die LEDs haben auch noch ein maximalen Peak Strom der noch überschritten werden darf. Ich würde den Strom daher auch wenn es immer nur ein Peak ist, nicht über 100mA kommen lassen.


    Gruß Stefan

  • Ich hole meine Fragen nochmal hoch:

    Zitat

    Ok, das würde ja bedeuten, dass der sichere Betrieb bei 7,5V wäre? -> Mit einem Peakstrom von 94mA.


    8V wären dann schon zuviel mit dem Peakstrom von 111mA ?

    Bitte um Hilfe... Vielen Dank!


    Gruß

  • Hallo,


    ich antworte nun hier auf die Posts vom "Ich hab da mal ne kurze Frage Thread" .


    Nachdem mich die ganzen Antworten zum nachdenke gebracht haben, habe ich Folgendes festgestellt:
    In der Planung habe ich auf einem Breadboard die UDN-Treiber mit 7,5V versorgt. Die restliche Schaltung hat 5V vom 7805 bekommen.
    Mit der Konfiguration habe ich auch alle Versuche gefahren...Kennlinie der LED ermittelt etc...
    Doch leider hab ich vergessen die 7,5V Leitung zu den Treibern im Schaltplan zu ändern! Die Treiber liegen nach wie vor an den 5V, die vom 7805 kommen.
    Und so habe ich auch layoutet...
    Jetzt wird auch einiges klar, warum der Spg.Regler beim Versuch nicht warm geworden ist, und jetzt ja!


    So, nun sind die Platinen aber schon fertig gelötet und alle Leiterbahnen verlegt....der Platz ist also nur begrenzt vorhanden um Spg.Regler zu tauschen o.ä...


    Nach einem Versuch die Eingangsspannung zu Regeln kam folgendes Ergebnis raus:


    Bei 7V am 7805 -> nach 2 min -> 30°C
    nach 10 min -> 34°C


    bei 7,5V am 7805 -> nach 3 min -> 37°C
    nach 10 min -> 41°C


    bei 8V am 7805 -> nach 3 min -> 42°C
    nach 10 min -> 45 °C (Laut Multimeter Thermometer... gefühlt waren es locker 10°C mehr...)


    Je nachdem ob ich die Eingangsspannung zwischen 7 - 8V regele, verändert sich auch die Helligkeit des gesamten Cubes. Bei 7,5 - 8V ist es ausreichend hell.
    Beim UDN liegen aber max. 5V an, also fließt ein höhere Strom...sonst würde sich nicht die Helligkeit verändern...


    Mein ganz normales *Haushalts-Wattmeßgerät* zeigt bei 8V Versorgung einen Verbrauch von 11,7 Watt und 0,105 A an. Das kann doch aber nicht stimmen...


    Hier mal ein kleines Video von der Testsequenz. VIDEO und die Platinen.


    Platine1

    Platine1-Rückseite


    Platine2

    Platine2-Rückseite


    Jetzt ist die Frage ob das trotzdem so in Ordnung ist oder man auf Nummer sicher gehen soll und den Spannungsregler tauschen, damit er kaum noch warm wird oder etc.


    Gruß

  • Sorry, nicht böse gemeint, aber oft verstehe ich Deine Gedankengänge/Rechnungen/Messungen einfach nicht ?( (deswegen hatte ich auch auf den letzten Post nicht mehr geantwortet...)


    In der Planung habe ich auf einem Breadboard die UDN-Treiber mit 7,5V versorgt. Die restliche Schaltung hat 5V vom 7805 bekommen.

    Ja, so ist es doch auch richtig, so hat es funktioniert, also mach's doch auch hier einfach *genau so*!


    So, nun sind die Platinen aber schon fertig gelötet und alle Leiterbahnen verlegt....der Platz ist also nur begrenzt vorhanden um Spg.Regler zu tauschen o.ä...

    verstehe ich nicht - da ist massig Platz, das ist Lochraster - Du hast nun *eine* Leitung, die vom 7805 kommt und die UDNs versorgt, das ist doch wirklich kein Problem, die durchzuzwicken, und dann ein Stück dicke Litze von der UDN-Versorgung an den *Eingang* der Schaltung zu legen, also *vor* dem 7805 anzulöten, so dass die UDN wieder ihre 7,5 V bekommen...


    dann sind die LEDs wieder hell genug, der 7805 muss nur den Atmega + Kram versorgen, es reicht also dafür leicht der, der schon drin ist...


    Also eben alles *so, wie es bereits schon funktioniert hat*, k.A., warum man da nun mit nem anderen 7805 etc. rumdoktern muss, was doch *wesentlich mehr Aufwand* ist, als einfach nur *einen Draht zu verlegen*... ?(


    EDIT:

    Je nachdem ob ich die Eingangsspannung zwischen 7 - 8V regele, verändert sich auch die Helligkeit des gesamten Cubes. Bei 7,5 - 8V ist es ausreichend hell.
    Beim UDN liegen aber max. 5V an, also fließt ein höhere Strom...sonst würde sich nicht die Helligkeit verändern...

    Das ist klar, der 7805 hat auch nen gewissen Drop, bei 7 V am Eingang und dem viel zu hohen Strom kann da nicht mehr viel rauskommen... ab 7,5 V sind es dann mehr oder weniger stabile 5 V


    *wenn* es aber tatsächlich so ist, dass der Cube bei 8 V am Eingang und dann 5 V an den UDNs hell genug ist, *dann* kannst Du's doch einfach so machen, wie bereits vorgeschlagen wurde, hau' den 7805 komplett raus, und versorge die Schaltung direkt mit einem stabilen 5-V-NT - das wäre ja auch Quatsch, ein 7,5-V NT zu nehmen, und dann 2,5 V x 6 A = 15 Watt (!) in nem unnötigen Spannungsregler zu verheizen... 8|

    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!

    Einmal editiert, zuletzt von Pesi ()

  • Hi Pesi!

    Zitat

    Sorry, nicht böse gemeint, aber oft verstehe ich Deine Gedankengänge/Rechnungen/Messungen einfach nicht

    Wahrscheinlich drücke ich mich nicht deutlich genug aus. Werde mir in Zukunft mehr Mühe geben! :)


    Mit dem "Platz ist nur begrenzt vorhanden" meinte ich, dass genau an der Stelle wo der 7805 plaziert ist, für einen evtl. größeren Spannungsregler wenig Platz ist. Klar könnte man den auch an einer anderen Stelle plazieren, so gesehen ist ja noch eine freie Fläche da... dann müssten aber die Leiterbahnen neu verlegt werden...und ob dann noch der Platz ausreicht, ist fraglich. Und von fliegender Verdrahtung halte ich nichts...das wäre dann *fusch* :D


    Ist aber egal... das Problem ist nun gelöst! Pesi du hast ja recht, es ist einfacher jeweils eine Leitung zu den UDNs an die beiden Platinen zu verlegen, anstatt den Regler zu tauschen...
    Das habe ich nun gemacht und siehe da: Der Regler wird nicht mehr heiß und die Helligkeit der LEDs stimmt auch...also alles wie *eigentlich* geplant! :thumbup:
    Danke für die Hilfe!


    Gruß

  • Mit dem "Platz ist nur begrenzt vorhanden" meinte ich, dass genau an der Stelle

    Das meinte ich auch nicht, sondern überhaupt die Idee, hier nen "dickeren" 7805 nehmen zu wollen, obwohl's doch gar nicht nötig ist... ;) - eher kontraproduktiv


    sondern einfach so, wie vorher schon und eben jetzt wieder - schön, dass nun alles klappt! :thumbup:

    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!

  • Hallo,


    ich melde mich mal wieder nach fertigem Zusammenbaus des Cubes. Die Platinen sind fertig, die Matrix und die Säule auch. Bilder folgen in kürze!
    Nun hänge ich an der Programmierung ... mit dem waitms Befehl kommt man leider nicht weit. :D


    Ich habe versucht mir an diesem Beispiel (10*10*10 Led Cube) ein Bild davon zu machen, wie so ein Programm aussehen
    kann. Leider ist er mit Schieberegistern und nicht wie meiner mit Latches aufgebaut. Demnach paßt auch das Programm nicht.


    Wie kann man schnell und einfach den Code ändern, damit er auf meinen paßt? Irgendwie tue ich mich schwer damit. :S


    Die Pinbelegung vom Atmega32 sieht folgendermaßen aus:


    Das ist die dazugehörige Schaltung:


    Über eine Hilfe wäre ich sehr dankbar!


    Gruß
    Stas

  • Ich antworte Dir mal hier auf Deine PN, siehe dazu meine Signatur...


    Zitat von STASM

    ich habe nun meinen Cube fertig gebaut und beschäftige mich mit der Programmierung.
    Mit dem waitms Befehl kann ich die LEDs im Pulsbetrieb betreiben. Also zu Testzwecken funktioniert das. Um jedoch verschiedene Muster zu erzeugen, reicht das allein nicht aus. Du hattest mir damals den Tipp gegeben mit einem 3-zu-8 Decoder Pins zu sparen. Nun weiss ich leider nicht wie ich diese Schleife schreibe, damit der Decoder zwischen den acht Ausgängen umschaltet. Die Tabelle habe ich hier:



    Wenn ich das "zu Fuß" mache, also mit 1.Ebene Ein/Aus, 2.Ebene Ein/Aus, dann addieren sich ja die Zeiten und der Cube flackert.
    Ich habe auch schon überall gesucht, kann aber nichts Passendes finden. Weißt du vielleicht um Rat? Ich wäre dir sehr dankbar!


    Erst mal Grundsätzlich: man macht sowas nicht mit waitms, sondern in nem Timer-Interrupt - dazu mal den Code hier angucken... (lass' das Fenster mal nebenher offen zum angucken)


    dadurch hast Du ein festes Zeitraster für das Multiplexen, und das geschieht "nebenbei im Hintergrund", in der Mainloop kannst Du dann die Animationen erzeugen/von SD-Karte lesen/per DMX empfangen/wasauchimmer...


    in dieser Routine passiert folgendes:


    1. alle LEDs aus, damit es keine "Nachbilder" gibt
    2. Ebene weiter zählen
    3. die Daten für die neue Ebene an die Latches geben
    4. die neue Ebene anschalten


    die neue Ebene leuchtet dann so lange, bis die Timer-ISR das nächste mal aufgerufen wird.


    die Timer-ISR schaltet also bei jedem Aufruf um eine Ebene weiter. Dazu brauchst Du einen Zähler für die Ebenen, der von 0-7 zählt. Also anfangs ne Variable definieren :


    Code
    dim Ebene as Byte
    Ebene = 0


    (heisst dort im Beispielcode "Zeile", wir nehmen "Ebene", damit wir wissen, was gemeint ist).


    Genauso wie dort, wird also auch hier erst mal die Ebene eins weiter gezählt, bei uns aber nicht von 1-8, sondern von 0-7, dazu gleich mehr:

    Code
    incr Ebene
    if Ebene = 8 then Ebene = 0


    der "Witz" dran ist eben nun, dass Du diesen Wert "Ebene" an PortB ausgeben kannst, die unteren drei Bit, die ja die Zahl 0-7 bilden, schalten dann die 8 Ausgänge dementsprechend (siehe Deine Tabelle). Deswegen solltest Du den Decoder eben an PB0-2 hängen, nicht an 3-5 oder sowas...


    also dann einfach:


    Code
    PortB = Ebene


    die LEDs müssen aber erst mal komplett aus sein, dafür kannst Du den /OE der Latches benutzen - mit


    Code
    PortB.3 = 1 ' Latch-Ausgang aus


    schaltest Du den auf "High", also Ausgänge aus. (Da ist natürlich ne winzige Verzögerung zwischen den beiden Befehlen, während der die LEDs der neuen Ebene *ganz kurz* leuchten, wenn das ein Problem ist, muss man gucken, wie man das anders macht, kann ich in Bascom nicht so auf die schnelle schreiben)


    dann gibst Du die neuen Spaltendaten an die Latches aus. Diese werden in einem Puffer gespeichert, in den Du in der mainloop die Bilder rein schreiben kannst. Da Du nicht nur ein Byte pro Ebene hast wie im Beispielcode, würde man nun der Übersichtlichkeit halber ein 2-dimensionales Array anlegen, man sieht dann gleich bei jedem Byte, zu welcher Ebene und welchem Spalten-Latch es gehört. Das geht in Bascom aber nicht, also legen wir ein eindimensionales Array an, in dem halt jeweils die 8 Bytes für eine Ebene nacheinander kommen, insgesamt also 64 Bytes:


    Code
    dim Buffer (64) as Byte


    Es kommen da also der Reihe nach die 8 Bytes für die erste Ebene, dann die 8 Bytes für die zweite Ebene, usw. - die "Adresse" des gewünschten Bytes ist nun: Byteadress = Ebene * 8 + Spalte


    die Variable "Ebene" enthält ja bereits den richtigen Wert für die aktuelle Ebene, die Spalte musst Du durchzählen für Deine 8 Latches. Könnte man nun mit ner Schleife machen, mach's doch der Einfachheit halber erst mal 8x mit C&P:



    usw., für alle 8 Latches


    dann hast Du die 8 Bytes richtig in den 8 Latches, und kannst die neue Ebene aktivieren, indem Du den Output Enable wieder anschaltest:


    Code
    PortB.3 = 0 ' Latch-Ausgang an


    und damit ist die Routine auch schon durch...


    schreib' das doch mal zusammen, ich hab's Dir jetzt extra nicht komplett vorgekaut, weil Du (und andere, die das interessiert) sollst das ja auch verstehen, was da passiert... ;)

    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!

    Einmal editiert, zuletzt von Pesi ()

  • Hallo Pesi! Erst einmal möchte ich mich für deine Mühe bedanken!
    Ich habe versucht den Code zusammenzuschreiben... Beim Block "Multiplex" habe ich Ebene und Spalte den dazugehörigen Ausgängen als Kommentar beigeschrieben. Kann es sein das die in deinem Beispiel-Code verdreht sind?


    In der Zeile 102 und 105 schreibt Bascom beim Prüfen der Syntax: "Invalid datatype" ?!
    Was mache ich falsch? Und bei den Pattern muss ich wahrscheinlich auch 8 anstatt 3 auflisten, oder?


  • Hm, Du hast es also nicht so ganz verstanden...


    das ganze Multiplexen, also alles, was ich vorher erklärt habe, muss in die Timer-ISR, also zwischen Zeile 40 und 47. - Da unten angefügt bringt das gar nix, weil da springt er ja nie hin.


    Zeile 44 und 46 sowie "Ebenenbit" brauchst Du gar nicht, das ist dort für die Umschaltung, die geht bei Dir aber über den Decoder, wie beschrieben.


    Zeile 45 gibt dort nur ein Byte aus, das musst Du eben durch diese Latch-Ansteuerung ersetzen, weil bei Dir sind's ja 8 Bytes an 8 Latches...


    Kann es sein das die in deinem Beispiel-Code verdreht sind?

    Ich habe mich da nach Deiner tabelle gerichtet, lt. der Latch 1 an PA7 hängt, Latch 2 an PA6 usw.


    In der Zeile 102 und 105 schreibt Bascom beim Prüfen der Syntax: "Invalid datatype" ?!

    Klar - Du musst "Byteadress" ja auch erst mal ganz oben definieren:


    Code
    dim Byteadress as Byte


    Und bei den Pattern muss ich wahrscheinlich auch 8 anstatt 3 auflisten, oder?

    Nein! - Es bleibt ja bei 3 Pattern - nur sind die bei Dir eben jeweils 64 Byte groß statt dort 8. Und bei Dir geht es bei "0" los statt bei 1, also ein Pattern sieht dann so aus:



    Wenn das bei Bascom nicht geht (?) dass ein Array bei 0 losgeht, dann muss man halt die Adresse "verschieben", also hier doch wieder bei 1 anfangen, und oben dann nach Byteadress = Ebene * 8 gleich mal 1 dazu addieren...

    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!