IKEA MoodLight mit Seoul P5 RGB

Anleitungen für "hausgemachte" LED Projekte

Moderator: T.Hoffmann

Antworten
JeLe0310
User
User
Beiträge: 35
Registriert: Di, 04.09.07, 00:09
Wohnort: nähe Nürnberg

Mo, 10.09.07, 19:21

Ich hab mich mal dran gemacht und etwas mit einer SEOUL P5 RGB LED gebaut. Werde mir davon noch ein paar machen und dann mein Zimmer damit beleuchten.

Zunächst began es alles mit einer Lampe, Typ LOCK von Ikea für 2Euro, welche ich durch ihren sehr günstigen Preis und dem Milchglas gewählt habe.

Diese sieht zunächst einmal so aus:
2411_Image00001_1.jpg
Als erstes wurde das Innenleben entfernt und 2 Löcher für den Kühler mit der P5 gebohrt.
2411_Image00008_1.jpg
Danach habe ich einen Kühlkörper der so rum lag ein bischen modifiziert. 2 Kühlrippen mussten wegen des Abstrahlverhaltens dran glauben. Zusätzlich habe ich dann noch 4 Löcher für die P5 gebohrt und natürlich noch 2 für die Befestigung in der Lampe. Diese schön angesenkt, damit sowohl die P5 schön plan auf dem Kühlkörper aufliegt, als auch der Kühlkörper im Gehäuse.
2411_Image00009_1.jpg
2411_Image00010_1.jpg
Dann habe ich die P5 mit Senkkopfschrauben befestigt, WPS dazwischen geschmiert und die Kabel angelötet:
2411_Image00003_1.jpg
Zusammengebaut sieht das so aus :
2411_Image00002_1.jpg

Soweit mal das mechanische ;).
Angesteuert wird das ganze mit einem Atmega8, diese Sache ist noch nicht ganz zu meiner zufridenheit gelöst, da ich im moment nur feste Programm abläufe habe. Werde wohl in Zukunft dann auf DMX zurückgreifen.

ein Bild von der Bastelei, zu sehen ist eine AVR Entwicklungsplatine sowie eine Erweiterungsplatine mit 4 Treibern, wovon nur 3 verwendet werden. Das ganze habe ich dann an ein PC Netzteil angeschlossen, wie der Experte am MOLEX Stecker sehen kann ;).
2411_Image00007_1.jpg
Die Treiberschaltung habe ich mir von Roboternetz geklaut, weil mir diese am günstigsten und brauchbarsten erschien. Habe einen Widerstand von 1,5Ohm gewählt. Nach Messungen fällt bei meinen BIPS an UBE 0,55-0,5V unter Last ab. somit habe ich einen Strom von ca 375mA durch die LEDs.
2411_stromquelle_111_1.jpg
Als Programm habe ich in den Atmega8 einfach nur mal einen Farbverlauf einprogrammiert, welches somit das Moodlicht macht. Das packe ich heir der Vollständigkeit halber mal mit rein ;).
Grundsätzlich werden die 3 PWM Timer des Atmel initialisiert und dann die Farben per PWM einzeln hoch-, bzw runtergefahren. In Summe habe ich wegen der Helligkeit immer den Wert 255 genommen.

Code: Alles auswählen


/*
RGB v0.1
*/



#define     Ledport             PORTB
#define     R               	   PB1			
#define     G                	   PB2			
#define     B                	   PB3			
#define     R_PWM                  OCR2	
#define     G_PWM                  OCR1A	
#define     B_PWM                  OCR1B	
	


#include <avr>
#include <util>
#include <stdint>

int my_delay(void);


int main(void)
{
//PB3-PB0 als Ausgang
DDRB |=  (1 << PB3);
DDRB |=  (1 << PB2);
DDRB |=  (1 << PB1);
DDRB |=  (1 << PB0);

PORTB &= ~(1 << PB3);
PORTB &= ~(1 << PB2);
PORTB &= ~(1 << PB1);
PORTB &= ~(1 << PB0);

//*********************8 Bit Counter ****************
//CLK / 64
TCCR2 &= ~(1 << CS22);
TCCR2 |=  (1 << CS21);
TCCR2 |=  (1 << CS20);

//FOC2 muss 0 sein
TCCR2 &= ~(1 << FOC2);	

//8Bit PWM
TCCR2 &= ~(1 << WGM21);
TCCR2 |=  (1 << WGM20);


//noninvert PWM
TCCR2 |=  (1 << COM21);
TCCR2 &= ~(1 << COM20);


TCNT2 =0;

//*********************16 Bit Counter ****************

//CLK / 64
TCCR1B &= ~(1 << CS12);
TCCR1B |=  (1 << CS11);
TCCR1B |=  (1 << CS10);

//FOC2 muss 0 sein
TCCR1A &= ~(1 << FOC1A);	
TCCR1A &= ~(1 << FOC1B);	

//8Bit PWM
TCCR1A &= ~(1 << WGM11);
TCCR1A |=  (1 << WGM10);

//noninvert PWM
TCCR1A |=  (1 << COM1A1);
TCCR1A &= ~(1 << COM1A0);

//noninvert PWM
TCCR1A |=  (1 << COM1B1);
TCCR1A &= ~(1 << COM1B0);


TCNT1H = 0;
TCNT1L = 0;

//COUNTER0
//CLK / 64
TCCR0 |=  (1 << CS02);
TCCR0 &=  ~(1 << CS01);
TCCR0 |=  (1 << CS00);
TCNT0 =0;


volatile uint8_t i;
	
while(1)
	{
	
	for (i=0;i<255;i++)
		{
		B_PWM=i;
		R_PWM=(254-i);
		my_delay();
		}

	for (i=0;i<255;i++)
		{
		G_PWM=i;
		B_PWM=(254-i);
		my_delay();
		}
		
	for (i=0;i<255;i++)
		{
		R_PWM=i;
		G_PWM=(254-i);
		my_delay();
		}
	}
}

int my_delay(void)
{
_delay_ms(100);
_delay_ms(100);
_delay_ms(100);
_delay_ms(100);
_delay_ms(100);

}



Zuletzt noch wie das ganze Aussieht. Sehr schön ist die Streung durch das Milchglas zu sehen. Wenn man nicht weiß, das eine P5 drin ist, würde man es nicht erahnen ;).
Rot
2411_Image00006_1.jpg
Grün
2411_Image00005_1.jpg
Blau
2411_Image00004_1.jpg
Natürlich funktionieren auch alle Zwischen farben, jedoch habe ich auf diese Bilder verzichtet.

Man könnte das ganze denke ich mal sogar komplett in die Lampe mit integrieren, der Platz sollte genug sein. Die Development Board Lösung ist nicht für den täglichen Einsatz gedacht.

Hoffe es war verständlich genug beschrieben, neige sehr gerne dazu Sachen nicht zu erwähnen. Wenn es Fragen gibt, dann einfach posten.
Spyder24
Super-User
Super-User
Beiträge: 97
Registriert: Di, 26.06.07, 17:14
Wohnort: Leipzig

Mo, 10.09.07, 20:27

Hast du sehr schön gemacht. Endlich mal eim RGB-Atmel-Programm, welches in C geschrieben ist. Das werde ich mir bei Gelegenheit mal zuführen.

Gruß Spyder24
JeLe0310
User
User
Beiträge: 35
Registriert: Di, 04.09.07, 00:09
Wohnort: nähe Nürnberg

Mo, 10.09.07, 20:44

Ist noch sehr verbesserungswürdig, aber funzt grundlegend schon mal ;)
Benutzeravatar
Sailor
Moderator
Beiträge: 9427
Registriert: Di, 28.11.06, 22:16
Wohnort: Saarland, Deutschland und die Welt

Di, 11.09.07, 21:33

Wenn Ikea wüsste, was man für schöne Sachen aus den Lampen machen kann ...

Es ist schon verblüffend, welche Leis die P5 bringt!

100 Credits für das How²!
JeLe0310
User
User
Beiträge: 35
Registriert: Di, 04.09.07, 00:09
Wohnort: nähe Nürnberg

Di, 11.09.07, 21:46

Ja, war auch ganz verblüfft von der Lichtausbeute. Das ich dabei von einer schlecht gelötete P5 das Rot dabei geschrottet hab, weil ich aus dummheit diese direkt an 5V 20A angeshclossen haben, will ich mal nicht sagen :(. Werde mal sehn was da noch für potential drin steckt, wenn ich wieder etwas Zeit habe.
Hatte auch schon mal überlegt, noch eine Weisse LED zu integrieren, weil das weiss von der P5 ja nich so dolle aussieht. DMX würde mich ja noch brennenden interessiern :)
Danke für die Credits Sailor.
luckylu1
Hyper-User
Hyper-User
Beiträge: 1405
Registriert: So, 29.04.07, 05:11
Wohnort: berlin

Mi, 12.09.07, 00:15

so ein mist, die gleiche lampe hab ich gestern bei lidl für 3,99€ gekauft, na gut, ich hab das benzin gespart Lol
die strombegrenzerschaltung hab ich vor einiger zeit hier schon mal vorgestellt.....
und von der programmierung hab ich immer noch keinen schimmer, bräuchte mal nen tip womit man da anfängt, könnte ja etwas einfaches sein.......
synvox
Mega-User
Mega-User
Beiträge: 147
Registriert: Fr, 27.04.07, 04:40
Wohnort: Schweiz

Mi, 12.09.07, 01:36

Hatte auch schon mal überlegt, noch eine Weisse LED zu integrieren, weil das weiss von der P5 ja nich so dolle aussieht.
Das Weiss einer P5 kann prinzipiell sogar besser aussehen, als das Weiss fast jeder weissen LED, da die Spektralverteilung mit Rot, Grün und Blau homogener eingestellt werden kann, als es bei weissen LEDs der Fall ist. Wichtig ist allerdings eine gute Farbmischung (mit entsprechenden Diffusoren) und die Einstellung der Farbanteile. Bei dir ist wahrscheinlich vor allem der fehlende, innere Diffusor der Grund für eine inhomogene Farbmischung, da ja bei dir der Lampenschirm die einzige Diffusionsfläche bildet und du somit auf dem Lampenschirm selbst noch keine schöne, homogene Farbmischung erreichst. Du könntest zum Beispiel zusätzlich den ganzen Kühlkörper mit einem Bogen aus Diffusionsfolie (sieht aus wie Butterbrotpapier) überdecken oder dir eine Halbkugel aus diesen popeligen, überall billig erhältlichen China-RGB-Farbwechsler-Kugeln aus softem, weiss-transluzenten Kunststoff (so ca 50 - 60 mm Durchmesser. Conrad bietet z.Bsp. welche für ca. 3€ an) schneiden, und über der P5 ankleben. Bei der Variante Diffusionsfolie würde ich für eine optimale Farbmischung sogar noch zusätzlich zur Folie über dem Kühlkörper ein Stück Diffusionsfolie direkt auf das Fenster der P5 kleben. Bei der Variante Kunststoffkugel sollte diese als Diffusor eigentlich ausreichen.

Zum Weissabgleich kannst du dann so vorgehen: Grün auf Maximum, dann Rot hinzumischen, bis ein sattes Gelb (ohne orange- oder grünstich) sichtbar wird, dann langsam Blau aufdrehen, bis ein schönes, neutrales Weiss zu sehen ist. Danach kannst du mit mehr Blau bzw. mehr Rot kühlere bzw. wärmere Weisstöne wie gewünscht einstellen.

Gruss
Neni
synvox
Mega-User
Mega-User
Beiträge: 147
Registriert: Fr, 27.04.07, 04:40
Wohnort: Schweiz

Mi, 12.09.07, 02:34

Noch etwas bezüglich der PWM-Treiberschaltung. Der Widerstand zum FET IRFD024 ist mit 10 kOhm etwas gar hoch dimensioniert. Dieser FET hat laut Datenblatt eine Eingangskapazität von 640 pF. Diese Kapazität bildet mit dem Widerstand zusammen einen Tiefpass, der bei 8-Bit-PWM eine maximale PWM-Frequenz von ca. 100 Hz (97 Hz) erlaubt, ohne dass die kürzesten Pulse zu verflachen beginnen. Man kann zwar mit der Frequenz höher gehen, verliert dann aber faktisch immer mehr effektive Auflösung (-> 7 Bit -> 6 Bit etc.), und 100 Hz PWM-Frequenz ist meiner Meinung nach für LED-PWM-Anwendung eine deutliche Unterschreitung des Möglichen und Erstrebenswerten, v.a. da einige Menschen bei 100 Hz doch noch ein leichtes Flackern bei indirektem Draufschauen bemerken können. Wenn du für den Widerstand 1 kOhm nimmst (den dann ca. 5 mA Maximal-Umladestrom kann ein AVR-Ausgangspin locker aufbringen), erhöhst du die PWM-Grenzfrequenz für 8-Bit Auflösung auf ca. 1 kHz, was dir deutlich mehr Spielraum für feine und glatte Farbüberblendungen ermöglicht.

Gruss
Neni
Synthy82
Hyper-User
Hyper-User
Beiträge: 1956
Registriert: Do, 05.04.07, 15:15
Wohnort: Hamburg
Kontaktdaten:

Mi, 12.09.07, 07:35

100 Hz wird vom Gehirn noch in jedem Fall wahrgenommen und müllt dieses zu! Haben damals mal Leute mit dem EEG untersucht. Wenn du das Gehirn stressfrei haben willst, musst du wesentlich höher gehen.
JeLe0310
User
User
Beiträge: 35
Registriert: Di, 04.09.07, 00:09
Wohnort: nähe Nürnberg

Mi, 12.09.07, 08:08

synvox hat geschrieben:Noch etwas bezüglich der PWM-Treiberschaltung. Der Widerstand zum FET IRFD024 ist mit 10 kOhm etwas gar hoch dimensioniert. Dieser FET hat laut Datenblatt eine Eingangskapazität von 640 pF. Diese Kapazität bildet mit dem Widerstand zusammen einen Tiefpass, der bei 8-Bit-PWM eine maximale PWM-Frequenz von ca. 100 Hz (97 Hz) erlaubt, ohne dass die kürzesten Pulse zu verflachen beginnen. Man kann zwar mit der Frequenz höher gehen, verliert dann aber faktisch immer mehr effektive Auflösung (-> 7 Bit -> 6 Bit etc.), und 100 Hz PWM-Frequenz ist meiner Meinung nach für LED-PWM-Anwendung eine deutliche Unterschreitung des Möglichen und Erstrebenswerten, v.a. da einige Menschen bei 100 Hz doch noch ein leichtes Flackern bei indirektem Draufschauen bemerken können. Wenn du für den Widerstand 1 kOhm nimmst (den dann ca. 5 mA Maximal-Umladestrom kann ein AVR-Ausgangspin locker aufbringen), erhöhst du die PWM-Grenzfrequenz für 8-Bit Auflösung auf ca. 1 kHz, was dir deutlich mehr Spielraum für feine und glatte Farbüberblendungen ermöglicht.

Gruss
Neni
arbeite im moment mit 125kHz (8MHz/64). An sowas habe ich aber absolut nicht gedacht, vorallem weil ich mit FET/BiP eh ein bißchen auf Kriegsfuß stehe. Aber, wenn ich 1/wC=R umstelle, dann komme ich auf f=1/[2(pi)*RC], bei 10k ist die Eckfrequenz somit 25kHz und bei 1k komme ich auf ~250kHz. Natürlich gilt das nur für Sinusförmigeverläufe. Aber WIE kommst du auf 100Hz ? Kann auch sein das ich mich verrechnet habe ;)
JeLe0310
User
User
Beiträge: 35
Registriert: Di, 04.09.07, 00:09
Wohnort: nähe Nürnberg

Mi, 12.09.07, 08:11

synvox hat geschrieben:
Hatte auch schon mal überlegt, noch eine Weisse LED zu integrieren, weil das weiss von der P5 ja nich so dolle aussieht.
Das Weiss einer P5 kann prinzipiell sogar besser aussehen, als das Weiss fast jeder weissen LED, da die Spektralverteilung mit Rot, Grün und Blau homogener eingestellt werden kann, als es bei weissen LEDs der Fall ist. Wichtig ist allerdings eine gute Farbmischung (mit entsprechenden Diffusoren) und die Einstellung der Farbanteile. Bei dir ist wahrscheinlich vor allem der fehlende, innere Diffusor der Grund für eine inhomogene Farbmischung, da ja bei dir der Lampenschirm die einzige Diffusionsfläche bildet und du somit auf dem Lampenschirm selbst noch keine schöne, homogene Farbmischung erreichst. Du könntest zum Beispiel zusätzlich den ganzen Kühlkörper mit einem Bogen aus Diffusionsfolie (sieht aus wie Butterbrotpapier) überdecken oder dir eine Halbkugel aus diesen popeligen, überall billig erhältlichen China-RGB-Farbwechsler-Kugeln aus softem, weiss-transluzenten Kunststoff (so ca 50 - 60 mm Durchmesser. Conrad bietet z.Bsp. welche für ca. 3€ an) schneiden, und über der P5 ankleben. Bei der Variante Diffusionsfolie würde ich für eine optimale Farbmischung sogar noch zusätzlich zur Folie über dem Kühlkörper ein Stück Diffusionsfolie direkt auf das Fenster der P5 kleben. Bei der Variante Kunststoffkugel sollte diese als Diffusor eigentlich ausreichen.

Zum Weissabgleich kannst du dann so vorgehen: Grün auf Maximum, dann Rot hinzumischen, bis ein sattes Gelb (ohne orange- oder grünstich) sichtbar wird, dann langsam Blau aufdrehen, bis ein schönes, neutrales Weiss zu sehen ist. Danach kannst du mit mehr Blau bzw. mehr Rot kühlere bzw. wärmere Weisstöne wie gewünscht einstellen.

Gruss
Neni
Ich hattte Die LEDs alle mit dem gleichen Strom betrieben, also alle ca 350mA und dabei kommt ein Weiss raus, das einen Lila Stich hat. Mit deiner Variante wäre jedoch ein sehr schönes Weiss zu erreichen, allerdings wird das relativ aufwändig, da ich das dann über PWM machen muss, weil ich bei meiner Schaltung über den Widerstand eine sehr schlechte einstellungsmöglichkeit habe. Werde ich mal bei gelegenheit probiern, danke für den Tip
Synthy82
Hyper-User
Hyper-User
Beiträge: 1956
Registriert: Do, 05.04.07, 15:15
Wohnort: Hamburg
Kontaktdaten:

Mi, 12.09.07, 09:12

Warum hast du nur eine schlechte Einstellmöglichkeit? Kannst da nicht einen Widerstand zum Grob- und dann noch mal einen kleineren zur Feinabstimmung nutzen?
synvox
Mega-User
Mega-User
Beiträge: 147
Registriert: Fr, 27.04.07, 04:40
Wohnort: Schweiz

Mi, 12.09.07, 09:27

arbeite im moment mit 125kHz (8MHz/64). An sowas habe ich aber absolut nicht gedacht, vorallem weil ich mit FET/BiP eh ein bißchen auf Kriegsfuß stehe. Aber, wenn ich 1/wC=R umstelle, dann komme ich auf f=1/[2(pi)*RC], bei 10k ist die Eckfrequenz somit 25kHz und bei 1k komme ich auf ~250kHz. Natürlich gilt das nur für Sinusförmigeverläufe. Aber WIE kommst du auf 100Hz ? Kann auch sein das ich mich verrechnet habe
An sich hast du schon richtig gerechnet, nur sind die 125 kHz die Taktrate des PWM-Zählers und nicht die PWM-Frequenz. 125 kHz bzw. 1/125 ms wäre in dem Fall eben ca. die minimale Pulsbreite eines PWM-Pulses bei den PWM-Werten 1 oder 254 (bei 8-Bit-PWM). Die PWM-Frequenz bezieht sich auf die ganze PWM-Periode (also High- und Low-Teil)und hängt demnach noch von der Bittiefe des Zählers ab. Bei 8-Bit-PWM hast du also bei 125 kHz Zählertakt 125 kHz / 256 = ca. 500 Hz PWM-Frequenz bzw. beim AVR möglicherweise auch 'nur' 250 Hz, je nachdem ob du Fast-PWM oder Phase-Correct-PWM (hier wird durch 512 geteilt, weil der Zähler rauf und dann wieder runter zählt etc.) gewählt hast. Bei Phase-Correct wäre aber auch die minimale Pulsbreite doppelt so lang (ca. 1/64 ms).

Deshalb rechne ich bei der Grenzfrequenz eben mit der gewünschten Auflösung. Bei 8-Bit teile ich die errechnete Eckfrequenz durch 256, was dann eben oben die ca. 100 bzw. 1000 Hz ergibt. D.h. dann, dass oberhalb dieser PWM-Frequenzen die kürzesten Pulse verflachen bzw. die effektive Auflösung auch durch das Abflachen der Flanken abnimmt. In deinem konkreten Fall wäre also ein 1 kOhm Widerstand angebracht, da du eine PWM-Frequenz von entweder 500 oder 250 Hz hast.

Gruss
Neni
skyglider
Mini-User
Beiträge: 1
Registriert: Do, 17.09.09, 11:54

Do, 17.09.09, 11:56

hey coole
sache.

kannst du wohl mal den schaltplan online stellen? ich würde das gerne nachbauen...

danke
Antworten