robuster LED-Controller gesucht

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

robuster LED-Controller gesucht

Beitrag von Nicki »

Hi,
nachdem der MY9942 mir einige graue Haare gebracht und mich etliche Stunden gekostet hat, suche ich nach einer Alternative.
Ich bin angesichts der Auswahl etwas ratlos und suche einen LED-Controller, der idealerweise folgendes bietet:
-PWM mit >>8 Bit am Ausgang
-"Gammakorrektur" (habe gehört dass das mit dem Gamma nichts zu tun haben soll, aber ich hoffe hier weiß jeder was ich meine)
-Eingabe mit 8 bit reicht
-PWM-Ausgang, der ohne große Bastelei mit einem N-Mosfetgate verbunden werden kann.
(somit ist der TLC5940 schon mal raus, den habe ich hier schon herumliegen)
-eigenständige Taktung (spricht auch gegen den TLC5940, ich will nur ein paar Streifen und keinen LED-Würfel dimmen, da muss es nicht synchron sein)
-SPI oder noch besser I2C
-mindestens 4 Kanäle
-DIP-Gehäuse (sonst brauche ich halt ne Adapterplatine...)
Jannyboy
Beiträge: 1418
Registriert: So 11. Aug 2013, 14:49
Wohnort: Kreis Augsburg

Re: robuster LED-Controller gesucht

Beitrag von Jannyboy »

Da gibs den WS2801.
Oder eine WS2812 das ist eine RGB-LED mit integrierten Controller.

http://www.adafruit.com/datasheets/WS2801.pdf
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: robuster LED-Controller gesucht

Beitrag von Nicki »

Der WS2801 ist nicht gänzlich unbrauchbar, aber ich habe ihn in der Bucht bisher noch nicht im DIP-Gehäuse gesehen, 8 Bit habe ich auch am AVR...
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: robuster LED-Controller gesucht

Beitrag von Fritzler »

Klingt ganz und gar nach nem AVR! :lol:
Der hat auch nicht nur 8 Bit, es gibt auch welche mit 16bit PWM und die stellste auf 10 oder 12 bit für die Gamma LUT.

Dem TLC5940 kann man übrigens "Eigentaktung" beibringen, hab ich auch gemacht.
An nen Mosfet kannste den auch anschließen mit nem Pullupwiderstand.

Schaltplan:
Bild

Funktionsbeschreibung (zitiere mich mal aus nem anderen Forum):
Wenn man GSCLK und BLANK vor Ort erzeugt (Tiny25) und ein kleines Anpassungsnetzwerk erzeugt, dann geht das auch mit normalem SPI.
Alle 4096 GSCLK Impulse brauchts nen BLANK Impuls, damit der interne PWM Zähler resettet wird.
XLAT darf nur HIGH sein, wenn BLANK dies auch ist.
MODE muss mitgeführt werden, weil die Latches zufällig initialisieren und somit auch die DOTcorrection eingestellt werden muss.
GSCLK hat dann komischerweise das 4096fache der PWM Freqenz. Also bei Flimmerfreien 250Hz schon 1MHz ;)
Allerdings statt den Transen etwas aus Gattern bauen (4x NAND sollte reichen).
MODE Umschaltung erfolgt durch längeres LOW halten der CS Leitung.
Das nur wegen Pinmangel am Hauptprozessor, MODE kann ja mitgeführt werden.
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: robuster LED-Controller gesucht

Beitrag von Nicki »

Fritzler hat geschrieben: Der hat auch nicht nur 8 Bit, es gibt auch welche mit 16bit PWM
Die vom Atmega 2560 mit 100 Pins sind sogar recht brauchbar angeordnet.
Mal mit den TCCRs spielen...
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: robuster LED-Controller gesucht

Beitrag von Fritzler »

Wenn der DIP is fress ichn Besen. :mrgreen:
Ich dachte da eher an den 1284P, total oversized aber hat eben 4x 16 bit PWM.
Aber nich so oversized wie ein 2560 8-) Allerdings sind 12x16bit kanäle auch ned schlecht.

Ansonsten kann man noch in Software ne 4x13bit PWM zaubern oder man macht BAM (Bit Angle Modulation).
In meinem Zimmerlicht werkelt nen mega64, der hat 6x 16bit PWM.

Was willste denn bauen?
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: robuster LED-Controller gesucht

Beitrag von Nicki »

Der 2560 sitzt hier schon auf ner Platine :D
Ich will mal mit RGBW-LED-Beleuchtung im Auto experimentieren.
Der 2560 holt sich mittels MCP2515 Daten vom CAN-Bus, da mir ELM327 und STN1110 zu viel Strom brauchen und ich nicht so viel Abstraktion brauche.
Etwas doof:
Ich habe zwar Timer 5 erfolgreich für die PWM gewinnen können, aber da habe ich ja nur 3 Kanäle.
Fehlt einer für RGBW :/
Und am TLC5940 hasse ich die Furgelei die eine richtige Ansteuerung der Mosfets erfordert... (also dass die LEDs vor der Initialisierung aus sind - die durch +B-Trennung auszuknipsen finde ich etwas pfuschig-wohlfeil)
Lochrasterbastler
Beiträge: 51
Registriert: So 11. Aug 2013, 18:41

Re: robuster LED-Controller gesucht

Beitrag von Lochrasterbastler »

Nicki hat geschrieben:Der WS2801 ist nicht gänzlich unbrauchbar, aber ich habe ihn in der Bucht bisher noch nicht im DIP-Gehäuse gesehen, 8 Bit habe ich auch am AVR...
Den gibt's auch noch als WS2803, im DIP-28 Gehäuse. Hat dann auch 18 Ausgänge, dürfte ja reichen. ;)
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: robuster LED-Controller gesucht

Beitrag von Nicki »

Ich schlage mich gerade mit dem Timer 5 und dessen Registern...

Code: Alles auswählen

 
int pwm(int r, int g, int b)
{
 unsigned char sreg;

  sreg = SREG;
 OCR5AL= r;
 OCR5BL= g;
 OCR5CL= b;
 OCR5AH= (r>>8);
 OCR5BH= (g>>8);
 OCR5CH= (b>>8);

SREG = sreg;
  
}
Initialisierung sieht so aus:

Code: Alles auswählen

 DDRL=  B00111000 ;
 TCCR5A = B10101000; 
 TCCR5B = B00010010; 
  ICR5H= B00001111;
  ICR5L= B11111111;
  OCR5AH= B0000000;
  OCR5AL=B00000000;
  OCR5BH= B0000000;
  OCR5BL=B00000000;
  OCR5CH= B0000000;
  OCR5CL=B00000000;
Irgendwie will OCR5AH keine Werte annehmen, beim Lesen kommt nur 0 - im Gegensatz zu OCR5AL...
Weiß jemand wo der Fehler liegt?
Benutzeravatar
Bastelbruder
Beiträge: 11559
Registriert: Mi 14. Aug 2013, 18:28

Re: robuster LED-Controller gesucht

Beitrag von Bastelbruder »

ist es vielleicht das?
...
OCR5AH= B0000000; . . 7bits
OCR5AL=B00000000; . 8bits
OCR5BH= B0000000; . .7bits
OCR5BL=B00000000; . .8bits
OCR5CH= B0000000; . .7bits
...
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: robuster LED-Controller gesucht

Beitrag von Fritzler »

Code: Alles auswählen

 DDRL=  B00111000 ;
 TCCR5A = B10101000;
 TCCR5B = B00010010;
  ICR5H= B00001111;
  ICR5L= B11111111;
  OCR5AH= B0000000;
  OCR5AL=B00000000;
  OCR5BH= B0000000;
  OCR5BL=B00000000;
  OCR5CH= B0000000;
  OCR5CL=B00000000;
WOAH!
Ich zieh dir gleich die Hammelbeine lang!
Das wird jetzt ersmal ordentlich geschrieben ala
TCCR5B |= (1<<CS50);
sonst kannste dir den Support an die Backe schmiern, weil das keine Sau lesen kann!

Außerdem musste nicht auf ICR5 und die OCR mit 2x8Bit zugreifen, das macht der Compiler selbst, also: ICR = 0x0fff;
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: robuster LED-Controller gesucht

Beitrag von Nicki »

Fritzler hat geschrieben: WOAH!
Ich zieh dir gleich die Hammelbeine lang!
Gnade!
Das war meine erste Registerspielerei überhaupt ;)

Außerdem musste nicht auf ICR5 und die OCR mit 2x8Bit zugreifen, das macht der Compiler selbst, also: ICR = 0x0fff;
Danke, das hats gebracht :)

So besser?
Oder kann man die Bitshifts noch zusammenfassen?

Code: Alles auswählen

 
DDRL=  B00111000 ;

 TCCR5A |= (1<<COM5A1);
 TCCR5A |= (1<<COM5B1);
 TCCR5A |= (1<<COM5C1); 
 TCCR5B |= (1<<CS51);
 TCCR5B |= (1<<WGM53);
  ICR5= 0x0fff;
  OCR5A= 0;
  OCR5B= 0;
  OCR5C= 0;
(Damit hat er aber ne seltsame Taktung drauf... Taktteiler scheint mir zu hoch zu sein)
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: robuster LED-Controller gesucht

Beitrag von Fritzler »

Kommentare sind auch wichtig mit du später mal weist was du da verzapft hast.

So würd ich das schreiben:

Code: Alles auswählen

//PWM init (Timer5), Grundfrequenz (kann ich ned hinschreiben, kenne die Systemclock ned)
//PWM out non inv.
DDRL |=  (1<<PL5)|(1<<PL4)|(1<<PL3);
TCCR5A = (1<<COM5A1)|(1<<COM5B1)|(1<<COM5C1);
//CLK/8, Phase_Freq_PWM_ICR
TCCR5B = (1<<CS51)|(1<<WGM53);
//12bit PWM 
ICR5 = 0x0fff;
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: robuster LED-Controller gesucht

Beitrag von Nicki »

Schon wenn ich

Code: Alles auswählen

DDRL |=  (1<<PL5)|(1<<PL4)|(1<<PL3);
statt

Code: Alles auswählen

DDRL = B00111000;
verwende tut sich nichts mehr :(
Scheint der Compiler nicht zu mögen...
Benutzeravatar
flogerass
Beiträge: 1145
Registriert: Mo 12. Aug 2013, 17:46
Wohnort: Nord-Östlich von Ulm

Re: robuster LED-Controller gesucht

Beitrag von flogerass »

Dann mach mal das Oder vor dem Gleich weg. Du willst ja das ganze Byte schreiben und nicht nur die Einsen.
Benutzeravatar
Weisskeinen
Beiträge: 3950
Registriert: Di 27. Aug 2013, 16:19

Re: robuster LED-Controller gesucht

Beitrag von Weisskeinen »

Noch mal zur ursprünglichen Frage: Ich habe mir den PCA9685 bestellt (<2€/Stk.), aber mangels Hardware noch nichts damit gemacht. Das ist ein 16-kanaliger LED-Controller mit 12-Bit-PWM und I²C-Bus. An dessen Push-Pull-Ausgänge kann man direkt FETs anschließen. Der arbeitet mit einem internen Takt, kann aber bei Bedarf auch einen externen annehmen. Der Nachteil von dem Teil ist das TSSOP28-Gehäuse. Für DIL brauchst du da einen Adapter.
Benutzeravatar
Chaoskreator
Beiträge: 943
Registriert: Mo 12. Aug 2013, 20:58
Wohnort: 92xxx

Re: robuster LED-Controller gesucht

Beitrag von Chaoskreator »

Das blöde ist oft, dass es schöne neue ICs gibt, nur dass es die so gut wie immer nur in SMD oder gar BGA gibt und nicht in DIL. Das wird sicherlich in Zukunft nicht besser werden...
Ich hatte SMD gemieden wie der Teufel das Weihwasser, aber was will man machen. Moderne ICs sind halt doch oft sehr praktisch und da krümme ich mir dann doch mal das Kreuz und löte direkt vor der Nase die Bauteile auf.

Einen Tipp am Rande: Wenn ich ICs suche, nutze ich immer die Seite von Digikey. Da kann man schön halbwegs sinnvoll Parameter auswählen, nicht wie z.B. bei Conrad oder oder Reichelt.
Benutzeravatar
Weisskeinen
Beiträge: 3950
Registriert: Di 27. Aug 2013, 16:19

Re: robuster LED-Controller gesucht

Beitrag von Weisskeinen »

Chaoskreator hat geschrieben: Moderne ICs sind halt doch oft sehr praktisch und da krümme ich mir dann doch mal das Kreuz und löte direkt vor der Nase die Bauteile auf.
Höheren Tisch oder niedrigeren Stuhl bauen? :P
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: robuster LED-Controller gesucht

Beitrag von xoexlepox »

Chaoskreator hat geschrieben:Ich hatte SMD gemieden wie der Teufel das Weihwasser, aber was will man machen.
Ich auch, bis ich meine ersten Experimente mit Widerständen (erst "1206", dann "0805") angestellt habe... Mit viel!! Licht und einem guten "Optikverstärker" wirst du auch den "Draht dazu" finden. Bei den Chips mit "rundherum 100 Pins" hört es (momentan) bei mir auf, aber *einen* davon habe auch ich schon erfolgreich "bearbeitet"... Und brenn' dir nicht die Nase am Lötkolben an ;)
Antworten