10W RGB floodlight + Arduino

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • djteddy
  • Registratie: Juli 2002
  • Laatst online: 13-10-2024

djteddy

We're going streaking!

Topicstarter
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:
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led1.jpg
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.
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led3.jpg

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:
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led4.jpg

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.
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led2.jpg
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
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led5.jpg

Achterkant
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led6.jpg

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
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led7.jpg

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.

Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led8.jpg
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led9.jpg

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 ;)

Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led10.jpg

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?

Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led11.jpg

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 ;)
Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led12.jpg

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


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Natuurlijk had ik zelf een shield kunnen ontwikkelen, echter kom je dan al snel bij de buck converters uit die vrijwel allemaal smd zijn.
Dat begrijp ik niet, je koopt toch gewoon een standaard 12V adapter voor 3x niks en die gebruik je als voeding, met een 7805 als voeding voor je Arduino?

Het is een leuk project zo geworden hoor, maar van je eerste stuk krijg ik het idee dat het probleem voor jou vooral was om de driver te maken, en de driver die je nu hebt bestaat uit 3 transistoren en 3 weerstanden, dat was je zelf ook nog wel gelukt. Al heb je op deze manier wel direct ook de RGB LEDs erbij in een behuizing.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 08:57
Leuk knutselprojectje d:)b

Acties:
  • 0 Henk 'm!

  • djteddy
  • Registratie: Juli 2002
  • Laatst online: 13-10-2024

djteddy

We're going streaking!

Topicstarter
furby-killer schreef op zondag 05 februari 2012 @ 23:24:
Het is een leuk project zo geworden hoor, maar van je eerste stuk krijg ik het idee dat het probleem voor jou vooral was om de driver te maken, en de driver die je nu hebt bestaat uit 3 transistoren en 3 weerstanden, dat was je zelf ook nog wel gelukt. Al heb je op deze manier wel direct ook de RGB LEDs erbij in een behuizing.
Klopt helemaal, been there, done that.

Afbeeldingslocatie: http://www.teuben.info/tweakers.net/led13.jpg

Probleem is een beetje, dat als je behuizing en voeding etc ook nog erbij gaat rekenen dat je dan ver over mijn budget heen gaat (50 euro), en ik wilde een beetje een mooie behuizing etc hebben omdat het in het zicht komt te liggen...

Deze oplossing was zo enorm simpel en ik dacht, kom, laat ik het eens delen met de community ;)

"Honey, you think KFC is still open?" - Frank the tank / old school the movie


Acties:
  • 0 Henk 'm!

  • Nextron
  • Registratie: Maart 2005
  • Laatst online: 02:35

Nextron

Ik weet dat ik niets weet

Aangezien mijn Arduino deze week is binnengekomen en een ledstrip al wat langer geleden, heb ik geboeid gelezen.

Alleen drie dingen:
  • AnalogWrite heeft een bereik van 256. Dus AnalogWrite(pin,1) zou ongeveer 0.4% vermogen zijn. Hier weinig verschil maar wel wanneer je met AnalogWrite(pin,100) vol vermogen verwacht.
  • De foto van de lamp op vol vermogen, is het echt zo blauw/paars of is dat een afwijkende witbalans van de foto?
  • Plaats je uiteindelijk alleen de ATmegachip of de hele Arduino in de behuizing?

Hoe meer ik weet,
hoe meer ik weet,
dat ik niets weet.


Acties:
  • 0 Henk 'm!

  • djteddy
  • Registratie: Juli 2002
  • Laatst online: 13-10-2024

djteddy

We're going streaking!

Topicstarter
Nextron schreef op maandag 06 februari 2012 @ 00:23:
Alleen drie dingen:
  • AnalogWrite heeft een bereik van 256. Dus AnalogWrite(pin,1) zou ongeveer 0.4% vermogen zijn. Hier weinig verschil maar wel wanneer je met AnalogWrite(pin,100) vol vermogen verwacht.
  • De foto van de lamp op vol vermogen, is het echt zo blauw/paars of is dat een afwijkende witbalans van de foto?
  • Plaats je uiteindelijk alleen de ATmegachip of de hele Arduino in de behuizing?
- Het is inderdaad 0,4%, je stuurt van 0 - 255 ( 0x00 - 0xff ).
- De foto heeft inderdaad tegen de bar wat paars licht, maar dit komt uit een andere led lamp. De kleur tegen de muur is ook zoals het in het echt is: blauw. Zeker de primaire kleuren (rood, groen, blauw) zijn prima en bij mengkleuren zie je soms aan de randen van een schaduw wat "bleeding" van primaire kleuren. Over het algemeen mengt hij best goed.
- Ik heb een arduino nano mee besteld bij dx. Deze wil ik in de lamp gaan plaatsen, samen met een seriele bluetooth module. Echter, de behuizing is van metaal en ik denk dat ik een kooi van farraday om mijn rf module heen plaats, maar dit moet ik even testen. In het ergste geval vacuum trek ik een plastic achterkant, daar komen de rf signalen zeker door heen.

"Honey, you think KFC is still open?" - Frank the tank / old school the movie

Pagina: 1