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