PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 4x4x4 Led RGB Cube



Ls4
11.01.2010, 11:46
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-LEDs-RGB-5mm-4Pin-10000mcd-Rot-Gruen-g_W0QQitemZ160373225670QQcmdZViewItemQQptZAutoteil e_Zubeh%C3%B6r?hash=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

ubimbo
12.01.2010, 13:52
Servus,

kuck mal nach Max7221 oder Max7219.
Das sind Multiplexerchips, einfach anzusteueren und beherrschen bis zu 100 LEDs (musste noch genau nachschauen). Wie PWM da machbar ist (ist mit sicherheit machbar) müsste man noch klären.

Aber ist glaub ich einfacher als selbst zu multiplexen.

Besserwessi
12.01.2010, 17:44
Im Schaltplan sind noch keine Widerstände zu den LEDs. Ohne wird bei RGB LEDs schwierig, schon wegen der verschiedenen Spannungen.

Für eine einigermaßene Helligkeitsregelung wird man mher als 4 Bits brauchem. Wegen des nichlinearen Helligkeitsemppfinden sind selbst 8 Bit nicht so reichlich.

Die Geschwindigkeit des µC reicht für software PWM (8 Bit) gerade so aus, wenn man sich mit dem Programm etwa Mühe gibt. Viel Rechenzeit ist dann aber vermutlich nicht mehr über, und man braucht eine Hardware SPI Verbindung. Das könnte das SPI Interface oder die USART sein. Wobei ich nicht weiss ob die USART schnell genug ist. die müßte man dann eventuell für die andere VErbindung nutzen. Entsprechend müßte man etwas andere Pins wählen.

Wie viel Rechnzeit die Ethernet verbindung braucht weiss ich nicht, dass sollte man vorher nachsehen, ob noch genug übrig ist.

Vom Strom her sollte der 7805 noch reichen, wohl aber mit Kühlkörper.
Mehr als 70 mA sollte einer HC595 nicht liefern (limit aus dem Datenblatt), also maximal 420 mA gesamt. Auch der ULN2.... kann ja nur 500 mA maximal.
Ist ein wenig die Frage ob die LEDs mit ca. 8 mA und 1:4 multiplexing hell genug sind. Das entspricht etwa 2 mA Dauerstrom pro LED.

Edit:
Wenn das Datenblatt stimmt, sollte die Helligkeit zumindest im Zimmer ausreichen.

Ls4
12.01.2010, 18:39
Hallo Ubimbo,

ich hab ich mir schon angeschaut. Die werden z.B. beim Arduinome verwendet http://en.wikipedia.org/wiki/Arduinome
Diese können aber soweit ich wei kein PWM. Fallen also weg

Mittlerweile ist mir noch folgendes eingefallen:
1.Die Belastbarkeit der PIN Outs des AVR sind unerheblich, da sowieso alles entweder an den ULN oder an den 75HC595 hängt
2.Die Pins des 74HC595 sind bis 35mA belastbar. Gesamtbelastbarkeit liegt bei 500mW für den Chip.
3. Natürlich brauche ich Vorwiderstände. die ULN2803 haben diese nicht eingebaut, da es nur ein Darlignton Array ist.
4. Es wäre Vernünftiger den AVR an 5V laufen zu lassen (um die 16Mhz problemlos zu erreichen) und ein eigenes Netzteil für die LEDS auszulegen, welches sinnigerweise mit 3.3V läuft. Damit würde ich am wenigsten Leistung an den Widerständen verheizen.
Ist das überhaupt problemlos möglich? Ich denke in der aktuellen Variante müsste ich dann die 74HC595 mit 3.3V versorgen. Ist der 5V Pegel des AVR dann ein Problem?
Wie erzeuge ich die 3.3V am sinnigsten?

Fazit:
Ich gehen davon aus wenn ich zwischen die 74HC595 und die LEDs Vorwiderstände löten würde würde das funktionieren. Zwar hart am Limit der 74HC595, aber es würde wohl gehen.

Da ist Optimierungspotential da.
Da meine Software extrem flexibel ausgelet ist und beliebige Würfelgrößen unterstzützt wäre es schön da noch etwas mehr Spielraum zu gewinnen. Schön wären vor allem ICs zur Ansteuerung, die PWM selbst können. D.h. ich gebe über I2C, SPI etc den Wert vor und der IC berechnet PWM dafür.
Je mehr Logik ich in ICs auslagere, desto weniger Rechenpower benötige ich im AVR.
Ergo: Je mehr Logik außerhalb, desto mehr Leds können berechnet werden.

Die elektrischen Grenzen der Bauteile machen mir allerdings noch deutlich mehr sorgen.

Was man also bräuchte wäre einen Baustein wie den Max7221 im Dil Package (kleiner schwarzer Käfer mit vielen Beinen) der am besten über I2C angesteuert wird un PWM kann. Kennt da jemand was?

Dann bräuchte man auch so gut wie keine weitere Externe Hardware zur Ansteuerung und könnte problemlos mit 5V fahren.

Gefunden habe ich hierzu den MBI5030. Das ist ein 16 Kanal Led Treiber mit 12bit PWM! WOW!!!
Davon 3 Stück und man hätte schon die komplette PWM Sache abgedeckt und würden den Atmega damit nicht belasten.

Leider hat der Chip noch einige Nachteile:
-SPI wird unkonventionell angesteuert. Da is auch nix mit Hardware PWM
-Benötigt einen externen Takt mit maximal 8Mhz =>woher nehmen. da braucht man wieder Hardware... Ist aber ein kleines Problem. könnte man nen Atmega48 nehme. die kosten ja kaum was und können das Taktsignal ausschleifen.
-Löst nicht das Problem mit dem Ebenenmultiplexing
-45mA maximaler Ausgangsstrom... Naja geht bei 1:4 Multiplexing wohl, aber auch bei mehr noch?
-SMD Package (SSOP24). Wenns da nen Dil Adapter gäbe wäre das kein Problem

Und dann gibts da noch den TLC5940!!!
Dieser scheints quasi für meine belange gemacht zu sein!
-Dil28 Package
-12Bit PWM
-16 Kanal LED Treiber
-120mA maximaler Ausgangsstrom pro Kanal! Das ist super und sollte sogar für 1:10 multiplexing noch funktionieren!
Der Chip scheint außerdem keinen externen Takt mehr zu benötigen.
Hier wird er verwendet:
http://www.thebox.myzen.co.uk/Hardware/Mini_Monome.html

Das Ding hat nur ein Problem. Der Chip scheint zwischen 7 und 8 Euro zu kosten....... Das ist starkes Stück. Eventuell bekommt man da Samples bei Ti? Wenn der Chip für mich taugt werde ich mal versuchen dort ein paar als Samples zu bestellen.

Stellt sich nun die Frage ob der ULN2803 geeignet ist für mein vorhaben. der kann wohl 500mA pro Kanal.
Meine Rechnung ergibt nun
16*3*80mA=3680mA...
oha....
Da drängt sich doch die Frage auf, ob ich das nicht besser diskret mit Mosfets aufbaue?
Mit denen habe ich allerdings keine Erfahrung. Welche kostengünstige Lösung würde sich anbieten?

So das war nun anstrengend, aber ich möchte ja zu einer möglichst guten und skalierbaren Lösung kommen. Ich zeichne kurz noch nen Schaltplan zu meinen überlegungen

Gruß Tim

Ls4
12.01.2010, 20:49
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

Besserwessi
12.01.2010, 20:51
Die HC595 haben zwar 35 mA als absolute maximum rating für die Ausgänge, aber 1. ist nicht garantiert das die selbst im Kurzschlußfall so viel Strom liefern. Bei 3.3 V versorgung wäre das schon eher die Ausnahme. Zweitens ist das noch ein Limit von 70-75 mA für den gesamten Chip. Das Limit sind damit ca. 8-9 mA pro Ausgang.

Für die LEDs sind auch 5 V gar nicht verkehrt:
die blaue LED wird 3-3,5 V brauchen, dann ca. 500 mV Verlust für den HC595 und gut 1 V für den ULN2003. Da ist dann nurnoch 0,5 V für den Widerstand übrig. Weniger geht also kaum. Bei nur einer LED Farbe und Treibern aus der gleichen Charge könnte man gar auf die IDEE kommen den Strom über die Spannung an den HC595 (ca. 4,5 V) einzustellen. geht hier aber nicht.

Bei superhellen LEDs kann es gut sein das es auch mit dem Strom von nur 8 mA geht, hängt aber von den Randbedingungen ab !. Es gibt zum Teil auch Schieberegister ähnlich dem HC595, die mehr Strom vertragen können (z.B. STP16CL596).
Bei mehr Strom für die Ebenen wären MOSFETs statt des ULN möglich. Bis etwa 5 A könnte man die wohl auch noch direkt von µC Pin aus ansteuern.

Wenn man extra ICs nimmt, die einem das PWM Signal bereitstellen, hat man das Problem das PWM Signal mit dem Umschalten der Ebenen zu syncronisieren. Da Wäre ein Chip mit externem Takt schon gar nicht verkehrt. Schwierig wird das vor allem wenn man mehr als einen Chip für die PWM Signale hat.

Eine Möglichkeit wäre eventuell auch die LEDs direkt von einem µC zu Treiben, der dann auch die PWM Signaler erzeugen könnte. Wegen dem 200 mA Limit pro Vcc Pin wird man damit aber auf vielleicht 16 LEDs (je 20 mA) pro Chip kommen. Für den 4x4x4 Würfel also schon 3 µCs (z.B. Mega48). Bei nur 16 Kanälen hat man schon etwas mehr Reserve für Software PWM.

Besserwessi
12.01.2010, 21:12
Der IRF630 geht nicht, weil kein Logic level. Außerdem braucht man keinen 200 V Typen. Richtig wäre ein Logoc Level N MOSFET für etwa 30 V und 10 A. Die meisten Typen sind in der Größe aber in SMD gehäusen zu kriegen, oft als 2 Stück im SO8. Mit etwas gefummel geht das noch auf Lochraster. Als Type im TO220 wüßte ich einen IRLZ24 - Denn sollte man noch gerade direkt treiben können.


Das Problem mit der Leistung am TLC... Treiber ist nicht ganz so groß. Man muß nicht rechnen Strom mal volle Spannung (5V) sondern nur Strom * Spannungsabfall. Da sollten nur rund 2 W rauskommen, ist aber immer noch viel für ein DIP gehäuse. Eventuell die Spannung etwas reduzieren, auf z.B. 4,5 V, wenn der Chip das mit macht.

Das Syncronisieren von PWM und Ebenenumschaltung sollte immerhin gehen mit dem TLC5940.

Ls4
12.01.2010, 21:41
Hallo Besserwessi,

das ist ja schonmal ein anhaltspunkt.
An die Lösung mit den Slavecontrollern habe ich auch schon gedacht. Das könnte die Sache schon deutlich vereinfachen.
Nach meinem Verständnis fällt dann auch das Multiplexing weg, da ich für jeden Ebene Spalte, oder Zeile ja einen eigenen µC habe.
Mein Verkabelungsaufwand wird dann allerdings aber auch viel größer, da ich ja dann sinnigerweise Spaltenweise ansteuere und so pro Spalte 4 Kathoden rausführen muss (pro Ebene eine)

Von meinem Verständnis her scheint die Lösung mit den TLCs bisher die beste zu sein. Laut Datenblatt dürfen die Teile die 2W auch.

Schön, dass ich mich da verrechnet habe :)

Die Spannung reduzieren kann man auch. dei TLCs benötigen keine 5V damit sie arbeiten.
Ich könnte aber auch für die 1:4 Multiplexing Methode einfach auf 40mA gehen und mal probieren ob das hinhaut.

Macht es Sinn die TLCs irgendwie passiv zu kühlen, oder ist das vergeudete Mühe?

Wie sieht es denn bei den FETs für die IRLU120N aus?
Die sind Logic Level 100V 10A und sind in einem Package, das für Lochraster brauchbar ist. Dazu auch noch sehr günstig mit 36Cent.
Würden die funktionieren? Was für einen Pulldown würde ich da benötigen?

Irgendwie 100% zufrieden bin ich noch nicht mit der Lösung.

Eines geistert mir noch im Kopf herum. Was passiert wenn ich mit den TLC5940 nicht direkt die Leds fahre, sondern wiederrum Logic Level Fets?
Dieses mal einen P typ und die Leds dahinter mit Vorwiderstand hänge?
Gibt einen furchtbaren Lötaufwand, aber wäre das was?

Vielleicht hat ja jemand noch ne tolle Idee?

Am elegantesten wäre sicher die Lösung mit dem µC pro Spalte. Das wäre auch super skalierbar.
Hat da jemand noch kreative Ideen dazu?
Man müsste dann Atmega88 oder Atmega8 nutzen um Arduino verwenden zu können. Der 48 unterstützt den Bootloader nicht

Viele Grüße,

Tim

Ls4
14.01.2010, 16:38
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

Besserwessi
14.01.2010, 17:51
Wenn die Verschaltung der LEDs so richtig ist, also mit gemeinsamer Anode, geht das so nicht. Dann müssen die µCs jeweils die Kathode gegen GND schalten und die FETs für die Ebenen müßten P_Typ sein, also gegen ca. +5 V schalten.

Die BC327 kann man so nicht direkt vom µC aus schalten, da müßten Widerstände dazu. Da man ja vom µC aus gegen GND schalten müßte, wären da entweder NPN Transostoren (z.B. BC338) als Emitterschaltung oder halt die ULN2003 möglich. PNP Transisoren als Emitterfolger würden auch gehen und spart die Basiswiderstände, dafür hat man aber etwas mehr Spannungsverlust.

Bis etwa 20 mA könnte man auch direkt vom µC aus Treiben, also ganz ohne Transistor.

Die Widerstände hängen vom nötigen Strom und den Treibern ab. Man wird auch je Farbe einen anderen Wert brauchen.

Die FETs IRLU120N wären eingschränkt nutzbar, wenn man N MOSFETs bräuchte, aber hier werden Wohl P-MOSFETs gebraucht. Da wird die Suche nochmal etwas schwieriger. Abgesehen vom Gehäuse wäre dann ein IRF7314 etwa richtig. Auf Lochraster müßte man halt ein paar Punkte Teilen (1 mal je FET).
1 K also Widerstand an der FETs ist schon ziehmlich klein, es geht aber.

Ls4
14.01.2010, 19:10
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

Besserwessi
14.01.2010, 19:56
Die Basiswiderstände können größer. Auch für 100 mA LED Strom sollte ein Basisstrom von 2 mA reichen. Also eher 2,2 K als Widerstände an der Basis.

Der IRLU120N hat wegen der hohen Spannungsfestigkeit einen relativ hohen On Widerstand. Wenn man aber nichts besseres findet geht der Typ noch - sind ja erstmal nur 4 davon. Der Pulldown Widerstand könnte auch ruhig 10 K oder 2,2 K sein, muß aber nicht.

Das Problem mit der großen Lötarbeit hat man allerdings, dazu noch die Kabel um das ganze zu verbinden. Die Basiswiderstände könnteman sparen wenn man NPN Transistoren nimmt, allerdings braucht man dann vermutlich Kabel, um die Verbindungen umzusortieren - man spart also nicht wirklich viel.

Weil man den AD Wandler beim Mega32 wohl nicht braucht, könnte man die Induktivität weglassen. Dafür sollten auch die Mega48 noch je 2 Kondensatoren bekommen.

Ls4
14.01.2010, 20:42
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

TomEdl
14.01.2010, 21:11
Hallo!

Ich empfinde das irgendwie als verschwenderisch, soviele µC zu benutzen, wo es doch viel elegantere Lösungen mit Schieberegistern gibt.
Vielleicht eine kleine Anregung für ein eventuelles Folgeprojekt?

Grüße
Thomas

Besserwessi
14.01.2010, 22:00
Der IRLU024Z ist als FET schon besser als der 100 V Typ. Wie schon vermutet sind die Schaltzeiten unkritisch. Die Kapazität sollte nicht zu groß sein, die rund 400 pF sind aber noch tragbar.


So schlecht ist die Idee mit mehreren µCs nicht. Immerhin kann man die extra Rechenleistung auch für mehr Auflösung beim Software PWM gebrauchen. Man könnte pro µC schon 16 Kanäle steuern - dann könnte man mit 3 µC auskommen. Für viel mehr reicht die Rechenenleistung auch in ASM kaum aus um da noch 1:4 gemultiplext (also 64 LEDs gesamt) mit Software-PWM zu versorgen. Schon dafür braucht man guten ASM Code.

Ls4
15.01.2010, 14:12
Hi Thomas,

Bei 4x4x4 funktioniert das anscheinend noch mit 1µC, aber ich habe zusätzlich noch den ENC28J60 zu befeueren. Da wird die Listung langsam einfach knapp.

Elegant wäre tatsächlich eine Lösung mit ICs, die PWM beherrschen, aber an die kommt man nicht so einfach. Zusätzlich sind sie auch noch teurer als Atmega48 die 1.50€ kosten.

Ich bin gern auch für andere Lösungen offen. Es ist ja an Hardware noch nichts da, außerdem Pollin Board.

Dann werden die IRLU024Z verwendet. Ich denke dann bleibt zu der Hardwarefrage bloß noch offen, welche LED Vorwiderstände ich benötige.

Berechnet habe ich mal folgendes. Ausgehend von 5V die geschaltet werden. (habe ich die wirklich, oder geht am FET und PNP Spannung verloren?)
1.5-3.3V für Grün
1.5-3.3V für Blau
1.5-2.1V für Rot

Also ging ich von 3.3V für Grün und Blau und 2.1V für Rot aus.
Als maximalen Strom für 4 Ebenen habe ich 80mA festgelegt. Als Maximalstrom für 5 Ebenen 100mA.

Für 4 Ebenen komme ich für Grün und Blau mit 24.9Ohm auf 68mA
und mit 43Ohm für Rot auf 68mA

Für 5 Ebenen komme ich für Grün und Blau mit 19.1Ohm auf 89mA und mit 33.2Ohm für rot auf 87mA.

Sind die Werte realistisch? Kann ich das so machen

Hat da jemand Erfahrungswerte?

Außerdem habe ich Programmiertechnisch ein paar Probleme.
Ich verwende QT als Framework und würde gerne QNetworking verwenden.
QT verwendet Sockets.
Als zuständige Klasse habe ich QTCPSocket identifiziert.
Damit kann man entweder einen Characterstream oder einen Bytestream senden. Allerdings nur an Clients, die sich vorher mit dem Server verbunden haben =>Socket

Nun suche ich einen Webserver der auf einem Atmega32/644p arbeitet, den ENC28J60 verwendet und sich irgendwie mit dem Server connecten kann.
Schön wäre auch noch wenn die Sache schlank wäre Ulrich Radigs Server ist ja mittlerweile richtig groß geworden.

Schön fände ich OpenMCP, allerdings habe ich da in der DOKU gesehen, dass auf dem Pollin Board kein I2C unterstützt wird. Warum das so sein soll ist mir nicht ganz klar. Außerdem gibt es für die Netzwerkfunktionen irgendwie keine ordentliche Doku.

Kennt sich da jemand aus?

Die Clients bekommen einen klassischen From the Scratch C Code

Gruß Tim

Besserwessi
15.01.2010, 15:08
Wieviel Strom man für die LEDs braucht, kann man fast nur probieren. Da sind die unterschiede zwischen den LED Qualitäten groß, und auch die Hintergrundhelligkeit kann stark variren.
Die extra BC327 braucht man ja erst ab etwa 20 mA. Mit den Transistoren würde also ein Strom zwischen etwa 30 mA und 60 mA Sinnvoll sein. Mehr Strom könnte schon zu viel für die LEDs sein, wenn man keine Kühlung hat.
Als Widerstand wären dass dann etwa 20 Ohm ... 40 Ohm für blau. Und 40--100 Ohm für rot.

Ls4
15.01.2010, 16:51
Jetzt kommt dann bloß noch die Netzteilauslegung auf mich zu.
Ich bin ja nicht der erste, der so einen Würfel baut.
Bei einem anderen Projekt habe ich gelesen, dass er beim testen der Widerstände gemerkt hat, dass sehr kleine nötig sind und die LEDs dann sehr empfindlich auf Spannungsschwankungen reagieren (Helligkeit). Deshalb hat er die Led Spannung angehoben auf 7.5V.

Ist das wirklich notwendig?
Wenn ja, welchen Regler kann ich da verwenden. Bei Pollin habe ich mal gesucht, aber nichts vernünftiges gefunden.
Kann ich die 7.5V dann einfach an den Kollektor der BC327 anschließen und diese Spannung mit dem µC schalten?

Ich habe auch mal nachgerechnet. Der 7805 packt die 1.6A die maximal auftreten können schon gar nicht mehr. die 2.5A bei 5x5x5 schon gar nicht.
Bei Pollin gibt es einen LM 1085 IT5,0. Der liefert 5V 5A und scheint genauso beschaltet zu werden wie der 7805er.
Ich könnte ja dann den 7805er verwenden um die µCs zu befeuern und den lm1085 für die Versorgung der Leds (Massen natürlich verbunden)

Viele Grüße,

Tim

Besserwessi
15.01.2010, 17:58
Eine höhere Spannung ist nicht so ganz einfach. Da würde man zusätzliche Widerstände brauchen. Ein bischen (5.4 V) würde gerade noch so gehen gehen, etwas weniger auch. Der Stromverbrauch der µCs ist ja eher gering (ca. je 15 mA) da lohnt eine extra Spannungsversorgung eher nicht. Das kann eigentlich nur Stören.

Mit N-MOSFET und PNP Transistor als Treiber verliert man nur recht wenig Spannung (ca. 0.1 bis 0.3 V). Eine blaue LED braucht etwa 3.3 V als echte Flußspannung, der Rest geht am internen Widerstand verloren der Anteil stört nicht wesentlich. Es sind damit auch bei 5 V Versorgung noch etwa 1,5 V für den Widerstand übrig. Da reicht eigentlich schon ganz gut für einen stabielen Strom. Für rot und grün sind die Flußspannungen noch etwas geringer die Spannung also noch weniger kritisch.

Ob man wirklich über 1 A braucht, da wäre ich mit noch nicht sicher. Die LEDs sollten ja recht effektiv sein. Das sollte man wirklich vorher mit ein paar LEDs probieren. Es könnte gut sein das auch 20 mA schon reichen.

Der LT1085 ist da schon OK. Ggf. wäre auch ein Schaltregler wie LM2576 oder LT1070 eine gute Wahl. Das hängt davon ab wo der Strom herkommt.

thewulf00
15.01.2010, 18:38
Also. Immer, wenn ich mit vielen LEDs arbeite, setze ich die Gesamtspannung für das Projekt auf 3V und kann mir somit alle Widerstände sparen. Vielleicht hilft Dir das. Bin SEHR gespannt auf den Würfel!

TomEdl
15.01.2010, 19:10
Also. Immer, wenn ich mit vielen LEDs arbeite, setze ich die Gesamtspannung für das Projekt auf 3V und kann mir somit alle Widerstände sparen. Vielleicht hilft Dir das. Bin SEHR gespannt auf den Würfel!
Aber die LED-Vorwiderstände brauchst du ja dennoch - ob da wirklich so viel eingespart wird?

Grüße
Thomas

Besserwessi
15.01.2010, 19:21
Wenn man die Spannung reduziert und genau einstellt, könnte man vielleicht bei den Blauen LEDs die Vorwiderstände sparen. Für die anderen Farben geht das dann aber nicht.

Realistischer wäre es da schon Transistoren genau auszusuchen nach gleicher Verstärkung, und dann den Strom über die Basiswiderstände einzustellen. Besonders gut ist das aber auch nicht.

TomEdl
15.01.2010, 19:34
Wenn man die Spannung reduziert und genau einstellt, könnte man vielleicht bei den Blauen LEDs die Vorwiderstände sparen. Für die anderen Farben geht das dann aber nicht.

Allerdings müsste die Spannung wirklich genau eingestellt sein (Referenzspannungsquelle notwendig). Wesentlich einfacher wäre es, eine Konstantstromquelle zu benutzen.



Realistischer wäre es da schon Transistoren genau auszusuchen nach gleicher Verstärkung, und dann den Strom über die Basiswiderstände einzustellen. Besonders gut ist das aber auch nicht.
Und wenn dann die Umgebungstemperatur steigt, steigt auch der Strom durch die LEDs stark an.

Also ich bin kein Freund solcher Lösungen.

Grüße
Thomas

thewulf00
15.01.2010, 19:45
TomEdl: Wenn man auf die richtige Spannung geht, braucht man keine Vorwiderstände mehr, das ist ja der Gag.

TomEdl
15.01.2010, 19:51
TomEdl: Wenn man auf die richtige Spannung geht, braucht man keine Vorwiderstände mehr, das ist ja der Gag.
Und wie hältst du die Spannung? Referenzdioden? 100mV mehr und die LEDs brennen ab.

Das ist die gleiche Unart wie LEDs mit einem gemeinsamen Vorwiderstand parallel zu schalten.

Grüße
Thomas

Besserwessi
15.01.2010, 21:14
Der Betreib mit konstanter Spannung geht bei einigen blauen/weissen LEDs. Die haben gar nicht so selten einen relativ hohen Widerstandsanteil. Gerade bei gemultiplextem Betrieb, dann da der Widerstand schon reichen, dass man mit etwa 100-200 mV Genauigkeit für die Spannung auskommt. Das hift einem hier aber auch nur für 1/3 der LEDs. Dafür würde ich das Risiko nicht eingehen. Wenn man die LEDs direkt vom µC treiben will, könnte das mit der Spannung gehen, da begrenzt dann der Ausgang den Strom.

Die Einstellung des Stromes über den Verstärkungsfaktor von Transistoren ist etwas Temperaturabhängig, aber nicht so sehr. In den meisten Datenblättern findet sich nicht viel dazu, die Simulation mit Spice gibt auch recht unterschiedlicher Werte, aber nichts dramatisches (weniger als Faktor 2 von 0 C bis 100 C).

TomEdl
15.01.2010, 22:04
Ehrlich gesagt, mir sagt diese Methode trotzdem irgendwie nicht zu. Aber das ist nur meine subjektive Meinung. ;)

Grüße
Thomas

thewulf00
16.01.2010, 12:41
Die LEDs brennen ab *gg*.
Ja genau, deshalb läuft bei mir ja auch alles seit Jahren auf 3V. :) *lach*

Immer diese Theoretiker...

Ls4
16.01.2010, 12:43
Hi,

dann bleibt das so.
Scheint ja zu stimmen alles.
Ich probiere das einfach mal. wenns nicht klappt kann mans ja immer noch ändern. Ich baus eh erstmal auf Lochraster auf.
Als Widerstände werd ich erstmal 100Ohm für rot und 39Ohm für die anderen verwenden.
Kann ich da noch 1/4W Widerstände nehmen? Die laufen ja mit 80mA pro led am Limit. Sollte aber denk ich gehen, auch bei 100mA und 5 Leds?

Der Plan ist folgender.

1.) Webserver auf Atmega flashen und im Webserver das Multiplexing erstmal programmieren.

2.)Testweise 4 Leds an den Master anschließen und alle Ausgänge auf High setzen, so dass die PNPs durchschalten.
Damit dann das Multiplexing testen und den Strom messen.

3.)Wenn das soweit funktioniert (hoffentlich ohne abgebrannte Leds) das I2C Protokoll implementieren und die Slavesoftware schreiben.

4.)Im autonomen Betrieb ein Testprogramm laufen lassen und den Strom messen, wenn alle 64/125Leds weiß leuchten (größter Strom dürfte fließen).

5.) Das Netzwerkprotokoll implementieren und die Verbindung zum Pc herstellen.

Fragt sich nun nur noch welchen Webserver ich verwende.

Wenn mein STrom höher ist als 1A am Ende und ich merke der 7805 kommt an seine Grenzen kann ich ihn bei unter 2A immer noch gegen einen 78S05 austauschen und wenns noch mehr sein sollte nehme ich einen anderen Regler und lege das Netzteil des Pollin Boards lahm

Viele Grüße,

Tim

thewulf00
16.01.2010, 13:18
Im Zweifelsfall verdoppel den Widerstandswert und schalte zwei Widerstände parallel, dann hast Du durch Teilung wieder den korrekten Widerstandswert, aber dafür die doppelte Belastbarkeit.

Ich versteh immernoch nicht, wozu Du das Pollin-Board brauchst. Der Arduino reicht doch meines Erachtens?

TomEdl
16.01.2010, 15:05
Die LEDs brennen ab *gg*.
Ja genau, deshalb läuft bei mir ja auch alles seit Jahren auf 3V. :) *lach*

Immer diese Theoretiker...
Immer diese Hobbybastler...

thewulf00
16.01.2010, 15:46
Also bei mir funktioniert es TomEdl. Und falls Du lesen kannst, würdest Du wissen, dass 3V 100mv weniger sind, als 3,1V, was der LED-Spannung entspricht. Also selbst bei Deiner befürchteten Abweichung, die nicht zustande kommt, würde nix kaputt gehen.

Ich habe nie gesagt, dass ich Hobbybastler bin...

TomEdl
16.01.2010, 15:52
Hallo!

Ich hab ja nicht gesagt, dass es nicht funktionieren sollte. Und ja, ich denke ich kann lesen.

Wer garantiert dir, dass die Flusspannung wirklich 3,1V beträgt?
Wer garantiert dir, dass die Versorgung auch wirklich genau 3V einhält?

Grüße
Thomas

thewulf00
16.01.2010, 16:01
1) Steht im Datenblatt. 2) Weil ich die Versorgung gebaut habe. :)

Ich denke, das weicht zu weit ab. Wir kommen auf keinen grünen Zweig, also bringts auch nix, den Thread zu "verseuchen".

TomEdl
16.01.2010, 16:05
1) Steht im Datenblatt.
Erster Fehler: nur weil es im Datenblatt steht, sagt keiner, das dies auch wirklich so sein sollte. Soviel zum Thema Theoretiker.

Oh wie sehr bewundere ich dich - du, der die sagenhafte Versorgung gebaut hast. :-s
Manchmal kann man es mit Selbstbewusstsein auch übertreiben...

Grüße
Thomas

PS: Du hast recht, bringt nix diesen Thread zu verseuchen. Das war mein letztes Wort zu diesem Thema.

Ls4
16.01.2010, 16:18
Ich versteh immernoch nicht, wozu Du das Pollin-Board brauchst. Der Arduino reicht doch meines Erachtens?

Ich hab leider keinen Arduino.
Der Master auf meinem Schaltplan ist der µC auf dem Pollin Board. da ist auch der ENC28J60 drauf.
Einfacher wäre es ein Duemilanove zu kaufen und darauf das Ethernetshield zu installieren. Ist aber erstens größer und zweitens auch mehr als doppelt so teuer. Deshalb das Pollin Board. Arduino kann man auch für den 644p verwenden. Da nennt sich die Sache dann Sanguino. Ich habe das probiert und es läuft auf dem Pollinboard ohne Probleme. Wenn ich ne Library für den ENC28J60 finde, die sich irgendwie mit einem Server übers Ethernet connecten kann würde ich diese Variante bevorzugen.

Und Jungs, nicht streiten. Ihr wisst doch, es gibt mehrere Wege nach Rom.
Wie man seine Leds anschließt ist doch eigendlich vollkommen egal, Hauptsache es funktioniert! Am Besten ohne stinkende Leds. Die riechen nämlich furchtbar beim abbrennen :)

Ich denke die gefundene Lösung ist soweit gar nicht schlecht.
Ich werde die Tage mal meine Lochrasterplatine zeichnen und hier dann einstellen. ich werds so machen, dass ich notfalls 2 Widerstände nebeneinander pro Led installieren kann, wenn einer nicht reichen sollte. ich denke das werde ich daran merken, dass er warm wird. Vermute aber durch das Multiplexing wirds gar kein Problem geben. er bekommt ja die meiste Zeit überhaupt keinen Strom ab.

Wenns dann mal funktioniert tausche ich das Pollinboard vielleicht aus und löte ENC28J60 und den Mega32/644 mit auf die Lochrasterplatine.
Spätestens wenn man ein schickes Gehäuse bauen will funktioniert das mit dem Pollinboard nämlich nicht mehr so einfach

Viele Grüße,

Tim

Besserwessi
16.01.2010, 16:51
Die Widerstände werden schon die ganze Zeit benutzt, nur halt abwechselnd für verschiedene LEDs. Im Prinzip sollten aber 1/4 W gerade noch reichen: bei 100 mA darf man 2,5 V an spannungsabfall haben. Mehr wird man auch bei den Roten LEDs nicht haben, auch wenn man nahe ran kommt.

In der Regel werden ja nicht viele LEDs für längere Zeit an sein.

das Pollin Board für die Ethernetanbindung ist gar nicht so schlecht. Da hat man ja auch schon den Stecker und Trafo mit drauf.

Ls4
16.01.2010, 19:43
Die Widerstände werden schon die ganze Zeit benutzt, nur halt abwechselnd für verschiedene LEDs. Im Prinzip sollten aber 1/4 W gerade noch reichen: bei 100 mA darf man 2,5 V an spannungsabfall haben. Mehr wird man auch bei den Roten LEDs nicht haben, auch wenn man nahe ran kommt.

In der Regel werden ja nicht viele LEDs für längere Zeit an sein.

Ja, aber auch nur wenn alle Leds in einer Säule gleichzeitig leuchten

Jo mal sehen. Worst Case ist alle auf weiß. Aber das muss er schon auch durchhalten. Ich werde Messungen machen und probiere es dann einfach aus. Viel anderes wird mir ja wohl auch nicht übrigbleiben.

Gruß Tim

Besserwessi
16.01.2010, 20:30
Ich würde vermuten man kommt gut mit weniger als 100 mA für die LEDs auch. Die blauen LEDs sind da ohnehin etwas empfindlich.

Nach dem Datenbaltt sind 100 mA nur für extrem kurze Zeit erlaubt. Mit wird sich also wohl ohnehin auf etwa 50 mA als Maximalstrom beschränken müssen. Auch damit wird das noch recht hell. Damit haben die 1/4 W Widerstände dann kein Hitzeproblem.

Ls4
17.01.2010, 12:20
Also dann fang ich wohl mal mit 80 Ohm für rot und 200 Ohm für Grün und Blau an.

Viele Grüße,

Tim

Ls4
23.01.2010, 12:41
Hi Leute, also die LEDs sind jetzt da.
Die Widerstandswerte scheinen überhaupt nicht zu stimmen, oder ich habe irgendetwas grob falsch gemacht.

Ich hatte noch C1815 NPN Transistoren da.
Diese habe ich dann mit 1.5k Ohm als Basis Widerstand an den Atmega angeschlossen.
Den Atmega auf 1:6 Multiplexing programmiert, den Emitter an GND und den Kollektor an die gemeinsame Masse der LED.
Dann mit den Winderständen angefangen zu spielen.

Für mein Verständnis brauche ich für eine identische Helligkeit der LEDs einen weißen Farbton, wenn ich alle Farben angeschlossen habe. Das habe ich dann probiert.
Nur irgendwas kann da absolut nicht stimmen. Für Rot war ich bei circa 60 Ohm, Blau hatte 20 Ohm und grün hatte ich mittlerweile sogar komplett ohne Widerstand angeschlossen. Dennoch fehlt mir ein großer Grünanteil in der Farbe. Blau+Rot gibt ein schönes Lila. Da scheint der Mischanteil zu stimmen. Rot+ Grün gibt Orange (hier gehts schon los. Sollte doch gelb sein). Und alles zusammen gibt ein sehr sehr helles Pink. Vom weiß ist das aber alles noch stark entfernt.

Die Helligkeit ansich scheint bei den LEDs sehr gut zu sein. Sie blenden nicht, sind aber auch keine funzeln.

Hat jemand eine Ahnung wo mein Fehler ist?
Eigendlich sollte bei 5V ohne Vorwiderstand meine LED doch gnadenlos durchbrennen?
Habe ich eventuell den Basiswiderstand zu groß gewählt, so dass mein maximaler Strom zu stark begrenzt wird?

Viele Grüße,

Tim

Besserwessi
23.01.2010, 13:09
Wenn der transistor ein 2SC1815 ist, sollte er eine Verstäkrung von rund 100, oder eher mehr haben. Mit 1,5 K an der Basis wären das rechnerisch bis rund 300 mA, also reichlich für LEDs. Bei 100 mA sollte ohnehin Schluß sein ! Am Basiswiderstand kann es also kaum liegen.

Gerade für einen ersten Test sollte man eher mit wenig Strom (<20 mA) anfangen. Wenn das Datenblatt stimmt sollten die LEDs damit schon ziehmlich hell sein ! Das wäre aber nicht das erste mal das bei Teilen von Ebay Datenblatt und Teile nicht zusammenpassen.

Das die grüne LED etwas dunkel ist, ist in gewissen Grenzen normal. Grün hat halt den geringsten Wirkungsgrad und effektive grüne LEDs sind relativ teuer. Man wird also erstmal die Grüne LED mit passendem Strom (50 mA, bzw. erstmal 20 mA) betreiben, und dann den Strom der beiden anderen LEDs dazu passend wählen, auch wenn das dann deutlich weniger wird. Für den erseten abgleich würde ich auch eher ohne Multiplexing arbeiten und den Strom messen.

Die grüne LED ganz ohne Vorwiderstand ist nicht gut - da könnte die LED schon gelitten haben.

Ls4
23.01.2010, 14:17
Die Led wird eh nur meine Testled. die Füßchen stehen schon in alle Richtungen und ich hab sie auch geschmiergelt =>Diffus, damit ich die Farben besser sehe. Dann werde die LEDs also erstmal mit größeren Widerständen an 5V testen und den Strom auf 50mA einstellen.

Kann ich dann fürs 1:6 Multiplexing die Widerstandswerte einfach durch 6 teilen, oder muss ich da anders vorgehen?

Viele Grüße,

Tim

Besserwessi
23.01.2010, 15:58
Das mit den Widerständen auf 1/6 für den Umstieg von Dauerbetrieb auf 1:6 Multiplexing, ist eine erste Näherung. Die LED selber und die Treiber haben auch noch einen differentiellen Widerstand, den man da auch noch einrechnen könnte. Also eher die kleineren Widerstände noch mehr verkleinern. Den Feinabgleich (ca. +-20%) kann man ja ohnehin in Software machen.

Ls4
23.01.2010, 17:03
1/6 war ja eh falsch. ich werde in 5x5x5 bauen (LEDS waren so günstig)
und brauche dann 1/5 Multiplexing. Dann lote ich das mal aus, was ich wirklich benötige an Widerständen und teile den Wert dann durch 5. Den Rest mach ich in Software. Leiber etwas weniger Strom und längere Lebensdauer, als übertrieben und gleich Schrott. Die mittlerste Led im Wüfrle zu tauschen ist sicher kein Spaß ;)

Gruß Tim

Ls4
23.01.2010, 19:07
so. jetzt hab ich das mal ausgemessen.
Als Richtwert hatte ich 15mA, als 75mA im Multiplexing
Bei Blau bin ich auf 120Ohm gekommen
Grün hat 100Ohm und Rot
hat 180Ohm.
Bei Grün hatte ich dann 15.4mA
Blau 15mA
und Rot 15.3mA
Das sollte ja soweit denke ich ok sein. Den Rest kann ich ja dann in Software machen.
Dividiert durch 5 komme ich auf
24Ohm für Blau
20Ohm für Gründ und
36Ohm für Rot.

Das ist schön. Die Werte gibts alle beim Reichelt.

Muss ich jetzt auch noch alle LEDs gleichzeitig anschließen um zu schauen, ob das auch wirklich ein Weiß gibt?
Oder hab ich bei gleichen Strömen auch gleiche Farbanteile, so dass ich mir keine Gedanken mehr darüber machen muss?

Dafür habe ich nämlich mit Sicherheit nicht genug Widerstände da.

Viele Grüße,

Tim

Ls4
25.01.2010, 16:28
Also,

mittlerweile habe ich meine Tests abgeschlossen.
Die Wiederstände stimmen. Es gibt zusammen ein zugegebenermaßen etwas bäuliches weiß und das gelb ist auch ein wenig Orange. aber das ist soweit ok. Denke das kann man in Software dann justieren.

Die Anoden versorge ich über Pfostenbuchsen und Flachbandkabel. die Kathoden, über die ja mehr Strom fließt versorge ich mit Platinenverbindern.

Die Stromversorgung war mir auch ein wenig ein Dorn im Auge. Hier habe ich mich jetzt für den LM2576 entschieden. Das ist etwas teurer, aber dafür bin ich mit 3A auf der sicheren Seite und brauche habe noch deutlich weniger Verlustleistung. Als Induktivität habe ich hier eine High Current Spule mit 2.5A Belastbarkeit gewählt. Außerdem müssen noch relativ große Elkos dran.

Die µCs und der ENC28J60 werden nun von dem 7805 auf dem Pollin Board gespeißt. Diese bekommt einen kleinen passivkühlkörper. die Spannung für die Transistoren kommt dann vom LM2576, welcher auch einen Passivkühlkörper bekommen wird.
Der 7805 bekommt noch eine 1N4148 Zwischen in und out spendiert, da ich ja jetzt doch einiges an Kabelwegen und angeschlossenen Gerätschaften habe. Da weiß ich nicht was passiert und wie die Kapazitäten sind. Ich will ja nichts riskieren

Soweit so gut. Ich bin mit der technischen Auslegung zufrieden.
Hoffe das Funktioniert am Ende auch wie gewünscht.

Einziges Verbleibendes Problem ist der Silberdraht für die LEDs. Dieser soll möglischt filigran sein, damit man ihn nicht so sehr sieht, dabei aber natürlich das ganze ordentlich halten.
Teuer ist der Spaß auch noch je dicker er wird.

Gefunden habe ich 0.6, 0.8 und 1mm Stärke.

Was würdet ihr hier wählen?
Da ich relativ viele Verstrebungen habe dachte ich an 0.6mm, aber hält das wirklich?

Als Netzteil dürfte ich nachher bei 7-8V denke ich ganz ordentlich liegen, oder?

wenn das geklärt ist bin ich denk ich soweit, dass ich die Versandabteilung von Reichelt bemühen kann..

Viele Grüße,

Tim

Besserwessi
25.01.2010, 20:46
Beim LM2576 muß man bei den ELKOs ein wenig nach ESR und Strombelastbarkeit schauen. Mit Multiplexing wird etwas mehr Kapazität aber auch nicht schlecht sein. Eine 2,5 A Induktivität reicht bis etwa 2 A Ausgangsstrom, denn die Induktivität muß nach dem Spitzenstrom bemessen sein.

Als Draht sollte der 0,6 mm Draht schon reichen. Die freie Länge ist ja nur der Abstand zwischen den LEDs.

Ls4
25.01.2010, 23:11
hm nicht so einfach mit den Schaltreglern.
Ich hab mich jetzt mal durch das Datenblatt gewühlt.
ich habe keine Ahnung wieviel Strom ich am Schluß tatsächlich benötige.
Rein rechnerisch komme ich auf 75mA pro LED. Das ganze dann für jede Farbe macht 225mA. und das ganze dann für 25 Leds die maximal gleichzeitig an sein können mact schon über 5A. Der LM schafft das wohl soweit ich das aus anderen Foren entnehmen konnte. Nen großen Kühlkörper hab ich auch da und mach ich drauf. Deshalb sollte das alles doch schon ordentlich groß ausgelegt sein denke ich.
Ich habe noch gelesen parallel zu jedem Elko sollte noch ein Abblockkondensator sein. am besten 2 in Reihe, falls der mal durchbrennt und leitend wird. Ne Sicherung mach ich bei den Strömen besser auch vor die ganze Schaltung. Als Abblocker habe ich normale 100n Kerkos gewählt (50V).
Als Kondensatoren. 2 in Reihe macht 200n. Sollte passen.
Die Elkos sind diese
Bei den Elkos ist mir nich ganz klar nach welche Strombelastbarkeit ich da schauen muss. ich finde den Wert Ripple Current.
Als Eingangskondensator habe ich 470µF 35V Low ESR und 1220mA Ripple
Als Ausgangskondensator habe ich 1000µF 35V Low ESR und 1945mA Ripple.
Schottky is ne MUR410
Leider ist die 5A 100µH Spule beim Reichelt grade nicht lieferbar. Das Datenblatt habe ich an der Stelle mit der Spule nicht so ganz verstanden.
Meine aber die Diagramme besagen, dass ich bei maximal 12V Eingangsspannung 68µH benutzen kann. Ich habe dazu eine 64µH Funkentstördrossel in Ringkernausführung bis 5A gefunden. Kann ich die nehmen?

Bei dem Netzteil ist mir immer noch ein wenig schlecht. Kann ich auch ein externes (Schalt)netzteil mit 5V nehmen und ohne Regler an die Scahltung anschließen. Dann wohl am besten ein stabilisiertes?

Viele Grüße,

Tim

TomEdl
26.01.2010, 10:48
Ich habe noch gelesen parallel zu jedem Elko sollte noch ein Abblockkondensator sein. am besten 2 in Reihe, falls der mal durchbrennt und leitend wird.
Was sollte das denn für einen Sinn haben? Du halbierst die Kapazität und wenn einer durchbrennt, dann wird es der andere auch gleichzeitig oder kurz darauf tun. In dem Fall hast du dann nämlich eindeutig falsch dimensioniert.

Grüße
Thomas

Ls4
26.01.2010, 11:29
Ich dachte um eventuell bei Peaks eine Sicherheit zu haben, aber du hast Recht. Es bringt überhaupt nichts, denn wenn einer durchbrennt bekomme ich das ja überhaupt nicht mit. Der zweite ist dann auch wieder allein unterwegs. Und dass beide gleichzeitig durchbrennen ist auch sehr wahrscheinlich.

Ich hab noch mal bei Reichelt geschaut. Da gibt es auch komplett fertige Schaltnetzteile für 230V von Meanwell. Sind relativ klein und kosten für 5A 12 Euro und für 8A 16 Euro.
Stimmt meine Rechnung mit den 5.625A?
wenn ich dann mal noch mal nen A für Verlust abziehe komme ich auf 6.625A. Dann sollte doch das 8A Netzteil gut funktionieren. Dann muss ich nicht rummachen mit irgendwelche Schaltreglern und speziellen Bauteilen. und nen Steckernetzteil würde ich auch noch benötigen. Das fällt mit den Meanwell Geräten weg. Ins Gehäuse würde dann einfach ne Kaltgerätebuchse kommen, oder ich baue das Netzteil in ein externes Gehäuse und leite es anders zu

Gruß Tim

Besserwessi
26.01.2010, 16:29
Die Rechnung mit maximal 5,6 A stimmt so schon. Das ist schon ganz schön viel. Mit 75 mA Peak Strom für die LEDs ist man aber auch schon ziehmlich dicht am Maximum. Vermutlich würde man auch mit weniger auskommen. Bei den blauen LEDs kann man schon in den Bereich kommen wo die Helligkeit langsamer als proportionla mit dem Strom zunimmt.

Ein fertiges Netzteil ist keine schlechte Idee. Nur ein Schaltregler ist ja auch nur eine halbe Lösung und wie gesagt auch nicht ganz einfach.

Ls4
26.01.2010, 16:53
Also,

dann wirds genau so gemacht. Einerseits habe ich dann auf der Versorgungstechnischen Seite mehr Sicherheit (da kenn ich mich überhaupt nicht aus, wie man gemerkt hat) und andererseits ist das nichtmal teurer und sauberer, da ich nicht mehrere Regler in Reihe habe, bei denen jeds Mal ein Verlust entsteht. Mal sehen. vielleicht habe ich irgendwoe sogar noch ein altes PC Netzteil liegen, das ordentliche Stromstärken auf de 5V Schiene liefert. das könnte man ja genauso gut nehmen.

75mA ist sehr viel, das stimmt. Habe aber bei meinen Tests bemerkt, dass ich mit mehr Helligkeit auch einen besseren Mischungseffekt bekomme. Bei mehr Stromstärke wird mein weiß definitiv besser.
Ich bau das nun so. Dimmen kann ich das ganze am Schluß ja immernoch.

Mittlerweile habe ich mir auch mal zur Erstellung des Gitters Gedanken gemacht. Bei 1 Farbigen Cubes ist das einfacher. Da kann man Nuten für die Leitungen fräsen und Löcher für die Leds. Dann kann man immer eine Spalte nach der anderen aufbauen.

Bei 3 Farbigen hat man etwas Malheur mit den Anschlußpins, die man irgendwie ja unterkriegen muss.

Auf jeden Fall brauche ich zu allererst eine Schablone zum Füßchen biegen. Da nehme ich einen Holzklotz. Bohre ein 5mm Loch hinein. Dann kann ich mir auf den Klotz Orientierung der Led sowie spätere Lage der Füßchen anzeichen und so ausreichend präzise 125 gleich gebogene Leds hinbekommen.

Nun ist die Frage ob ich den Würfel eher Ebenen oder Spaltenweise aufbaue..
Ebenenweise hätte den Vorteil, dass ich mit beim Kathodenlöten mit den Anoden nicht in den weg komme.

Spaltenweise hätte den Vorteil, dass ich nachher nur noch 8 Layer zusammen löten muss.

Ich denke fast Spaltenweise ist die bessere Lösung.

Ich werde mal eine Schablone bauen und die dann hier einstellen

Gruß Tim

Besserwessi
26.01.2010, 16:59
Ein 5 x 5 x 5 Kubus mit RGB ist schon ganz schön groß. Man sollte sich überlegen ob man vorher vielleicht mit einer 3x3x3 Version oder einer 5x5 Ebene übt. Die kleine Version kann man ja später als Teil der großen nutzen, wenn man keinen Fehler beim Biegen oder verlöten feststellt.
Wenn dann was bei der Software fasch läuft sind auch nicht gleich so viele LEDs hinüber.

kellerkind
26.01.2010, 17:46
Schau mal auf ledstyles.de , da gibts schon einige!
Hier findest Du eine Menge Lösungsansätze.

TomEdl
26.01.2010, 18:18
Also,

dann wirds genau so gemacht. Einerseits habe ich dann auf der Versorgungstechnischen Seite mehr Sicherheit (da kenn ich mich überhaupt nicht aus, wie man gemerkt hat) und andererseits ist das nichtmal teurer und sauberer, da ich nicht mehrere Regler in Reihe habe, bei denen jeds Mal ein Verlust entsteht. Mal sehen. vielleicht habe ich irgendwoe sogar noch ein altes PC Netzteil liegen, das ordentliche Stromstärken auf de 5V Schiene liefert. das könnte man ja genauso gut nehmen.

Bei dieser Sache würd ich ein bisschen aufpassen. Erstens benötigen viele PC-Netzteile eine gewisse Grundlast an den anderen Ausgängen, um überhaupt stabile 5V erzeugen zu können. Zweitens ist der Ausgang nicht gerade Strombegrenzt. Wenn du da während dem Experimentieren einen Kurzschluss produzierst, können Leiterbahnen verdampfen und Bauteile regelrecht explodieren. Das birgt ein gewisses Sicherheitsrisiko.

Grüße
Thomas

Ls4
26.01.2010, 20:39
Hi nochmal,

ja ich werd auf jeden Fall immer 5x5 Leds zusammenlöten und das Gebilde testen. Die Software werd ich auch an weniger Leds testen bevor ich sie auf den Kubus loslasse.
PC-Netzteil ist abgesehen von den genannten Gründen auch ne Nummer zu groß und meistens haben die Teile nen Lüfter. Ich werde die 40W Version des Meanwell Netzteiles nehmen. Den 7805 auf dem Pollinboard löte ich dann einfach aus und mach ne Kabelbrücke dran um den LM317 für den ENC zu versorgen. ich probier das einfach mal aus. passieren kann ja nicht viel

Gruß Tim

TomEdl
26.01.2010, 22:14
Hallo!

Ich verstehe nicht ganz, wozu der ganze Aufwand mit Kabelbrücken, Netzteil kaufen und so weiter.

Das wäre doch eine wunderschöne Gelegenheit, ein leistungsstarkes 5V-Netzteil aufzubauen. Zum Beispiel der LM309K eignet sich hervorragend als Längsregler und bringt einiges an Power mit.

Grüße
Thomas

Ls4
26.01.2010, 23:21
Hi Thomas,

der ganze Aufwand weil ich mittlerweile soviel Arbeit in diese Projekt gesteckt habe. Die Software ist so umfangreich geworden und dabei habe ich noch soviele Ideen. Daran arbeite ich auch schon starke 4 Monate.
Der Würfel soll jetzt antrülich auch entsprechend toll werden.
Mit dem Netzteilspaß kenne ich mich überhaupt nicht aus. Deshalb habe ich mir überlegt welche Vorteile es bringen würde ein fertiges zu kaufen.

Wenn ich selber baue muss ich entweder ein 230V Netzteil kaufen, an dass ich wiederrum das 5V Netzteil anschließe, an das ich wiederum den LM317 anschließe. Überall geht was verloren und sauber ist auch was anderes.

Die andere Lösung wäre selbst mit 230V zu hantieren und den Spaß komplett selber aufzubauen. Dann kann ich auch ne getrennte 3.3V Schiene für den ENC28J60 aufbauen. Aber wie gesagt ich habe davon keine Ahnung und möchte mich aus Sicherheitsgründen nicht mit 230V auseinandersetzen. Deshalb ist das fertige Netzteil ein Kompromiss. es liefert 8A 5V aus 230V. Daran kann ich alles inklussive dem LM317 für den ENC anschließen und es tut. Den 7805 muss ich wenn ich so mal drüber nachdenke nicht mal auslöten, da ich ja das Netzwerkboard über ein Flachbandkabel von meiner Lochrasterplatine aus versorge. Dem LM7805 sollte das ja denke ich nichts ausmachen.
Auf Dauer baue ich vieleicht dann auch das was momentan auf dem Pollinboard ist auf Lochraster auf. Fertige Lösungen, die funktionieren helfen mir aber schon mal Fehler auszuschließen.

Wenn sie wie im Falle des Netzteiles oder Pollinboards auch noch Geld sparen im Vergleich zu selbstbaulösungen ist das doch noch besser :)

Die Bestellung ist raus. Bald gehts dann mit der Hardware los

Viele Grüße,

Tim

TomEdl
27.01.2010, 15:26
Hallo!

Wie du meinst. Ich würde trotzdem eher zu einem kleinen Eigenbau-Netzteil tendieren: Trafo->Gleichrichter->Siebung->Spannungsregler.

Grüße
Thomas

Ls4
27.01.2010, 16:02
Hi Tom,

ich kann das gut nachvollziehen und würde das selber auch lieber so machen, aber dafür reichen meine Fähigkeiten in diesem Fachgebiet nicht aus. Mit Niedrigspannungen trau ich mir das noch zu, aber hohe Spannungen sind was für Profis bzw. Fortgeschrittene.

Ich habe mir heute Gedanken zur Software PWM gemacht und bin auf mehrere Ansätze gekommen.

Um ordentliche Farbwechsel zu bekommen brauche ich mindestens 7 Bit. besser 8 Bit. Ich habe 15 Kanäle, das ist schon nicht mehr so ganz einfach, wenn ich das richtig verstanden habe. zusätzlich habe ich noch einen TWI Interrupt, der verarbeitet werden muss. Und schließlich noch mein Externer Interrupt zur Zeilenumschaltung.

D.h. ich muss da schon ganz schön optimieren.

4 varianten sind mir eingefallen

1.) Inline Assembler in der ISR für den PWM Timer
2.) externe Assemblerdatei einbinden und auch die Interrupts wenn möglich dort auslösen (dürfte das performanteste sein)
3.) Das ganze in C aufbauen und sehr auf Optimierung achten. Es gibt da wohl Lösungen die hohe Geschwindigkeiten in C ermöglichen, wenn man die Kanäle geschickt sortiert und zusammenfast. Da müsste ich mir aber nochmal Gedanken zu machen. Das wäre meine präferierte Lösung
4.) Ich weiß nicht ob das mit dem Timing funktioniert, aber ich könnte ja die 6 Hardware PWM Kanäle verwenden, dann bräuchte ich nur noch 9 Software PWM Kanäle.


Viele Grüße,

Tim

Brantiko
01.02.2010, 16:16
http://www.das-labor.org/wiki/Farb_Borg_3d Kennst du das Ding schon?

Ls4
01.02.2010, 19:41
Ja, den kenne ich schon. Bin mir nur unschlüssig ob ich die Leds auch so künstlich mattieren soll.
Finde es eigendlich in Klar schöner und der Effekt gefällt mir auch besser, allerdings habe ich in echt noch nie einen Würfel gesehen.

Ich hab heute mal weitergemacht.
Die Bauteile sind jetzt alle da. Ich hab die Teile mal grob auf die Platine gesteckt um ein Layout auszuarbeiten und eine Schablone fürs Löten habe ich ebenfalls gebaut. Der 0.6mm Draht ist auf jeden Fall mehr als ausreichend, allerdings ein wenig störrisch. Soll heißen. Der hat ein wenig Eigenleben, aber das bekomme ich schon hin. Die Schablone bekommt noch einen Nagel am Anfang und Ende jeder Zeile. Dann kann ich da schön den Silberdraht drum herum spannen während ich die Leds anlöte.
Zur Verbindung der Lagen ist mir noch nicht wirklich etwas eingefallen. Einzige idee ist Papp Würfel zu bauen, die ich an Ellen Eckpunkten auf den Silberdraht auflege um sie als Abstandshalter zu nutzen. Damit die Sache grad wird kann ich ja einen Anschlag für die Ebenen bauen.
Dann die einzelnen lagen immer mit kurzen Drahtstücken verbinden. Lange Drähte am Stück zum Verbinden wird wohl nichts werden. Damit bekomme ich das gute Stück niemals gerade.

Viele Grüße,

Tim

Besserwessi
01.02.2010, 20:22
Für so viele Kanäle sollte man das software PWM schon in ASM schreiben. Ob man jetzt Inline ASM oder als extra Datei ist relativ egal. Als dritte alternative wäre noch das gesamte Programm in ASM zu schreiben.
Da man wohl die komplette ISR in ASM hat, ist die extra Datei vermutlich einfacher, Inline ASM bei GCC ist zwar sehr mächtig, aber auch etwas unübersichtlich.

Gerade die Software PWM routine geht in ASM sehr effektiv - auch mit guter optimierung wird ein C Compiler da noch etwa 2-3 mal langsamer sein. Man kann da zum einen das Laden aus dem Speicher und hochzählen per LD Reg,x+ machen. Wenn man glück hat schaft das der Compiler auch, von der Tendenz her aber eher nicht. Vor allem kann man aber die Ergebnisse des Vergeleiches per ROL oder ROR direkt aus dem Carry flag in ein Byte zusammenfassen - da gibt es in C einfach keine equivalente Strucktur. Die Vergleiche für die 15 Kanäle kann man einfach so hintereinander schreiben, ohne Schleife., da sind je Kanal ja nur 3 Befehle (LDR,x+ / cp / ROL ).

Mit dem Hardware PWM könnte auch gehen, aber man sollte das PWM Signal ja mit der Umschaltung der LED Ebenen syncron halten. Es könnte gehen auch ein Paar LEDs per hardware zu steuern, viel Vorteil hat man dait aber nicht - dafür aber ein schränkungen bei der Frequenzwahl, um syncron zu bleiben.
Es wird also jede LED nur für eine unterschiedliche lange Zeit angeschaltet, dann ggf. etwas gewartet und dann schon die nächste LED-gruppe.

Ls4
01.02.2010, 21:07
hm ASM ist natürlich harte Kost. Da habe ich mich noch nie mit Beschäftigt.
Ich werde die Sache jetzt erstmal versuchen ohne PWM ans laufen zu bekommen, also im Master die Ebenen umschalten und über I2C die Leds aktivieren. Wenn das funktioniert gehts weiter.
Ich habe bei Mikrocontroller.net noch diesen PWM Ansatz gefunden:
http://www.mikrocontroller.net/articles/Soft-PWM
Er spricht von einer Prozessorlast von maximal 1.2% bei 8Mhz und 8 Kanälen. Ich frage mich ob das nicht auch für meine 15 Kanäle noch funktionieren würde.
Vielleicht probiere ich das einfach mal aus.

Viele Grüße,

Tim

Ls4
04.02.2010, 23:06
so, nicht dass ihr denkt es geht nicht mehr weiter hier.
In der Zwischenzeit habe ich eine Schablone gebaut und die Hardware getestet. Die Schaltung funktioniert wie geplant. Das weiß ist etwas bläulich, aber das ist nicht so heftig und kann sicher in Software korrigiert werden. Vielleicht bekommt man aber auch einfach kein schönes weiß hin mit den Leds.
Meine Test Led dürfte jetzt definitiv was abbekommen haben. in meiner MPX Routine war ein Fehler (hab ihn noch nicht gefunde. Hab glaube ich divide Clock by 8 ausgewählt bei den Fuses) und die Led ging sichtbar an und aus. Aber sie lebt noch, auch wenn mich das mehr als Wundert. Morgen messe ich mal den Strom der an der Led fließt wenn ich sie ohne Multiplexing anschließe (hin ist sie vermutlich eh schon und eh nur Testobjekt, wie oben schon geschrieben).
Aber interessant, was die so alles aushalten. Einfarbige hatte ich da schon wesentlich schneller über dem Jordan

Viele Grüße,

Tim

Ls4
06.02.2010, 21:20
So ich bin wieder einen Schritt weiter.

1)1 Ebene hab ich gelötet.
Den Draht bekommt man nicht 100% gerade. Das macht aber auch nicht.
Hauptsache Die Leds haben den gleichen Abstand voneinander und einigermaßen den gleichen Winkel

2)Ich habe die Schaltung durchgemessen. Irgendwas stimmt da leider noch nicht ganz. :( Ich komme beim 1:5 Multiplexing auf nur circa 4mA pro Led. Ohne Multiplexing folglich auf 20mA.
Das ist doch schon sehr funzelig. wie kann ich anfangen das Problem einzugrenzen?

Viele Grüße,

Tim

Besserwessi
06.02.2010, 21:33
Eine Schritt um die Probleme mit dem Strom einzugrenzen wäre ein LED kurzzuschließen, oder ggf. eine normale Diode parallel. Damit kann man dann auch dauerhaft mehr Strom durchschicken und messen wieviel Spannung an den Treibern usw. abfällt.
Daran kann man dann sehen ob die Treiber genug Strom liefern können und es ggf. reicht die Widerstände zu verkleinern.



Der nächste Schritt wäre dann die LEDs mal extern mit ca. 10 mA und ca. 20 mA zu beteiben und die Spannung nach messen. Daraus sollte man die Spannung und ggf. auch den internen Serienwiderstand der LEDs bestimmen können.

Ls4
06.02.2010, 23:27
Also, dann probiere ich das mal und melde mich hier wieder. Ich hoffe daran liegt es tatsächlich und es reicht die Widerstände zu verkleiner. Aber doch irgendwie ärgerlich. Naja, passiert.

Kann ich auch einfach 2 Vorwiderstände parallel anschließen und so den Widerstand halbieren? Dann sehe ich ja auch ob mehr Strom kommt, oder nicht.

Viele Grüße,

Tim

021aet04
06.02.2010, 23:32
Kann ich auch einfach 2 Vorwiderstände parallel anschließen und so den Widerstand halbieren?

Der Widerstand halbiert sich nur, wenn du 2 gleiche Widerstände parallel schaltest. Der Strom wird dann höher.

MfG Hannes

Ls4
06.02.2010, 23:52
Kann ich auch einfach 2 Vorwiderstände parallel anschließen und so den Widerstand halbieren?

Der Widerstand halbiert sich nur, wenn du 2 gleiche Widerstände parallel schaltest. Der Strom wird dann höher.

MfG Hannes
ja genau, das war der Plan. Das probiere ich dann morgen mal und schließe einfach soviele zusammen, bis ich den gewünschten Strom habe. Wenn der Strom nicht größer wird sehe ich ja dann, dass der Fehler irgendwo anders liegt.

Viele Grüße,

Tim

Ls4
07.02.2010, 23:37
so gut das mit den Ebenen auch voran geht, so schlecht klappt das mit der Elektronik :(
Ich habe nun mal einen Widerstand parallel dazu gehängt. (gleiche größe). Am Strom tut sich da leider absolut rein gar nichts.
Daraus habe ich den Schluß gezogen, dass nicht mehr geliefert werden kann und habe dann mal den Spannungsabfall gemessen. An Led und Vorwiderstand fallen zusammen 3.1V ab. Ist das eventuell zu wenig?
Demnach müssten an meinem PNP und N-FET zusammen 1.9V abfallen.
Was kann ich da nun noch tun?
Nur das Netzteil gegen ein größeres Austauschen und das ganze mit mehr Spannung versorgen?
Brauche ich dann zusätzliche Bauteile, oder kann ich mit der aktuellen Schaltung und den FET/Transistoren auch höhere Spannungen schalten....
Im Worst Case würde ich auch mit dem 4mA leben (wenn ich ansonsten die ganze Schaltun tauschen müsste) habe aber bedenken, dass beim Multiplexing die Leds dann überhaupt nicht mehr leuchten würden.
Sehr beunruhigt mich auch das ableben der roten Led in meiner Test LED. Diese hat einfach nur noch sporadisch funktioniert, um dann rigendwann in Rauch aufzugehen. Die Spannung auf meinem Board ist dann auch zusammengebrochen (Versorgungsled wurde dunkler). Ich nehme an, das gab dann einen kurzen und die Sache wurde leitend.

Ich hoffe ich bekomm es irgendwann noch hin, dass die Schaltung wie gewünscht funktioniert :(

EDIT: hat mir keine Ruhe gelassen und ich habs nun nochmal nachgemessen. es sind 3.2V Spannungabfall über blaue LED und 24Ohm Widerstand. Daraufhin habe ich mal den Vorwiderstand komplett entfernt. Dann müsste die Led auch an 3.7V Pervers leuchten. Tut das gute Stück aber nicht. es sind und bleiben 4mA. Stellt sich nur die Frage: Wo ist der Fehler passiert. Ist der Basiswiderstand am Bc327 vielleicht zu groß?

Stimmt meine Rechnung mit den 1.8V Spannungabfall an den Transistoren denn üebrhaupt, oder kann ich das auf diese Weise nicht bestimmen?

EDIT2: Ich hab nun auch mal den Spannungsabfall und den Basisstrom gemessen. An den IRLU024Z geht erwartungsgemäß keine Spannung verloren. An den BC327-16 gehen 1.65V!!!! verloren. Das ist doch viel zu viel. Sollte doch eigendlich maximal 700mV sein, oder?
Der Basisstrom ist 1.8mA


Viele Grüße,

Tim

TomEdl
08.02.2010, 09:05
EDIT2: Ich hab nun auch mal den Spannungsabfall und den Basisstrom gemessen. An den IRLU024Z geht erwartungsgemäß keine Spannung verloren. An den BC327-16 gehen 1.65V!!!! verloren. Das ist doch viel zu viel. Sollte doch eigendlich maximal 700mV sein, oder?
Der Basisstrom ist 1.8mA

Wie betreibst du denn deinen Transistor? Überprüfe mal im Schaltplan, ob der Basistrom durch die Last (LEDs) fließt. Wenn ja, dann verlierst du dadurch einiges am Kollektor-Emitter an Spannung. Wenn der Basistrom nicht durch die Last fließt, dann hast du zwar den Transistor richtig verschalten, aber er ist nicht ganz durchgeschaltet. Mit einem etwas größeren Basistrom sollte er dann komplett leitend werden. Dann beträgt der Spannungsabfall an der Kollektor-Emitterstrecke nur noch 100-200mV, also praktisch fast null.

Grüße
Thomas

mausi_mick
08.02.2010, 14:50
Hi,

die 36 Ohm bei der roten LED scheinen mir etwas niedrig zu sein,
es fallen ja, falls die Transistoern (mal) voll durchsteuern (sollten), fast 3V an ihm ab, sodass dann ca 80mA durch die Diode fliessen.
Die LED hält zwar 100mA maximal aus, aber nur bei "0,1ms Pulse width",
danach muss man vermutlich eine längere Pause machen.

Wieviel ms sie bei 80mA eingeschaltet sein darf, ist leider nicht spezifiziert.

Günstiger wäre wohl auch, anstelle der BC327 LL-Pmos-FETs zu nehem (BSS110,BSP613P z.B.), man spart sich dann einige Widerstände.

Gruss mausi_mick

Ls4
08.02.2010, 15:32
hm also muss ich die Zeilenumschaltung mit 10kHz machen um die Led nicht überzubeanspruchen?
Ich werde auf jeden Fall mehrstündige Tests mit den Ebenen machen. Wenn diese das nicht aushalten, dann reduziere ich den Strom über größere Widerstände. Das Material habe ich jetzt natürlich schon da und möchte das auch versuchen das so zu realisieren.
Mein Schaltplan müsste soweit korrekt sein. Ich reduzieren jetzt mal den Basiswiderstand und schaue mir an, ob er dann durchsteuert und ob das Problem hier anzusiedeln ist. Außerdem habe ich bei dem Netzteil die Möglichkeit die spannung auf 4.75V zu senken. Mit dem Abfall über den PNP habe ich dann auch nochmal eine geringere Spannung und einen geringeren Strom. (wenn ich alles richtig verstanden habe)

EDIT: Das wars. Der Transistor hat nicht ganz durchgeschalten und tut es immer noch nicht ganz, aber ich habe nun immerhin 35mA bei 1,1k Ohm Basiswiderstand. Ich gehe jtzt mal noch ein wenig runter (immer unter Beachtung des Basisstroms) und konstruiere mir so eine ordentlich Stromstärke für die Leds. Sollte ich irgendwann an die Belastungsgrenze des Atmegas stoßen höre ich einfach auf. Ich denke wenn ich 50mA erreiche wird die Helligkeit auch genügen und die Leds danken es sicher mit mehr Lebensdauer.



Viele Grüße,

Tim

mausi_mick
08.02.2010, 16:37
hi,

ich glaub nicht, dass das was nützt mit den 10kHz.
Bei 100mA erwartet die Diode nach einem Betrib von 0,1ms eine längere Pause ( 0mA ) wie lang diese Pause sein muss , weiss ich nicht, aber ich schätze deutlich mehr als 10ms . Bei 60mA ist das vielleicht nicht ganz so kritisch, aber ich würde eher mit kleineren Strömen arbeiten.

Ich glaube nicht, dass das mit der Verringerung des Basiswiderstandes klappt, bei 330 Ohm fliessen bereits 13mA (falls der Port bei der Belastung überhaupt auf 0V runtergeht) und bei einem Beta von 100 könnten bereits über 1 A am Kollektor fliessen (was der BC327 schon nicht mehr mag).

Vielleicht sollte man das mal mit einem BC327 und einer LED und einem 100 Ohm-Widerstand testen.

Gruss mausi_mick

Ls4
08.02.2010, 17:28
Also gut, dann probiere ich mal noch 3*2k2 parallel =>733Ohm und messe den Strom an der Basis sowie über die Led. Wenn dann der Strom um die 50mA liegt ist das ja dann ok. Dann belaste ich die Led nicht so stark, brauche nicht soviel Strom und hab trotzdem genügend Leuchtkraft (auch für PWM).
Die Vorwiderstände bleiben dann aber trotzdem drin, oder?
Auch wenn ich quasi ne Konstantstromquelle baue (sollte ich das alles soweit verstanden haben)

EDIT:
Ich hab noch ne Weile probiert.
mit 600Ohm als Basiswiderstand funktioniert es.
Der maximale strom fließt über die Rote LED. Das sind 50mA. EIne Led hat das jetzt auch ne gute Viertelstunde überstanden im 1/5 Multiplexing (also 10mA effektiv).
Das weiß sieht auch einigermaßen weiß aus, auch wenn es ein wenig Blaustichig ist, aber das ist wahrscheinlich überhaupt nicht zu vermeiden. Mit Helligkeit und Farben wäre ich nun zufrieden. Ich würde dann einfach 620Ohm Widerstände als Basis besorgen und das ganze so zusammenlöten :), wenn es nicht noch Einwände gibt.

SO und un bin ich mal wieder eine Ebene löten :)


Viele Grüße,

Tim

Ls4
03.03.2010, 21:59
Hi,

damit niemand denkt ich hätte des Projekt eingestellt gibts mal wieder Neuigkeiten.
Neben den Klausurvorbereitungen hab ich noch ein wenig Zeit zum basteln gefunden.

Aktueller Stand:

- 3 Ebenen sind fertig
- Hautplatine fertig
- Pollin Net Io modifiziert
- Netzteil getestet

So nun heute habe ich die Flachbandkabel fertig konfektioniert und mal 5 Leds an ein Kabel gelötet und so die 5 Spaltenansteuerungen auf dem Mainboard getestet.

Die Ebenenanstreuerung funktioniert schonmal
Bei den Spaltenansteuerungen funktionieren 3 von 5 fehlerfrei.
Bei 2en ist noch der Wurm drin. Jeweils 1 Komponente der RGB Leds leuchtet nicht. Es sind also 2 Transistoren betroffen.

Morgen werde ich mich mal auf die Suche nach den Fehlern machen.

Ich hoffe ich habe nicht die Transistoren geröstet.

Kleine Anekdote am Rande:
Nach dem Auflöten den 75 Transistoren ging leider erstmal gar nichts, bis ich dann festgestellt habe, dass im BC327 Datenblatt erstmal der Transistor verkehrt herum zum Schaltsymbol abgebildet war und dann auch noch das Schaltsymbol in meinem Schaltplan anderstrum war. Ich habe also alle 75 Transitoren falsche herum eingebaut und durfte jeden wieder auslöten herumdrehen und wieder neu Anlöten....
Transistoren und Widerstände kann ich nun definitiv nicht mehr sehen!

Viele Grüße,

Tim

Ls4
04.08.2010, 19:30
Hallo,

das Projekt ist nicht wie man meinen könnte eingeschlafen, sondern läuft aufgrund meiner Diplomarbeit (auch was mit Robotern ;) ) langsamer weiter.

Der aktuelle Zwischenstand:

Die Hardware läuft soweit.
Alle 5 Controller können die transistoren ansteuern und an jedem der 75 Ausgänge liegt das Signal an.
Die FETs für die einzelnen Ebenen arbeiten ebenfalls so wie gewünscht.
Noch nicht getestet ist I2C. Denke da wird es aber keine größeren Probleme geben.

Zwischenzeitlich habe ich nun alle Ebenen aufgebaut und die Ebenen verlötet. Der Würfel ist also soweit fertig und funktioniert auch!

Nächster Schritt ist nun das Gehäuse.
Hier hab ich eine Acrylglashaube mit den Abmessungen 30*30*40cm fertigen lassen. In die unteren 10cm kommt nun ein Holzgehäuse, welches die Hardware aufnimmt. Der Deckel des Gehäuses dient dann als Grundplatte für den Würfel.

Bezüglich Ansteuerung habe ich mir auch wieder ein paar Gedanken gemacht.

Die Steuerung über das Netzwerk hab ich komplett verworfen, da es mir unmut bereitet in eine fertige und mir nahezu unbekannte Firmware eine kritische Routine, die nicht hängen bleiben darf zu integrieren. (Multiplexing)

Deshalb werde ich nun als Mastercontroller einen weitern Atmega 88 verwenden. Dieser nimmt die Farbwerte über einen DMX Port an. Das ergibt dann 375 DMX Kanäle.

Der Mastercontroller muss also nur noch die Ebenen durchschalten und bei vorliegen von Daten an der seriellen Schnittstelle diese auf die 4 Controller aufteilen und übers I2C rausschieben.
Das sollte absolut keine Probleme geben (hoffe ich)

Das Pollin Board bleibt dennoch im Spiel und wird zum ARTNET Receiver umfunktioniert. Hierfür gibt es fertige Software. Die RS485 Chips und die DMX Buchsen kann ich in diesem Falle weglassen und die seriellen Schnittstellen des Pollinboards und des Mastercontrollers direkt verbinden (sollte doch gehen, oder?)

ARTNET ist ein Protokoll für DMX over Ethernet. Hierfür gibt es wiederrum Bibliotheken für den PC.

Meine Software am PC schiebt die Werte dann über Artnet raus an das Pollinboard, welches die Werte umkonvertiert und an den mastercontroller, der die werte wiederrum an die Clients weiterleitet.

Außerdem kann ich dann Visualisierungssoftware wie VVVV, DMXControl oder PureData verwenden und Animationen damit sehr einfach realisieren.

Was ich mich weiterhin Frage:

Die Werte für immer 25*3(Farben) Leds werden in meinen Clients abgelegt und zeitgleich von jedem Client immer 5*3(Farben) Leds bedient.
Soweit so gut. Für PWM gibt es mittlerweile ja recht flotte fertige Routinen, die auch 15 Kanäle bedienen können.
Jedes mal wenn eine Ebene umgeschaltet wird muss auch das PWM Array in den Clients umgeschaltet werden um die aktuell angesteuerte Ebene mit den rihtigen Werten zu bedienen.

Was passiert nun beim umschalten der Ebenen?
Setze ich den PWM Timer immer auf 0 und laufe wieder erneut bis 254 wenn eine Ebene angeschaltet wird?
Vermutlich wird das genau so sein nehme ich an.

Mit welcher Frequenz muss ich denn die Ebenen durchschalten, bzw wie hoch muss dann die PWM Frequenz sein?
Ich sollte ja mehrere PWM Zyklen pro Ebene schaffen um überhaupt den richtigen Farbwert auszugeben...

Reichen hierfür 100Hz bei den Ebenen und 400Hz bei PWM?
oder kann ich gar noch geringere Werte für ein Flackerfreies Ergebnis anpeilen?
Sind 400Hz PWM bei 15 Kanälen überhaupt machbar?

Außerdem habe ich offensichtlich ncoh ein Problem mit der Spannungsversorgung. Die Leds flackern ungelcihmäßig im Betrieb. Ich nehme an, dass meine 5V am Netzteilausgang doch nicht ganz stabil sind. Ich hoffe das mit einem großen Elko als Puffer ausgleichen zu können.

Viele Grüße,

Tim

Ls4
08.08.2010, 16:36
hier nun mal ein paar Bilder :)
Verfolgt das Projekt eigendlich noch jemand?

Viele Grüße,

Tim

Besserwessi
08.08.2010, 21:39
Für ein flimemrfreies Bild, sollte wie man Fehrnsehen eine Widerhohlfrequenz ab etwa 100 Hz ausreichen - mehr ist dazu eigentlich nicht nötig. Nur um die Wärmebelastung für die LEDs besser zu verteilen wäre eine höhere PWM Frequenz etwas besser. Das gilt vor allem wenn man mit dem LED Strom relativ hoch geht.
Das PWM Signal muß mit dem Umschalten der Ebenen Syncron laufen. Es muß also immer eine ganze Zahl von PWM Zyklen benutzt werden. Am einfachsten ist es dabei jeweils nur einen Puls bzw, eine Periode des PWM Signals zu nehmen und dann auf die nächste Ebene weiter zu schalten. Es ist besser nur je einen Puls zu nutzen und dafür lieber die Gesamt-Wiederhohlfrequenz höher (z.B. 400 Hz) zu wählen. Für mehr Auflösung könnte man die Helligkeitsinformation dann auch über ein paar Peroden verteilen (Dithering).

15 Kanäle mit 400 Hz als PWM sind für Software PWM (8 Bit) mit einem AVR bei z.B. 10 MHz kein wirkliches Problem. Wenn ich das richtig sehe braucht man aber für einen 4x4x4 RGB Cube insgesamt 192 Kanäle, also für jede LED einen, und davon jeweils 48 Kanäle gleichzeitig.

Mit wirklich guter Optimierung in ASM bin ich auf etwa 7-8 Zyklen pro kanal und PWM Schritt gekommen. Also als obere Genze für 8 Bit PWM Frequenz von etwa Fcpu / (7*256*Kanalzahl). Das gibt dann etwa 60-70 Hz für die 192 Kanäle und Bits. Das setzt dann aber reines ASM vorraus und ist noch ohne die aktualisierung der Daten.

Edit:
hab gerade gesehen das Design wurde ja auf 5x5x5 RGB geändert. So wie ich das sehe sollte da ja jeder µC 15 kanäle und dann noch 1:5 gemultiplext, also 75 LEDs versorgen. Das ist noch schaffbar mit Software PWM, braucht aber handoptimierten ASM Code für den kritischen Teil. Auf 400 Hz Widerhohlfrequenz wird man nicht kommen, aber 100-150 Hz sollten ja auch schon reichen.

Ls4
19.01.2013, 12:58
Es geschehen noch Zeichen und Wunder, aber ich habe nun tatsächlich etwas weiter am Würfel gerabeitet. Die Hardware ist soweit komplett fertig und ich arbeite nun an der Software.
Entschieden habe ich mich dazu anstatt einem Router oder AP nun einen Raspberry Pi zu verwenden und dort die Dateien abzulegen die geladen werden sollen. Das aktuelle Frame wird als byte Array der Größe 375 an den Master (Atmega 644p) geschickt, der dann die Mosfets durchschaltet (Multiplexing) und bei jedem Umschalten die aktuell relevanten 5*15 Bytes an die Slaves schickt, die dann jeweils die 15 8 bit PWM Kanale mit den empfangenen Werten ansteuern. Ich plane die 8 bit PWM Routine aus dem Wiki zu verwenden und diese von 8 auf 15 Kanäle auszubauen.
Auf allen Mikrocontrollern läuft Arduino. Das ist für mich als Informatiker eine sehr intuitive Art und Weise zu programmieren. I2C funktioniert soweit
Und Nachrichten über UDP kann ich mittlerweile ebenfalls vom Raspberry Pi empfangen. Auf dem Raspberry Pi läuft ein Processing Sketch.
Ein Problem gibt es aktuell dennoch:

Das Sketch sendet alle Sekunde (momentan) ein Byte Array der Größe 375.
Mit folgendem C Code kann ich das auf dem X86 Testweise auch empfangen:

n = recvfrom(sock, buf, 1024, 0, (struct sockaddr *) &from, (socklen_t *)&fromlen);
for(int i=0;i<256;i++){
unsigned int number=uint8_t(buf[i]);
}



Auf dem Master verwende ich die hypermedia UDP library.
nachdem ich hier mein Char Array empfangen habe:

word len = ether.packetReceive();
word pos = ether.packetLoop(len);

if (pos) {
char * pixels=(char *)&ether.buffer[pos];
for(int i=0;i<256;i++){
unsigned int number=uint8_t(pixels[i]);
Serial.println(number);
Serial.println(" ");
if(number%10==0){
Serial.println("\n");
}
}

}
Gibt die Konsole am x86 leider nur quatsch aus. Wenn ich einen String als char array sende ist die Konsolenausgabe allerdings vollkommen korrekt.
Ich vermute ein Problem bei der Endianness. Hatte da mal jemand ein ähnliches Problem?

Viele Grüße,
Tim