Ik ben een embedded software engineer die in zijn vrije tijd wat met leds prutst. Vooral high power RGB leds vind ik erg leuk en ik ben dan ook al een tijdje op zoek naar een leuk Arduino shield om een flinke peut licht te kunnen aansturen
Ik wilde mijn woonkamer wat oppimpen met een RGB led lamp.
Waarom geen kant en klare lamp? Ik ben nou eenmaal een tweaker, ik wil dus volledige controle over mijn platform hebben. Daarnaast wilde ik iets leren, dus dat betekend dat ik niet voor een kant en klare oplossing ben gegaan. Mijn oplossing moest < 50 euro kosten en het resulaat moet door iedereen met een soldeerbout en wat doorzettings vermogen in elkaar te sleutelen zijn.
Er zijn allerlei shields in de handel, maar deze zijn vaak prijzig en gericht op 3 Watt RGB leds. Ik wilde zowiezo meer vermogen (lieft 5 of zelfs 10 Watt).
Natuurlijk had ik zelf een shield kunnen ontwikkelen, echter kom je dan al snel bij de buck converters uit die vrijwel allemaal smd zijn. Dit is niet echt iets wat de gemiddelde hobbyist thuis kan maken. Standaard led drivers hebben niet allemaal een PWM (dim) functionaliteit en ook hier is meer dan 5 Watt moeilijk te vinden. Vind je een driver die wel voldoet, dan ben je alleen voor de rgb driver met led al bijna 50 euro kwijt, daarnast heb je ook nog een arduino en behuizing nodig en zul je iets van koeling moeten hebben...
Mijn favoriete site had echter een mooi alternatief. Een 10 Watt RGB floodlight:

http://www.dealextreme.co...oller-black-85-265v-51734
(29 euro inclusief shipping).
Voor 29 euro durfde ik de sprong wel te wagen, en 5 weken later (Chinees Nieuwjaar zat ertussen) lag de deal
extreme lamp te pronken bij mij op tafel.

Nu was ik al vrij bekend met de infrarood sturing die er standaard bij zat. Ik heb ooit eens wat e27 peertjes
en ledstrips gekocht met dezelfde besturing. Ik wist dus al hoe crappy deze waren, en mijn doel was dan ook
om zo snel mogelijk de interne microcontroller te omzeilen en enkel de driver van de lamp te gaan gebruiken.
Als ik 3 pwm kanalen uit de lamp kan krijgen, dan kan ik die weer met mijn Arduino aansturen. Ik heb dan een betaalbare bulk licht, waarop ik op elke mogelijke manier kan interfacen (serieel, infrarood, rf, bluetooth, ethernet, etc, etc).
Aangezien de stekker aan de lamp van een soort was die ik nog nooit had gezien en ik deze zonder slijptol niet in een nederlands stopcontact kon krijgen, moest ik zowiezo de lamp open gaan schroeven. Gelukkig hebben we hier niet met een apple product te maken waar je met zuignappen aan de slag moet, een simpele kruiskop schroevendraaier geeft het volgende resultaat:

Nu zien we waarom de chinezen voor dit geld een lamp kunnen maken, en hem ook nog eens winstgevend kunnen verkopen!
Het voedingsgedeelte is een standaard led stroom driver die van 220V AC een 12V gelijkspanning maakt. De stroom die deze leddriver kan leveren is 900mA. Deze waarde is vrij goed te beredeneren, als je gaat kijken naar de led die is gebruikt in deze lamp.

http://www.dealextreme.co...emitter-metal-plate-66291
Een led is een stroomgestuurd component. Dat betekend dat er meestal een constante stroom word aangeboden en er dus ook een bepaald voltage over de led heen valt. Dit voltage ligt tussen een beneden en boven grens en word ook wel forward voltage genoegd. Bij leds is het echter de stroom die belangrijk is.
Als we eens kijken dan zien we dat deze led 350mA per kleur mag krijgen. As we nu naar het voltage per kleur kijken, dan zien we iets raars. Schijnbaar moet het rode kanaal een lagere spanning krijgen dan het groene en blauwe kanaal. Dit is eigenlijk altijd zo en heeft te maken met de samenstelling van een rode led.
Al met al, word er dus door onze stroombron 900mA geleverd. Iets zegt mij dat deze stroom verdeeld zal worden over 3 leds. De afzondelijke kleuren krijgen dus elk 300mA. In theorie zou de lamp dus nog feller kunnen branden, echter is het verschil tussen 300mA en 350mA niet zo groot. De leds reageren namelijk niet lineair op stroom toename en het 'laatste beetje' voegt niet meer zoveel toe (voornamelijk extra warmte die allemaal gedissipeerd moet worden).
Ok, we snappen nu de stroombron en we weten ongeveer wat voor led dat er gebruikt word. Tijd om naar de driver te gaan kijken. Dit is het interessanste deel voor ons, omdat hier aanpassingen in gemaakt moeten worden om er een Arduino op te kunnen connecten.
Voorkant

Achterkant

Hmm, er vallen meteen wat zaken op. Er worden 3 flinke vermogensweerstanden gebruikt, er zitten 2 ic's op het printje, er zit een standaard 5 volt voedingscircuitje op en onze chinese vrienden waren zo vriendelijk om aardig wat (leesbare) informatie op de print te plaatsen.
Nu hebben we al meteen een groot succes, al weten we nog niet welke van de 2 ic's de microcontroller is, ze draaien in ieder geval op 5 volt. Dat betekend dat we arduino kunnen voeden vanaf deze print!
Het voedingscircuit bevat namelijk een 7805 die de 12V uit de stroom driver omlaag brengt naar een gestabilizeerde 5V. Dit is perfect voor onze arduino, en nog mooier is dat er pads op het pcb zitten waar gnd en 5v op naar buiten komen.
Aangezien ik de IR signalen niet meer ga gebruiken de komende tijd desoldeer ik deze als eerste en gebruik ik de pads om in ieder geval de gnd aan mijn arduino te knopen (ik power nu nog vanuit USB, maar ook vanaf de 5V pad kan ik prima mijn arduino voeden).
We zijn nu aanbeland bij het belangrijkste en lastigste stuk. We willen 3 pwm pinnen van de arduino gaan gebruiken om de rood-groen-blauwe kanalen te gaan schakelen. Echter, moeten we eerst ontdekken hoe de led sturing bedacht is door onze chinese vrienden.
Het eerste wat opvalt zijn deze enorme weerstanden. Dat betekend dat er door deze weerstanden een flinke stroom loopt, en deze waarschijnlijk in serie met de 3 kleur kanalen zitten. Dit kunnen we verifieren door te kijken naar de weerstanden. Het rode kanaal zal een hogere spanningsval hebben dan het groene en het blauwe kanaal, dat betekend dat er 2 weerstanden gelijk zijn en 1 weerstand een andere waarde heeft. Als we kijken dan zien we dat dit inderdaad het geval is! (10 Ohm en 20 Ohm) We zitten dus op de goede weg...
Het volgende zijn de fets. Deze hebben een gate, source en drain. Deze dingen functioneren als een soort kraan. Je kunt door een kleine spanning aan te bieden op de gate, de drain open zetten, waardoor de stuurspanning op de source ook uit de drain komt. In onze toepassing (PWM) zal de gate geschakeld worden tussen volledig dicht, of volledig open. Om de gate te kunnen schakelen, moet er een spanningsval zijn over de gate, en dit word meestal met een voorschakelweerstand gedaan. Deze voorschakelweerstand hangt aan een punt aan een microcontroller een aan een ander punt aan massa. Op het moment dat de microcontroller een pen hoog maakt, dan zal de fet dus volledig uitgestuurd worden. Op het moment dat de microcontroller de pen laag maakt, dan zal de fet dicht blijven. Op het moment dat dit bijvoorbeeld 1000x per seconde gedaan word dan spreek je van PWM en kun je een led gaan dimmen.
We weten nu dus ook hoe de driver werkt en waar we op moeten gaan connecten met onze Arduino. Toch is er nog 1 probleem. We kunnen niet gewoon 3 draden aansluiten, want zit nog steeds een microcontroller verbonden met de leddriver. Nu zouden we deze spoortjes door kunnen krassen, maar ik wilde eens iets nieuws proberen: gitaarsnaren

Door een dunne E snaar van een gitaar (*pling*) onder het ic te steken kun je kracht op alle pootjes tegelijk uitoefenen. De truuk is nu om eerst alle pootjes nog wat extra te vertinnen. Door de extra tin, duurt het namelijk langer voordat een soldering is afgekoeld en heb je meer kans dat alle pinnetjes tegelijk nog vloeibaar zijn. Op het moment dat je dan wat kracht op het snaartje zit, dan til je zo een kant van het IC van het pcb af. Dit gaat op deze manier vrij simpel en zonder al te veel stuk te maken.


Ok, we zijn nu klaar om onze verbindingen voor de Arduino te gaan maken. We hadden al een ground draad, en we hebben nu nog 3 pwm kanalen nodig. Ik heb besloten om op de weerstanden te solderen. Het vlak was hier het grootste. Ik had het natuurlijk ook op de plek van IC kunnen doen, maar hier zaten 2 kanalen naast elkaar en de spacing was zo klein dat ik het thuis met mijn blokker-soldeerbout onmogelijk voor elkaar had gekregen

Zo, en dan nu even snel een testje. Uiteraard had ik de lamp al getest met de IR afstandsbediening en heb ik hardleers ondervonden dat je *NIET* en ik herhaal *NIET* vol in deze lampen moet kijken. (Het is overigens wel een mooi alternatief voor paddo's, je zit minimaal een uur 9 puntjes op elke witte muur
)
Ik ben begonnen met een super simpele Arduino sketch. Deze zet het rode kanaal voor 1% aan.
Aangezien deze sketch zo eenvoudig is denk ik niet dat er uitleg nodig is, toch?

Mooi, nu kan de lamp weer dicht en ben ik weer in mijn comfort-zone: software
Aangezien we nu een goed ondersteund (open source) hardware platform hebben dat onze lamp bestuurd is er een enorm scala aan mogelijkheden mogelijk. Connect bijvoorbeeld een ethernet shield om de lamp via http kunnen besturen. Hang er een bluetooth module aan om vanaf een telefoon de lamp kunnen besturen. Hang er een condensator microfoon aan om een moderne variant op "the clapper" te kunnen maken... de mogelijkheden zijn nu enkel begrenst door wat jullie allemaal kunnen bedenken
Een kleine impressie van de floodlight op volle kracht

Uiteraard houd het hier niet op. Ik heb de IR receiver nog liggen en deze gaat weer gewoon gebruikt worden. Er zijn tal van Arduino libs die IR codes kunnen inlezen, dus de afstandsbediening kan straks ook weer gewoon worden gebruikt. Echter, ik ga eerst een progamma schrijven dat met een mooie interface de lamp wat kleurtjes kan geven.
Ook kan de arduino makkelijk vervangen worden door een Jeenode. Dit is een Arduino met een RFM12b transceiver, zodat de lamp meteen draadloos te sturen is. Misschien dat dit de domotica fans ook wel aanspreekt...
Waarom geen kant en klare lamp? Ik ben nou eenmaal een tweaker, ik wil dus volledige controle over mijn platform hebben. Daarnaast wilde ik iets leren, dus dat betekend dat ik niet voor een kant en klare oplossing ben gegaan. Mijn oplossing moest < 50 euro kosten en het resulaat moet door iedereen met een soldeerbout en wat doorzettings vermogen in elkaar te sleutelen zijn.
Er zijn allerlei shields in de handel, maar deze zijn vaak prijzig en gericht op 3 Watt RGB leds. Ik wilde zowiezo meer vermogen (lieft 5 of zelfs 10 Watt).
Natuurlijk had ik zelf een shield kunnen ontwikkelen, echter kom je dan al snel bij de buck converters uit die vrijwel allemaal smd zijn. Dit is niet echt iets wat de gemiddelde hobbyist thuis kan maken. Standaard led drivers hebben niet allemaal een PWM (dim) functionaliteit en ook hier is meer dan 5 Watt moeilijk te vinden. Vind je een driver die wel voldoet, dan ben je alleen voor de rgb driver met led al bijna 50 euro kwijt, daarnast heb je ook nog een arduino en behuizing nodig en zul je iets van koeling moeten hebben...
Mijn favoriete site had echter een mooi alternatief. Een 10 Watt RGB floodlight:

http://www.dealextreme.co...oller-black-85-265v-51734
(29 euro inclusief shipping).
Voor 29 euro durfde ik de sprong wel te wagen, en 5 weken later (Chinees Nieuwjaar zat ertussen) lag de deal
extreme lamp te pronken bij mij op tafel.

Nu was ik al vrij bekend met de infrarood sturing die er standaard bij zat. Ik heb ooit eens wat e27 peertjes
en ledstrips gekocht met dezelfde besturing. Ik wist dus al hoe crappy deze waren, en mijn doel was dan ook
om zo snel mogelijk de interne microcontroller te omzeilen en enkel de driver van de lamp te gaan gebruiken.
Als ik 3 pwm kanalen uit de lamp kan krijgen, dan kan ik die weer met mijn Arduino aansturen. Ik heb dan een betaalbare bulk licht, waarop ik op elke mogelijke manier kan interfacen (serieel, infrarood, rf, bluetooth, ethernet, etc, etc).
Aangezien de stekker aan de lamp van een soort was die ik nog nooit had gezien en ik deze zonder slijptol niet in een nederlands stopcontact kon krijgen, moest ik zowiezo de lamp open gaan schroeven. Gelukkig hebben we hier niet met een apple product te maken waar je met zuignappen aan de slag moet, een simpele kruiskop schroevendraaier geeft het volgende resultaat:

Nu zien we waarom de chinezen voor dit geld een lamp kunnen maken, en hem ook nog eens winstgevend kunnen verkopen!
Het voedingsgedeelte is een standaard led stroom driver die van 220V AC een 12V gelijkspanning maakt. De stroom die deze leddriver kan leveren is 900mA. Deze waarde is vrij goed te beredeneren, als je gaat kijken naar de led die is gebruikt in deze lamp.

http://www.dealextreme.co...emitter-metal-plate-66291
Een led is een stroomgestuurd component. Dat betekend dat er meestal een constante stroom word aangeboden en er dus ook een bepaald voltage over de led heen valt. Dit voltage ligt tussen een beneden en boven grens en word ook wel forward voltage genoegd. Bij leds is het echter de stroom die belangrijk is.
Als we eens kijken dan zien we dat deze led 350mA per kleur mag krijgen. As we nu naar het voltage per kleur kijken, dan zien we iets raars. Schijnbaar moet het rode kanaal een lagere spanning krijgen dan het groene en blauwe kanaal. Dit is eigenlijk altijd zo en heeft te maken met de samenstelling van een rode led.
Al met al, word er dus door onze stroombron 900mA geleverd. Iets zegt mij dat deze stroom verdeeld zal worden over 3 leds. De afzondelijke kleuren krijgen dus elk 300mA. In theorie zou de lamp dus nog feller kunnen branden, echter is het verschil tussen 300mA en 350mA niet zo groot. De leds reageren namelijk niet lineair op stroom toename en het 'laatste beetje' voegt niet meer zoveel toe (voornamelijk extra warmte die allemaal gedissipeerd moet worden).
Ok, we snappen nu de stroombron en we weten ongeveer wat voor led dat er gebruikt word. Tijd om naar de driver te gaan kijken. Dit is het interessanste deel voor ons, omdat hier aanpassingen in gemaakt moeten worden om er een Arduino op te kunnen connecten.
Voorkant

Achterkant

Hmm, er vallen meteen wat zaken op. Er worden 3 flinke vermogensweerstanden gebruikt, er zitten 2 ic's op het printje, er zit een standaard 5 volt voedingscircuitje op en onze chinese vrienden waren zo vriendelijk om aardig wat (leesbare) informatie op de print te plaatsen.
Nu hebben we al meteen een groot succes, al weten we nog niet welke van de 2 ic's de microcontroller is, ze draaien in ieder geval op 5 volt. Dat betekend dat we arduino kunnen voeden vanaf deze print!
Het voedingscircuit bevat namelijk een 7805 die de 12V uit de stroom driver omlaag brengt naar een gestabilizeerde 5V. Dit is perfect voor onze arduino, en nog mooier is dat er pads op het pcb zitten waar gnd en 5v op naar buiten komen.
Aangezien ik de IR signalen niet meer ga gebruiken de komende tijd desoldeer ik deze als eerste en gebruik ik de pads om in ieder geval de gnd aan mijn arduino te knopen (ik power nu nog vanuit USB, maar ook vanaf de 5V pad kan ik prima mijn arduino voeden).
We zijn nu aanbeland bij het belangrijkste en lastigste stuk. We willen 3 pwm pinnen van de arduino gaan gebruiken om de rood-groen-blauwe kanalen te gaan schakelen. Echter, moeten we eerst ontdekken hoe de led sturing bedacht is door onze chinese vrienden.
Het eerste wat opvalt zijn deze enorme weerstanden. Dat betekend dat er door deze weerstanden een flinke stroom loopt, en deze waarschijnlijk in serie met de 3 kleur kanalen zitten. Dit kunnen we verifieren door te kijken naar de weerstanden. Het rode kanaal zal een hogere spanningsval hebben dan het groene en het blauwe kanaal, dat betekend dat er 2 weerstanden gelijk zijn en 1 weerstand een andere waarde heeft. Als we kijken dan zien we dat dit inderdaad het geval is! (10 Ohm en 20 Ohm) We zitten dus op de goede weg...
Het volgende zijn de fets. Deze hebben een gate, source en drain. Deze dingen functioneren als een soort kraan. Je kunt door een kleine spanning aan te bieden op de gate, de drain open zetten, waardoor de stuurspanning op de source ook uit de drain komt. In onze toepassing (PWM) zal de gate geschakeld worden tussen volledig dicht, of volledig open. Om de gate te kunnen schakelen, moet er een spanningsval zijn over de gate, en dit word meestal met een voorschakelweerstand gedaan. Deze voorschakelweerstand hangt aan een punt aan een microcontroller een aan een ander punt aan massa. Op het moment dat de microcontroller een pen hoog maakt, dan zal de fet dus volledig uitgestuurd worden. Op het moment dat de microcontroller de pen laag maakt, dan zal de fet dicht blijven. Op het moment dat dit bijvoorbeeld 1000x per seconde gedaan word dan spreek je van PWM en kun je een led gaan dimmen.
We weten nu dus ook hoe de driver werkt en waar we op moeten gaan connecten met onze Arduino. Toch is er nog 1 probleem. We kunnen niet gewoon 3 draden aansluiten, want zit nog steeds een microcontroller verbonden met de leddriver. Nu zouden we deze spoortjes door kunnen krassen, maar ik wilde eens iets nieuws proberen: gitaarsnaren

Door een dunne E snaar van een gitaar (*pling*) onder het ic te steken kun je kracht op alle pootjes tegelijk uitoefenen. De truuk is nu om eerst alle pootjes nog wat extra te vertinnen. Door de extra tin, duurt het namelijk langer voordat een soldering is afgekoeld en heb je meer kans dat alle pinnetjes tegelijk nog vloeibaar zijn. Op het moment dat je dan wat kracht op het snaartje zit, dan til je zo een kant van het IC van het pcb af. Dit gaat op deze manier vrij simpel en zonder al te veel stuk te maken.


Ok, we zijn nu klaar om onze verbindingen voor de Arduino te gaan maken. We hadden al een ground draad, en we hebben nu nog 3 pwm kanalen nodig. Ik heb besloten om op de weerstanden te solderen. Het vlak was hier het grootste. Ik had het natuurlijk ook op de plek van IC kunnen doen, maar hier zaten 2 kanalen naast elkaar en de spacing was zo klein dat ik het thuis met mijn blokker-soldeerbout onmogelijk voor elkaar had gekregen

Zo, en dan nu even snel een testje. Uiteraard had ik de lamp al getest met de IR afstandsbediening en heb ik hardleers ondervonden dat je *NIET* en ik herhaal *NIET* vol in deze lampen moet kijken. (Het is overigens wel een mooi alternatief voor paddo's, je zit minimaal een uur 9 puntjes op elke witte muur
Ik ben begonnen met een super simpele Arduino sketch. Deze zet het rode kanaal voor 1% aan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #define PIN_RED 9 #define PIN_GREEN 10 #define PIN_BLUE 11 void setup() { pinMode( PIN_RED, OUTPUT ); pinMode( PIN_GREEN, OUTPUT ); pinMode( PIN_BLUE, OUTPUT ); analogWrite( PIN_RED, 1 ); analogWrite( PIN_GREEN, 0 ); analogWrite( PIN_BLUE, 0 ); } void loop() { } |
Aangezien deze sketch zo eenvoudig is denk ik niet dat er uitleg nodig is, toch?

Mooi, nu kan de lamp weer dicht en ben ik weer in mijn comfort-zone: software
Aangezien we nu een goed ondersteund (open source) hardware platform hebben dat onze lamp bestuurd is er een enorm scala aan mogelijkheden mogelijk. Connect bijvoorbeeld een ethernet shield om de lamp via http kunnen besturen. Hang er een bluetooth module aan om vanaf een telefoon de lamp kunnen besturen. Hang er een condensator microfoon aan om een moderne variant op "the clapper" te kunnen maken... de mogelijkheden zijn nu enkel begrenst door wat jullie allemaal kunnen bedenken
Een kleine impressie van de floodlight op volle kracht

Uiteraard houd het hier niet op. Ik heb de IR receiver nog liggen en deze gaat weer gewoon gebruikt worden. Er zijn tal van Arduino libs die IR codes kunnen inlezen, dus de afstandsbediening kan straks ook weer gewoon worden gebruikt. Echter, ik ga eerst een progamma schrijven dat met een mooie interface de lamp wat kleurtjes kan geven.
Ook kan de arduino makkelijk vervangen worden door een Jeenode. Dit is een Arduino met een RFM12b transceiver, zodat de lamp meteen draadloos te sturen is. Misschien dat dit de domotica fans ook wel aanspreekt...
"Honey, you think KFC is still open?" - Frank the tank / old school the movie