Liste der Anhänge anzeigen (Anzahl: 2)
4x4x4 Led RGB Cube
Hi,
ich bin auch am entwickeln eines RGB Led Cubes.
Allerdings mit einem etwas anderen Ansatz als die meisten anderen.
Meine Lösung ist sehr PC basiert. Ich habe eine Serversoftware für den PC unter QT und C++ geschrieben.
Diese unterstützt folgende Funktionen:
-Pattern Editor (einzelne Pixel oder Gruppen können mit 256^3 verschiedenen Farben eingefärbt werden)
-Simulation des Würfel in OpenGL
-Bewegtbilder (einzelne Fixbilder können zu Bewegtbildern zusammengefügt werden und so eine Animation von Hand erstellt werden)
-Speichern von Bildern und Filmen
Für die Zukunft sind noch folgende Features geplant:
-Farbübergänge(wie weiß ich noch nicht so wirklich, aber da fällt mir sicher noch was ein)
-Anbindung an Winamp/iTunes etc. Visualisierung der Musik auf dem Würfel
-Verbindung zum Würfel über TCP/IP
-Kaskadierung von Würfeln. (Die Patterns werden aufgesplittet und an verschiedene IP Adressen verteilt. So können Kompakt gebaute Würfel nebeneinander gestellt werden und als ein großes 3D Display angesteuert werden)
-Komplexe Animationen, die automatisiert Ablaufen
-eventuell Ansteuerung über eine Software Midi Schnittstelle. Hier habe ich noch keine Ahnung wie ich das realisieren soll. Muss aber irgendwie gehen.
Der Würfel soll als Basisplatine das AVR Net IO von Pollin verwenden.
Darauf möchte ich eine modifizierte Arduino Version laufen lassen um die Programmierung zu vereinfachen.
Arduino unterstützt z.B. von Haus aus den ENC28J60.
Das Projekt möchte ich gerne als OpenSource veröffentlichen und hoffe bei späteren Funktionen auch auf Mithilfe.
Ich bin allerdings Informatiker und kein Elektroniker. Deshalb bräuchte ich beim Schaltplan und der Auslegung der Hardware ein wenig Hilfe.
Ich möchte Leds mit gemeinsamer Anode(-) verwenden.
Die Ansteuerung möchte ich über 16*3 Säulen realisieren.
Die führt dazu dass ich 48 Ausgangspins bräuchte. Recht einfach scheint eine Ansteuerung der 74HC595 zu sein. An diese kommt man auch sehr einfach. Ich steuere also die LED Kathoden aller LEDs in einer Säule gemeinsam an.
Um jede LED einzeln anzusteuern muss ich aber noch irgendwie durch die Ebenen Multiplexen. Dies würde z.B. über BC547 funktionieren. Um den Lötaufwand etwas geringer zu halten dachte ich an das Darlington Array ULN2803A. Hier möchte ich dedizierte Portpins pro Ebene verwenden.
Warum? weil ich sie zur Verfügung habe und es die schnellste Lösung ist.
Die ULN2803A haben soweit ich weiß interne Widerstände?
Ich denke dann benötige ich keine Vorwiderstände mehr für die LEDs.
Sehe ich das Richtig?
Wenn nein? Welche Werte benötige ich denn?
Ich nehme an zwischen den 74HC595 und den LEDs selbst?
Desweiteren Frage ich mich wie das mit den Strömen bei den LEDs aussieht. Durch das Multiplexing habe ich ja bei den normalen 20mA einen Helligkeitsverlust.
Nach meinem Verständnis müsste ich ein 1/4 Multiplexing haben, da ich ja die einzelnen Farben der einzelnen LEDs in jeder Ebene gleichzeitig Ansteuern kann.
Als LEDs möchte ich aufgrund des Preises diese hier verwenden:
http://cgi.ebay.de/100-RGB-Ultra-LED...item2556fd38c6
Laut Datenblatt sind 200mA für den kompletten Controller und 40mA pro Ausgangspin ok.
Das heißt als maximalen Strom pro Led kann ich 40mA festlegen. Das bedeutet beim 1:4 Multiplexing eine Helligkeit wie bei 10mA pro Led.
Ist das noch ausreichend von der Helligkeit?
Ich komme dann auf eine Belastung des Controllers mit 40*3mA also 120mA. Das dürfte Save sein.
Sind meine Überlegungen soweit korrekt?
Nun zu meinem Problem. Die 74HC595 haben soweit ich das verstanden habe keine Slave Select Leitung. Am SPI hängt aber der ENC28J60.
Demnach muss ich die 74HC595 ja über Software SPI ansteuern.
Reicht die Geschwindigkeit hier für PWM noch aus?
Ich dachte an 4bit PWM in Software? Das sollte für einen flüssigen Farbübergang doch ausreichen?
Wichtig: Das ganze sollte problemlos nachzubauen sein (auch auf Lochraster). Deshalb bitte keine SMD Bauteile empfehlen!
Außerdem habe ich ncoh eine Frage zur Auslegung des Netzteiles. Kann ich da auf dem 7805 bleiben? Der kann ja 1A Problemlos.
Sollte ich ja eigendlich nicht überschreiten wenn ich das richtig überlegt habe, oder?
Habe ich sonst noch irgendetwas wichtigs vergessen?
Im Anhang der Schaltplan, bei dem ich mir nicht sicher bin und ein Bilder der Software.
Viele Grüße,
Tim
Liste der Anhänge anzeigen (Anzahl: 1)
so, ich hab mich nun mal durchgebissen.
Der TLC scheint wirklich das Richtige für mich zu sein.
Dieser besitzt 2 Modi.
-Grayscale für die PWM Regelung
-Dot-Corretion für den Ausgleich von Fertigungstoleranzen der LEDs.
Letzterer Speichert Einstellungen in einem internen EEPROM.
Da ich auf besonders gute Farbdarstellung nicht angewiesen bin habe ich den Modus einfach mal ignoriert und die Pins so an Mass und Vcc angeschlossen, dass immer der Grayscale Mode aktiv ist.
Als Widerstand für die Referenz habe ich 640 Ohm gewählt. Das führt zu einer maximalen Versorgungsstromstärke von 60mA pro Led.
Damit komme ich auf 60mA*16 pro TLC => 960mA..
Das ist immernoch zuviel. Die TLC können im Dil Package maximal 2.5W
mit 960mA komm ich dann aber fast auf 5W.
Als N-Fets habe ich die IRF630 gefunden.
Kann ich die hierfür verwenden?
Diese packen 9A. Das reicht sowieso dicke für alle Würfelgrößen.
Als Pulldown habe ich mal 1k Ohm gewählt.
Vorwiderstände brauche ich ja dann nicht mehr bei dem TLC wenn ich das richtig verstanden habe.
Aber wie löse ich nun das Problem mit der zu großen Leistung auf den TLCs? P-Fet zwischen Leds und TLC und damit den Vorteil der Strombegrenzung zu nichte machen? Den Strom reduzieren?
PWM realisiert ja dann der TLC. D.h. ich bräuchte hierfür keine Rechenleistung mehr im AVR.
Passt das dann mit dem Netztwerkcontroller am SPI und Softwarespi für die TLCs, oder bin ich dann immernoch zu langsam?
Viele Grüße,
Tim
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
so ich nochmal.
Ich habe mir die Sache mit den Atmegas als Slaves nochmal durch den Kopf gehen lassen.
Arduino muss nicht unbedingt sein und ist in diesem Fall auch nicht unbedingt einfacher. Es gibt soviele schöne Webserver, die ich auch verwenden könnet.
Die Schaltung mit den Slaves und dem Master habe ich angehängt.
es funktioniert wie folgt:
Der Atmega32 empfängt über SPI die Pakete, die über den ENC28J60 und das Netzwerk angekommen sind.
Empfangen wird dann so was wie 0 0 0 255 255 255.
Das bedeutet. Led in Spalte 0, Zeile 0 und Reihe 0 hat Rotwert 255 Grünwert 255 und Blauwert 255.
Der Atmega32 ermittelt nun welcher Slave für 0 0 0 zuständig ist und schickt Zeilen und Spalteninformation für die 2D Matrizen sowie die Farben an diesen.
Die Atmega48 erhalten zur Synchronisation mit dem Master das Taktsignal über den Taktausgang des Atmega32.
Der Atmega 32 kümmert sich selbst um die Umschaltung der Ebenen.
Immer wenn eine Ebene umgeschaltet wird wird über den PC2 des Masters ein Interrupt auf den Slaves ausgelöst. Diese schalten dann die Zeile ihrer 2D Matrix um.
Um das Stromproblem der Atmegas zu lösen habe ich für die Ebenen n Channel Fets gewählt und für die Anoden PNP Transistoren.
Jeder Atmega muss dabei dann 12 Software PWM Signale generieren wenn ein 4x4x4 Würfel verwendet wird.
Mit den Atmega48 Pins komme ich auf eine maximale Anzahl von 6x6 Leds pro Ebene. Bei 100mA Impulsstrom kommt man mit 10mA Referenzstrom auf eine maximale Größe von 10x6x6!
Das sollte dicke reichen. Will man mehr kann man die Würfel ja kaskadieren. Mit 4en kommt man dann auf 10x12x12.
Ist die Lösung, die ich erarbeitet habe so gut?
Folgendes steht noch offen?
1.) Sind die BC327 als PNP dafür geeignet? Kann ich diese direkt am Portpin schalten? Ist die Ansteuerung richtig?
2.) Wie groß muss ich die Vorwiderstände für die einzelnen Farben bei einer 4x4x4 Matrix wählen.
3.) Sind die IRLU120N geeignet Als Fets für die Ebenenanschaltung?
Ist der Pulldown Widerstand mit 1k Ohm richtig gewählt?
Sind die Fets richtig angeschlossen, oder ist da irgendwo noch ein Fehler?
4.) Gibt es weitere Probleme im Schaltplan?
Viele Grüße,
Tim
Liste der Anhänge anzeigen (Anzahl: 1)
oh, da hatte sich ein kleiner Fehler eingeschlichen.
Die Leds haben eine gemeinsame Kathode. Somit müsste PNP und N-Fet schon stimmen.
Ich habe den Schaltplan korrigiert und Basiswiderstände für die 327er eingeführt. Ich habe da im Internet als Wert 330Ohm gefunden. Das führe wohl zu 10mA Pinstrom und 1A über Kollektor und Emiter maximal, das durchgeschaltet wird.
Außerdem hatte sich beim I2C noch ein Fehler eingeschlichen. Der braucht wohl noch Pullup Widerstände auf SCL und SDA.
Was wäre das Problem an den IRLU120N, wie wähle ich den Pulldown für die Fets geschickter und was wäre eine besser geeignete Alternative zu den IRLU120N?
Weitere Voerschläge zu meinem Schaltplan, oder weitere Probleme?
Ist doch schon ein ganz schönes Monster geworden. Bisher:
64 Leds
102 Widerstände
4 Fets
48 Transistoren
4 Atmega48
Das wird ne riesige Lötarbeit!
Viele Grüße,
Tim
Liste der Anhänge anzeigen (Anzahl: 1)
Also. Die Basiswiderstände habe ich auf 2,2K erhöht.
Die Pulldown auch auf 2,2K vergrößert.
Den Atmega48 habe ich jetzt noch jeweils bei 100n Caps zwischen AVCC und GND sowie VCC und GND spendiert.
Die Induktivität ist schon drin. Da verwende ich das Pollin Avr Net Io Board, solange ich noch kein Referenzdesign habe.
Gefunden bei Pollin habe ich noch
IRLU024Z 55V 16A 56 cent
IRLU8743 30V 160A 62 cent
IRLU2905 55V 42A 68 cent
IRLU8721 30V 65A 70 cent
Nach Preis sortiert
Die IRLU8743 hat mit 0.0031Ohm den geringsten on Widerstand.
td(on) und td(off) ist mit 19ns aber fast 5mal so groß wie beim 120N.
Ich weiß nicht in wie weit das kritisch ist. Aber ich denke er braucht länger zum schalten als der 120N. Ich habe aber keine Vorstellung wie lange er zum schalten brauchen darf bei meiner Anwendung.
Der 024Z wäre ein Kompromiss.
hat td(on)/td(off) von 8,2ns und einen Widerstand von 0.058Ohm
Denke aber dass auch 19ns Absolut unkritisch sind. ich hab das mal ausgerechnet. Das sind zum ein und ausschalten 38ns.
1s/38ns bedeutet, dass ich ca 2.5*10^7 mal in der Sekunde schalten könnte. Das brauche ich bestimmt nicht und kann der µC auch gar nicht,
wenn ich mich nicht grob vertan habe.
Welchen empfehlt ihr?
Im Anhang noch mal der Schaltplan, in der Hoffnung, dass er jetzt bald so ist, dass er funktionieren wird, wie ich mir das vorstelle :)
Gruß Tim