Hallo allerseits, ich habe mich endlich dazu durchringen können eine Ansteuerung für den TLC5922 zu schreiben. Dafür musste heute morgen zwar die Mathe Übungsklausur ausfallen (war spät gestern), aber ich denke es hat sich gelohnt. Ganz kurz zum TLC selbst: Es handelt sich um einen Konstantstrom LED Treiber mit 16 seperat modifizierbaren Ausgängen und 7 Bit Farbtiefe (über 2 Mio Farben) Der größte Vorteil im Gegensatz zu anderen Treibern wie zB dem MAX6957 ist, dass er eigentlich keine Adressierung hat und dadurch um einiges schneller anzusteuern ist. Wo ich gerade bei Ansterung bin muss ich noch erwähnen, dass er SPI Signal vorgesetzt bekommt und dieses auch an weitere Treiber übergeben kann. Dazu ist es nötig alle Treiber daisy-chained anzuschließen. Genau diese daisy-chained Eigenschaft habe ich bei meinem Code ausgenutzt, so ist es möglich beliebig viele Treiber "in Reihe" anzusteuern. Die Anzahl der angeschlossenen Treiber muss nur noch bei den defines eingestellt werden Jetzt zum Programm: Ich habe mir Mühe gegeben so viel wie möglich zu kommentieren, damit es recht einfach nachzuvollziehen ist, hoffe ihr kommt damit klar. Es stehen viele Funktionen wie zB ein Moodlight Effekt oder ein Lauflicht zur Verfügung, das sogar über alle angeschlossenen Treiber "rüber läuft". Zur einfacheren Veränderung der Helligkeit bzw des AN/AUS Status habe ich zusätzlich Arrays eingeführt in die der Benutzer seine Daten reinschreiben kann und dieses dann mit einer Funktion in ein SPI geeignetes Array zu transferieren. Alle Funktionen sind allerdings auch noch im Code erklärt und aufgelistet. Für die schnellen unter euch habe ich ein Testprogramm hinzugefügt in dem alle wichtigen Funktionen aufgerufen werden, sodass man sieht was welche Funktion bewirkt und nicht im Source wühlen muss. So, jetzt muss ich noch was beichten... ich habe den Code mit Codevision geschrieben, weshalb er auch nur dort compiliert. Wer sich mit dem GNU auskennt kann gerne auch noch eine Alternativversion posten. Alle die darauf nicht warten wollen können sich auch einfach die Trialversion herunterladen, die reicht aus vorrausgesetzt man compiliert nach Speed und nicht nach Größe (kleiner Tip am Rande, ist wohl ein Bug beim Programm ;) Wer sich die Treiber mal anschauen will, dem kann ich gerne mal einen vorbeischicken, Adapter für Lochraster hab ich auch machen lassen. Wenn sich hier noch ein paar finden, die den TLC5922 auch gerne verbauen würden, gebt mir bitte Bescheid, dann organisier ich eine digikey Bestellung sobald wir 100 Treiber zusammen haben (dann werden die sehr billig) Das war jetzt erstmal alles, was mir dazu einfällt, macht mit dem Code was ihr wollt, ist alles Freeware, ihr müsst ihn ja nicht aufs Toilettenpapier drucken :( Grüße an den Rest der Elektroniker oder die, die es werden wollen Kai
Hallo Kai, ich hätte Interesse an 2 oder 4 Stück von den TLC5922. Hast du welche über die du, auch gegen Bezahlung, entbehren könntest? Viele Grüße Flo
Hallo, kann welche entbehren, schreib mir am besten eine Mail
wenn du mir deine email adresse hinterlässt gerne :) somit hast du jemanden gefunden den du für den tlc5922 begeistert hast. auch mit dem as1110 möchte ich erfahrungen sammeln. danke flo
@ Florian Wiesenbacher (mechatroniker82)
>wenn du mir deine email adresse hinterlässt gerne :)
Augen auf! Das erste Posting ganz oben, der Name ist blau, also ein
Link. Draufclicken und Mitteilung abschicken.
MfG
Falk
>> auch mit dem as1110 möchte ich erfahrungen sammeln. Die Treiber sehen ganz nett aus, allerdings haben die keine Dot Correction, sind also für RGB LEDs unbrauchbar
@Kai: Also ich versuche auch gerade deine Lib in betrieb zu nehmen. Ich habe jetzt nochmal eine Frage zu den LEDs. Soweit ich es deinem Code entnehmen kann, gehst du davon aus dass LED1 an auch physikalisch an OUT0 des TLC5922 angeschlossen ist. Fall ich dann RGB-LEDs einsetzen möchte, dann ist im Code momentan hinterlegt, dass RGB-LED1 an OUT0 bis OUT2 , RGB-LED2 an OUT3 bis OUT5, ... angeschlossen sind. Was mache ich aber jetzt, wenn ich auf Grund meiner Hardware eben nicht diese Reihenfolge habe. Wo und wie binde ich eine Zuordnungstabelle meiner LEDs in den Code ein? Würde mich über ein Feedback freuen. Bin aber schon echt begeistert von dem Code:) Danke Gruß Armin
Hallo, du hast das alles richtig verstanden, leider muss ich dich enttäuschen... Dieser Code ist nur für RGB LEDs gedacht, die so angeschlossen sind wie du es gesagt hast. Dadurch, dass ich >> Befehle benutze wäre beispielsweise das Lauflicht außer Funkion. Wieso kannst du die Hardware denn nicht ändern? eigentlich müsste meine Anschlussart die am Einfachsten zu realisierende sein. Gruß Kai PS: Updates kommen bald
Hallo, also was mir noch aufgefallen ist. Du verwendest in deinem Code CS_ON und CS_OFF. Aber der Pin des ATmega8 mit CS der SPI ist doch gar nicht mit den LED-Treibern verbunden oder? wieso setzt du dann diesen Pin des Mega 8 auf 1 bzw. auf 0? Ich werde mir für oben genanntes Problem wohl noch eine Lösung überlegen müssen, da auf Grund der Verlegung der Leiterbahnen diese Zuordnung nicht möglich war. Gruß Armin
CS_ON und CS_OFF machen nichts anderes als den PORTB.2 auf 1 bzw 0 zu schalten und genau dort müssen alle XLAT von den Treibern angeschlossen werden. Das stimmt schon so :) Wie du was anschließen musst hab ich versucht in den Kommentar zu schreiben, wenn nötig kann ich auch noch einen Schaltplan hinzufügen Gruß Kai
Hallo nochmal, ich habe das ganze jetzt mal als Prototyp aufgebaut und mit meine Handykamera schäm gefilmt Hier ein externer Link zu myvideo: http://www.myvideo.de/watch/4258285/Moodlight_fuer_Wohnzimmer_Bar_Disco Momentan sind es erst zwei Leisten, ich werde jetzt Platinen machen lassen, weil ich etwa 3 Stunden für das Verkabeln von einer Platine gebraucht habe. Da kommen dann auch Treiber drauf, damit ich keine Probleme mit der Terminierung habe und Längen von 20-30 Metern möglich werden.
Hallo Kai, könnte man auch den TLC5940 für Deine Bibliothek benutzen? Den gibts nämlich als PDIP. Gruß Jürgen
Hallo, nein, meine Routinen funktionieren nur für die angegebenen Treiber. Der TLC5940 hat wenn ich mich nicht irre doch auch noch eine PWM zusätzlich und somit auch mehr Steuereingänge. Ich werde aber wohl in nächster Zeit eine Ansteuerung für den TLC5946 schreiben, vielleicht sind die beiden Typen besser verträglich. Grüße Kai
Hallo Kai, liegt die Compilerabhängigkeit nicht nur an den Variablentypen? Ich arbeite lieber mit dem GCC... Hast du noch Platinen übrig? Bzw. stellst du die Layouts zu Verfügung? Ist zwar nicht so viel Arbeit das selber zumachen, aber auch nicht wirklich so spannend ;-) also wenn du es eh schon gemacht hast, wäre es nett, wenn du die Sachen posten könntest. Danke.
Hallo interessierter, Bei CodevisionAVR kann ich beispielsweise schreiben: PORTB.0 = 1; Das funktioniert bei GCC nicht, da müsste man mit << Operatoren das richtige Bit isolieren. Der Rest sollte ohne Probleme direkt per copy/paste portierbar sein. Ich habe auch noch ein paar Adapterplatinen oder was meinst du mit den Platinen? Bei Interesse schreib mir eine PM Den Eagle File habe ich leider nicht mehr, der ist bei einem Garantiefall drauf gegangen :(
Was genau meinst du mit Adapterplatine? SMD auf Lochraster? Ich suche mehr was, um die Verdrahtung zu umgehen... Hast du evtl. noch nen Schaltplan? Irgendwas handschriftliches, was du auf nen Scanner werfen könntest?
Hallo, ich habe noch keine Platine geätzt, die diese Ansteuerung des TLCs benutzt, ich habe das bis jetzt auch erst alles auf Lochraster verbaut. Wenn du mir sagst was du mit den Teilen vor hast und wieviele LEDs du ansteuern willst kann ich dir sagen ob das die richtige Art der Ansteuerung ist oder ob es vielleicht eine bessere gibt. Ich weiß ja nicht wie eilig es bei dir ist, aber ich werde auch bald einen Artikel im Wiki veröffentlichen wo jede Möglichkeit der Ansteuerung aufgeführt wird. Gruß Kai, der gerade genervt versucht Windows zu installieren, weil die Installation die Festplatte nicht erkennt
Also ich dachte an eine Beleuchtung im Sinne einer indirekten "Notbeleuchtung" mit Farbeffekt. Das Licht muss nicht zum Lesen reichen. Einfach nur ein klein wenig den Raum erhellen und schön aussehen ;-) Wieviele LEDs braucht man dazu? Ein paar aufgereiht sollten es eigentlich tun. Wollte halt nicht viel Basteln sondern eher schnell nachbauen, da ich gerade mit anderen Projekten beschäftigt bin.
Hallo, dafür sollte ein Treiber eigentlich reichen, wenn du dich noch ein wenig gedulden kannst, kann ich dir eine fertige Platine schicken, die du dann nur noch vestücken müsstest. Da wäre dann ein Treiber und 10 RGBs drauf. Gruß Kai
Wenn du das eh vorhast zu machen, wäre das super nett. So eilig ist das bei mir nicht. Nur hat die Diplomarbeit momentan vorrang ;-) Das Layout zum selber ätzen würde mir schon reichen. Habe ich das richtig verstanden, das du auf der Platine dann "nur" den Treiber und die LEDs hast, also quasi ein LED-Modul. Der Controller sitzt dann auf einer eigenen Platine und kann mehrere dieser Module ansteuern? Grüße
Hallo, ja genauso ist das geplant, da ich jetzt mehr Zeit habe (Windows und Linux vertragen sich endlich nachdem Linuxx Windows unterworfen hat) werde ich mal etwas genauer auf mein Vorhaben eingehen: Es sind 50cm lange LED Leisten mit 10 oder 15 RGBs auf einer Platine mit einem Controller geplant. Da ein Controller nur 5 RGBs schafft, sind 2 oder 3 LEDs immer in Reihe geschaltet (6 Pin RGBs erforderlich!) Es soll jetzt möglich sein eine beliebig lange Leiste zu bauen indem man die Leisten einfach hintereinander steckt. Vor dem Betrieb teilt man dem Atmega nur mit wieviele Leisten angeschlossen sind und er kann diese mit den implementierten Funktionen (langsamer Farbwechsel, Lauflicht über alle Leisten oder einfach eine gemeinsame feste Farbe) alle ansteuern indem er die Daten seriell durchschiebt. Das funktioniert auch schon alles, bis auf eine Sache: Mein Problem ist die Länge der Leisten, da ich ab ein paar Metern Probleme mit der Terminierung bekomme. Da bin ich noch ein wenig am herumexperimentieren damit die Länge nur noch durch den SRAM Speicher des ATmegas begrenzt ist :) Gruß Kai
Hallo, das Thema ist ja schon eine Weile her, aber ich bin auch aktuell dran mit dem TLC zu arbeiten. Leider hat mein Steckboardversuch nicht funktioniert, warum auch immer. Darum bin ich auf der Suche nach einen (sauberen) Schaltplan für den TLC5922 mit diesen Code. Es würde auch ein TLC5940 gehen, dafür habe ich aber keinen Code.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.