LED Matrix selbstgebastelt...

  • So, fehler in der Software behoben:




    Hex File nicht upgedatet!

  • So, Firmware download upgedatet!


    http://www.audiowerk.at/lld_1_main.zip


    Fehler war gestern der, dass die LED geglimmt hat, wenn 8 Adressen vorher die LED ein war.
    Grund war der, nach dem alten Programm wurde das nächste Latch aktiviert und erst 2 Taktzyklen später auch die neuen Daten geschrieben. So sind zwar über die längere Zeit die korrekten Daten im Latch gestanden, aber ganz kurz auch noch die alten vom Latch davor. Nun wird das Latchenable vorher gelöscht (CBI PortD,x), dann erst die Daten ans Latch angelegt und dann kurz enabled.


    Bei den einzelnen LEDs hat man nichts gesehen von dem Fehler. Grund war einfach der - man hats durch die Auswahl der LEDs einfach nicht gesehen. Bei den weißen sieht mans. Desweiteren hat die Stromquelle eine leichte "Latenz" sodass der Fehler erst richtig auffallt.


    Was noch geändert wird: durch das überhüpfen von PWM Werten und dem Linear Dimming kommt es, dass sich bis gut DMX Wert 40 bei den LEDs garnix tut. Werde das Linear Dimming in die Ausgaberoutine packen und somit nur alle 4 Werte überspringen (da nur 64 Step Linear Dimming).


    Die Firmware ist freigeben um selbst zu basteln. Wer eine Version wünscht ohne Latches und 64 LEDs im 8x8 Cluster soll sich melden, das sind nur ein paar Zeilen die man in der Firmware löschen muss.

  • So, weiter gehts!


    Hier die Firmware (HEX File) für den ATMEGA8515 mit 64 Ausgangs LED Kanälen (8x8 Singlecolor).


    Und hier ein mögliches Platinenlayout für die Stripes (Länge = 25cm). 4 LEDs pro Pixel, LED Abstand 6,6 cm. Mit diesem Abstand kann man auch recht gut mit Movingheads durch das Raster leuchten , sodass für den Gast das LED Array optisch vorerst garnicht existiert. Am späteren Abend kann dann mit dem Array losgelegt werden.


    An den 3 dicken Strichen cutten und alle 4 25cm langen teile aneinanderhängen, somit ergibts ein 1m langes Platinenstück mit einer Breite von 15mm. Die Lötaugen am Ende jeder Platine sind für die elektrische Verbindung zwischen den PLatinenteilen. Hier entweder Drahtbrücken löten oder gewinkelte RM2,54 Stift/Sockelleisten verwenden. Der Stecker auf der Platine 1 ist ein ungewinkelter SUB-D 15 Pol (alter Joystickstecker).



    Hier das Vollformat zum abbausen.


    Werde das Teil die nächsten Tage ätzen, zusammenbauen und Berichten wies funzt.


    Zur Multicolorversion: das wird ohne Doppellayerplatine nix werden, da es sonnst zuviele Leiterbahnen auf der nur 15mm breiten Platine werden, sodass das auch noch ein normalsterblicher Ätzen kann.

  • Mike, mal zwischendurch & themenfremd: Respekt!


    Ich hab den Ksram studiert und verstehe es auch, was du da tust. Aber selber...? :oops:
    Also, Glückwunsch!

    Am Anfang war das Licht

  • Softwareupdate auf v1.4


    Neu:
    PORTD-Pin7 ist Status LED. Leuchtet, wenn der Prozessor korrekt arbeitet und gebootet hat. Boot OK = 5V, Boot Fail = 0V. Grund dafür ist, auch uProzessor Newbies das Betreiben der Software zu erleichtern.

  • So, gestern hab ich einmal mit dem ganzen Thema Stromquelle sowie der Kathodenschaltung gespielt und auf was recht interessantes gestoßen.


    Normal werden Kathoden immer über einen Transistor oder MOSFet auf Masse gezogen. Wenn ich das mache, dann schaltet der Transistor oder der Mosfet weit zu langsam wieder aus (geht zu langsam in den Sperrzustand). Hab das ganze auch versucht mit einer Schottkydiode K an C, A an Basis zu beschleunigen, aber weitaus ohne Erfolg. Transistor war BC547, Mosfet ein IRF640.


    Jetzt hab ich den 74LS06 Logik IC (open Kollektor) in der Bastelkiste gefunden, der jetzt die Diodenkathode gegen Masse zieht - das funzt auch ausreichend schnell. Die Anode wird ebenfalls mit diesem IC sowie einem darauffolgenden CMOS Gatter (da CMOS bis 15V arbeitet) beschaltet. Jedoch bringt das CMOS Gatter weit zu wenig Strom, um das Sinnfoll zu betreiben. Baut man irgendwas Transistormäßiges da dran, wirds wieder zu langsam.


    Hat jemand eine Idee, wieso das so ist, Transistoren sind normal doch recht schnell... Die Timingtabelle gibts weiter oben, jedoch die Zeiten halbieren für 16MHz Systemtakt. Habe ausgerechnet, dass der Schaltvorgang innerhalb 62ns vollständig abgeschlossen sein muss.


    Bin während meinen recherchen nach Bauteilen auf den ALLEGRO UDN2981 8 Kanal Sourcetreiber gestoßen, der so die Highside der Dioden mit bis zu 30V und 500mA pro Diodenarray ansteuern kann. An diesem hängt dann ganz normal die Stromquelle (die passt dann vom Speed wieder) für die Dioden. Das wird so ein Thema, das ich nach dem Wackenurlaub ausprobieren werde.


    Vielleicht hat bis dahin auch wer einen Vorschlag, das mit genügend schnellen Transistoren zu realisieren (welche soll man da nehmen?).

  • Hallo,


    der IRF640 hat Ugs max. 20V, laut deinem Schaltplan oben liegt die maximale Gatespannung bei 30V.
    Auch ist dieser nicht für solche hohen Schaltfrequenzen geeignet, erst recht nicht ohne Komplementärstufe oder Mosfet-Treiber. Da ist die Gatekapatzität nicht vernachlässigbar.
    Nimm stattdessen mal einen Transistor.

  • Hi Mike, hast schon mal einen Beschleunigungskondensator über R8 probiert, der sollte einige ns an Geschwindigkeit bringen!


    Das leidige Thema mit den Ausschaltzeiten haftet solchen Transenschaltungen halt an, das was man mit hohem Übersteuerungsfaktor beim Einschalten rausholt braucht dann zum "Ausräumen" der Ladungsträger wieder recht lange...


    Hm, der von Dir angesprochene Baustein mit dem Source-Driver ist zwar recht hübsch aber Ein- und Ausschaltzeiten im µs-Bereich sind indiskutabel, dachte ich?
    Abhilfe könnte ein Totem-Pole-TTL-Inverter schaffen, dann wird die Transistorstufe richtig schnell, aber auch aufwändig...


    Gruß, Jürgen :wink:

    Lieber mit Röhre geampt, als in Selbige geschaut!

  • Jeah, mich freuts immer wenn bei den neuen Antworten rechts "Jürgen Klingel" steht, denn dann kann man sich während dem Klick aufs Thema schon auf was brauchbares freuen - dem ist auch hier so^^.


    Zitat

    Hi Mike, hast schon mal einen Beschleunigungskondensator über R8 probiert, der sollte einige ns an Geschwindigkeit bringen!


    Nein hab ich noch nicht dran gedacht, aber ich denke gerade daran und versuchs dann mal aus. Wäre ja schon fast zu schön wenns funzen würd.


    Zitat

    Hm, der von Dir angesprochene Baustein mit dem Source-Driver ist zwar recht hübsch aber Ein- und Ausschaltzeiten im µs-Bereich sind indiskutabel, dachte ich?


    Mal probieren, die paar Euro sind da auch schon egal. Aber das mit dem Totem Pole ist eine recht gute Idee, jedoch ha ich auf die schnelle nur ICs mit 25mA gefunden.


    Wichtig wäre es, Transistoren zu verwenden, da das einiges an Problemen lösen würde...


    Zitat

    der IRF640 hat Ugs max. 20V, laut deinem Schaltplan oben liegt die maximale Gatespannung bei 30V.
    Auch ist dieser nicht für solche hohen Schaltfrequenzen geeignet, erst recht nicht ohne Komplementärstufe oder Mosfet-Treiber. Da ist die Gatekapatzität nicht vernachlässigbar.
    Nimm stattdessen mal einen Transistor.


    Die 30V sind die Betriebsspannung der Schaltung, an den Gatterausgängen liegen immer 5V an (bis auf den Ausnahmefall wie oben beschrieben). Ich hab Transistoren und Mosfet probiert - um nichts unversucht zu lassen.

  • Zitat von "Mike J."

    Jeah, mich freuts immer wenn bei den neuen Antworten rechts "Jürgen Klingel" steht, denn dann kann man sich während dem Klick aufs Thema schon auf was brauchbares freuen - dem ist auch hier so^^.

    *Rot werd* Danke, genug der Huldigung :grin:
    Ich halte es nur mit Nuhr: "Wenn man keine Ahnung hat, ...!" Zum Rest gebe ich meinen Senf :lol:


    Ohne jetzt Datenblätter gewälzt zu haben, noch eine :idea: : BF-Typen sind schneller als BC, weil eigentlich für HF-Anwendung gedacht...


    Gruß, Jürgen :wink:

    Lieber mit Röhre geampt, als in Selbige geschaut!

  • Momentan hab ichs so, da funzts:



    Ich werds dann bei Zeiten mal mit eine BFG97 Transistor probieren, weil der hat den höheren Strom als der Mosfet im Schaltplan.


    Hier ein paar Oszibilder (obere Kurve Anode, untere Kathode). Es wird LED2 angesteuert, oben der erste "Berg" ist Diode 1, der zweite "Berg" ist Diode 3. Das "Tal" dazwischen in der oberen Kurve ist die nicht angesteuerte Diode 2 (die eben leuchtet, wenns zu langsam ist^^)
    FET BF245C




    BC547 mit 680R Basisvorwiderstand

    BC547 mit 330nF "Beschleunigung über den Basisvorwiderstand


    IR640 MOSFET (man sieht dass der eigentlich garnichtmehr richtig ausschaltet)


    Hier noch ein Nachtrag von gestern:


    Das ist die Version der Diodenansteuerung, die soweit funzt, jedoch nicht optimal ist.

  • So, danke nochmal an Jürgen wegen dem Totempole Thema - gesagt gebastelt sag ich da nur. Alles mit BC547 gelöst und funzt bestens (30ns Schaltzeit).



    Ich nehme an, dass die Transistoren bei mir so langsam waren war wirklich die "Übersättingung" der im Transistor liegenden Diodenübergänge mit Elektronen. Jetzt muss ich das ganze spiel auch noch mit der Kathode zusammenbringen, sodass man hier einen Strom von rund 500mA (Stichwort Überdimensionierung!) fließen lassen kann. Dazu schau ich mir um einen kleinen FET, der den Strom abkann.


    Falls jemand einen Bauteiltipp für den FET hat, gerne!