Light control Computersturing voor je verlichting

Een kleine postzegelcomputer van 2 Euro kan je gebruiken om automatisch de boordverlichting (zoals bijvoorbeeld ankerlicht) te laten inschakelen zodra het donker wordt, te laten controleren of alle lampjes het nog doen, en om de achtergrondverlichting van je schakelpaneel automatisch aan te passen aan de hoeveelheid omgevingslicht. Beschrijving van een leuk zelfbouwprojectje!

Een klein project met kleine onderdelen

Voor ons nieuwe schakelpaneel had ik mooie schakelaars uitgezocht waarin een LEDje zit achter een glaasje. Op dat glaasje kun je een doorzichtig symbooltje plakken en om het helemaal fraai te maken is het leuk als het LEDje erachter zwak brandt als de schakelaar uitstaat, en feller gaat branden zodra datgene wordt ingeschakeld. Of gaat knipperen als er een storing is.

image

Probleem was dat om de LEDjes overdag te zien ze best wel fel moesten branden, maar dat ze dan 's nachts behoorlijk verblindend waren. Er moest dus een automatische diminrichting op komen vonden we.

Verder wilden we om stroom te besparen de ankerverlichting automatisch uit laten gaan zodra de zon opkomt (en wij nog liggen te slapen). En eigenlijk leek het ons wel geinig om alle boordverlichting op die manier te automatiseren.

Oorspronkelijk had onze boot een systeem waarbij de stroom naar de lampjes werd gemeten en er een lampje uitging op het schakelpaneel als er boven in de mast of zo een lampje stuk was. Maar toen we wat gloeilampen vervingen door LED verlichting werkte dat systeem niet meer. En dat is wel jammer, want het is wel erg handig als je overdag al voor vertrek kunt controleren of de nachtverlichting naar behoren werkt.

Tijd dus om wat te knutselen. Al snel werd duidelijk dat het gebruik van een postzegelcomputer van 2 Euro het handigste en goedkoopste is. Zoals gewoonlijk loopt zo'n projectje dan wat uit de hand en wordt het allemaal wel erg geavanceerd. Uiteindelijk is het zonde als er verder niemand meer iets aan heeft, dus bij deze de bouwbeschrijving, schema en computercode.

Mogelijkheden

Eerst maar eens bespreken wat dit kleine kastje allemaal kan:

image
Arduino Pro Mini, ter vergelijk naast het bedrag dat hij kost. Met een processor op 16MHz, 32Kb geheugen en meer dan een dozijn in- en uitgangen ruimschoots voldoende voor onze taak.
Automatisch inschakelen verlichting
Er kan een onbeperkt aantal onafhankelijke kanalen worden aangesloten op het kastje. De kanalen mogen over eigen zekeringen lopen. Elk kanaal kan naar keuze uit, aan, of automatisch worden ingeschakeld. Automatisch wil zeggen dat de (instelbare) lichtsensor de verlichting bestuurt.
Controle verlichting
Er kan van vijf kanalen in de gaten worden gehouden of de betreffende verlichting daadwerkelijk werkt. Is de lamp aan, dan gaat de LED in de schakelaar aan. Als de verlichting uit hoort te zijn gaat de LED uit. Maar als de verlichting aan hoort te staan maar er niet voldoende stroom wordt afgenomen (dus: lampje stuk!) dan gaat de betreffende LED knipperen. Bovendien wordt er een alarmuitgang geactiveerd (waar je van alles aan kan hangen tot en met een sirene aan toe). Uiteraard is van ieder kanaal afzonderlijk configureerbaar hoeveel stroom er hoort te lopen.
Automatisch traploos dimmen van de schakelaarverlichting
De LEDs van de schakelaarverlichting worden automatisch traploos aangepast aan de hoeveelheid buitenlicht. Dus overdag fel genoeg om goed te kunnen zien, maar 's nachts naar een niet verblindend niveau. De maximale en minimale sterkte kunnen worden ingesteld, evenals bij welke omgevingslichtsterkten deze maximale en minimale waarden moeten worden gekozen. De tussenliggende waarden worden dan automatisch berekend. O ja, er zijn twee dimkanalen beschikbaar: eentje voor het schakelpaneel binnen en een tweede voor een eventueel schakelpaneel in de kuip. Laatstgenoemde kan apart worden ingeschakeld.
Demping van lichtsterktevariaties
De lichtsensor wordt twee keer per seconde gemonsterd. Maar alle waarden worden over twee minuten uitgemiddeld. Dus een voorbijlopend iemand, of een hit van een zaklantaarn, heeft niet direct invloed op het gedrag van de boordverlichting of paneelverlichting
Flexibiliteit
Je hoeft niet alles te gebruiken. Je kan ook voor een deel gaan.

Bediening

Hoe gemakkelijk werkt het?

Bediening van de verlichting
Er worden door ons schakelaars gebruikt met drie standen: Uit, Automatisch, Aan. Uit en Aan spreekt voor zich. En bij Automatisch hangt het af van de hoeveelheid licht of de betreffende lamp aangaat. Wij hebben 4 kanalen in gebruik: Ankerlicht, navigatieverlichting, driekleurenlicht, en toplicht. Elk heeft een eigen schakelaar met drie standen.
Instellen kantelpunt
Instellen van het kantelpunt waar wordt geschakeld van dag naar nacht en omgekeerd doe je door de drukknop ingedrukt te houden tijdens het inschakelen van de computer. De LED op het kastje gaat nu knipperen tot je de drukknop loslaat: de hoeveelheid licht die op dat moment wordt gemeten is nu het kantelpunt.
Instellen bewakingsstroom
Het instellen van de bewakingsstroom doe je door de verlichting op het te bewaken kanaal in te schakelen en daarna op de drukknop te drukken. Dit hoef je maar één keer te doen want deze gegevens worden opgeslagen. Hierna gaat de LED van het betreffende kanaal knipperen zodra de stroom meer dan 10% lager wordt dan ingesteld. Dit betekent doorgaans dat er een lamp of LED stuk is. In het begin kan het voorkomen wanneer de boordspanning daalt dat het alarm afgaat terwijl de lamp nog heel is; dit komt doordat bij gloeilampen bij een dalende boordspanning ook de stroom afneemt. Bij LED's is het vaak net andersom. Door nog een keer op de drukknop de drukken wordt het alarm opgeheven en de nieuwe waarde opgeslagen. Alleen van de kanalen die aanstaan wordt de stroom gemeten.
Instellen paneelverlichting
Als er op de drukknop wordt gedrukt terwijl er geen verlichtingskanalen aanstaan dan wordt de paneelverlichting ingesteld. Dit werkt als volgt: Als de verlichtingssterkte onder de drempelwaarde is (de nachtstand) dan wordt de ondergrens van de verlichting ingesteld. Met de draaiknop op het kastje kan zolang de knop ingedrukt wordt gehouden de verlichtingssterkte worden ingesteld. Bij loslaten van de knop wordt de betreffende verlichtingssterkte opgeslagen bij de op dat moment optredende omgevingslichtsterkte. Hetzelfde kun je doen in de dagstand: je stelt nu de hoogste verlichtingssterkte in, en de hoeveelheid omgevingslicht op dat moment is waarop er voor die zojuist ingestelde verlichtingssterkte zal worden gekozen. Bij alle tussenliggende omgevingslichtsterkten wordt er automatisch gekozen voor een verlichtingssterkte naar rato.

Bouw

Elektronica

Voor nabouwen van deze schakeling is enige ervaring wel praktisch. Er is geen print ontworpen, veel onderdelen bevinden zich sowieso buiten het controlekastje. Kern van het ontwerp is een Arduino Pro Mini, deze moet voor deze toepassing geprogrammeerd worden. De source-code vind je verderop in dit artikel.

Elektrisch schema
Elektrisch schema
©
Lichtsensor
De lichtsensor is opgebouwd rond een LM358 Opamp. Als fotoweerstand (R1) is een VT93N2 gebruikt. Andere typen zijn waarschijnlijk ook goed bruikbaar. Uiteraard is het de bedoeling dat deze sensor buiten, of op zijn minst met vrij zicht naar buiten, wordt geïnstalleerd. De schakeling rond de LM358 is zodanig gedimensioneerd dat de hoogste resolutie zich in het donkere gebied rond de schemer bevindt. De schakeling maakt geen onderscheid meer tussen licht bewolkt of felle tropische zon. Niemand die juist in dit gebied het kantelpunt wil leggen, toch? De schakeling loopt op 5 Volt, deze is afkomstig van de efficiënte spanningsregelaar in de Arduino.
Lichtschakelaar
Er is gekozen voor schakelen in de positieve draad, hoewel dat in ons geval iets lastiger is dan wanneer we de schakelaars in de negatieve draad zouden opnemen. Maar schakelen in de positieve draad heeft als voordeel dat wanneer de verlichting UIT staat er ook geen spanning meer op de bedrading staat, en dat de lampen eventueel gebruik kunnen maken van een gecombineerde min-kabel of de massa van het schip.
Als lichtschakelaar is een drie-standen schakelaar gebruikt, met de posities AAN, UIT en AUTOMATISCH. Er is bewust gekozen om in de stand AAN de stroom rechtstreeks via de schakelaar te laten lopen. Als de elektronica het begeeft kun je dan tenminste toch gewoon de verlichting blijven gebruiken. In de stand AUTOMATISCH verloopt de spanningsverzorging via een power Mosfet, type IRFZ44N, maar andere typen zullen ook prima werken. Dit had ook met een relais gekund, maar voordelen van de Mosfet zijn dat deze goedkoop zijn, niet slijten, en praktisch geen stuurstroom verbruiken. De weerstand in doorlaat is 17,5 milliohm, dus verwaarloosbaar. Ze kunnen 40 Ampere schakelen dus dat is zelfs voor de meest ambitieuze boordverlichting wel voldoende. Het enige probleem is dat de Mosfet's een positieve stuurspanning van minstens 10 Volt nodig hebben op de gate ten opzichte van de source om volledig in geleiding te gaan. Maar aangezien de source al op 12 Volt staat betekent dit dat er 22 Volt nodig is om de Mosfet aan te sturen. Opwekking van de benodigde 22 Volt stuurspanning wordt verzorgd door de charge-pump rond de NE555.
Charge pump
De NE555 oscilleert rond de 20kHz. De uitgang wordt afwisselend 0 Volt en 12 Volt. Wanneer de uitgang "laag" is dan wordt C3 via D2 opgeladen, wanneer de uitgang daarna "hoog" wordt dan wordt C3 boven de voedingsspanning uitgetild en zal dan in totaal zo'n 24 Volt leveren. De spanning kan niet terug via D2 maar wel via D3 naar C4. Over C4 staat dus zo'n 24 Volt. De dioden D2 en D3 moeten snel schakelen en liefst met weinig spanningsval; daarom worden er Skottky dioden gebruikt. Met gewone dioden (1N4148) gaat het ook maar zijn de verliezen wat groter.
De NE555 krijgt alleen voedingsspanning wanneer het donker is. De "it_is_dark" uitgang van de Arduino is dan "hoog", Q3 gaat dan in geleiding waardoor Q4 de voedingsspanning naar de NE555 doorlaat. Alle aangesloten Mosfet's gaan dan in geleiding, maar de betreffende verlichting gaat natuurlijk pas branden als de bijbehorende schakelaar in de stand "automatisch" staat.
Stroomsensor
De stroomsterkte per verlichtingskanaal wordt gemeten middels de weerstand R6. De waarde van deze weerstand hangt af van de stroom die de betreffende lamp gebruikt: We willen ongeveer 0,2 Volt spanningsval over de weerstand verkrijgen. Via de formule U=IxR betekent dit dat we bij een stroom van 1 Ampere een weerstand van 0.2 Ohm nodig hebben. Erg precies komt het niet, maar als er bijvoorbeeld voor het ankerlicht een ledje wordt gebruikt dat 100mA of minder verbruikt dan is een weerstand van 2 Ohm een geschikte waarde.
De analoge ingang van de Arduino kan een spanning meten van 0 tot 5 Volt. We zullen de spanningsval over de weerstand dus omlaag moeten brengen naar dit gebied. We doen dat met behulp van zenerdiode Z2, die een waarde van 10 Volt heeft, hetgeen betekent dat hij een vast "verlies" van 10 Volt heeft, waardoor de te meten spanning mag varieren tussen de 10 Volt en 15 Volt. Als de spanning buiten dit gebied komt dan heb je waarschijnlijk meer zorgen dan alleen maar een falende stroomsensor.
We willen een spanningsval van 0,2 Volt kunnen detecteren, maar de voedingsspanning kan varieren tussen de 10 en 15 Volt. Daarom moeten we ter referentie ook de voedingsspanning meten. Dat wordt gedaan door zenerdiode Z1, die ook 10 Volt bedraagt. Door nu deze uitgangsspanning te vergelijken met de gemeten spanning aan de andere kant van de weerstand R6 weten we hoeveel spanning er verloren is gegaan over deze weerstand.
Natuurlijk hadden we de spanning van 0,2 Volt met een opamp kunnen opblazen naar de volle 5 Volt aan resolutie van de Arduino. Maar voor onze toepassing is dat nodeloos ingewikkeld: De Arduino meet het spanningsbereik van 0 tot 5 Volt in 1024 stapjes. Dus is één stapje goed voor 5 millivolt. Bij een spanningsval van 0,2 Volt hebben we dus nog ruimschoots voldoende resolutie.
Indicatie-LED
In het schema is de indicatie-led voor het eerste verlichtingskanaal aangeduid met D1. Deze krijgt als "achtergrondverlichting" stroom via R8. De led gaat "vol" branden via R9. De achtergrondverlichting kun je natuurlijk ook gewoon weglaten door R8 te verwijderen. De waarden van R8 en R9 hangen af van de gebruikte LED. De meeste LED's hebben 20mA als maximum. Bij 5 Volt voedingsspanning en 1,5 Volt drempelspanning van de LED moet je dus 3,5 Volt kwijt zien te raken. Volgens de formule U=IxR heb je dan dus een weerstand van 180 ohm nodig. Zelf hebben wij ultra-efficiënte LED's gebruikt. Deze geven met 4mA nog fel licht. Als achtergrondverlichting hebben we een weerstand van maar liefst 33K gebruikt, dus dan verbruiken ze maar ongeveer 0.1 mA! Kortom, je moet hier even mee experimenteren. Gebruik voor R8 een weerstand die het maximale aan licht oplevert dat je als achtergrondverlichting wilt hebben, en gebruik voor R9 een weerstand die het maximale aan licht oplevert dat je als indicatieverlichting wilt zien. Met behulp van de PWM-uitgangen kun je de LED's wel dimmen, maar niet sterker laten branden.
De min van de LED's is niet rechtstreeks aan de min van de voedingsspanning verbonden, maar loopt via Mosfet Q2. Deze wordt aangestuurd door de Arduino en geeft pulsbreedtes af die kunnen varieren tussen de 0 en 100%. De aangesloten LED's kunnen met 255 verschillende pulsbreedtes (zeg maar "traploos") in lichtsterkte worden gevarieerd.
Uitbreidingen
In het schema is één verlichtingskanaal (rond Q1) weergegeven, plus aan de rechterkant nog eentje (zonder verdere componentaanduidingen). Op dezelfde manier kan er verder worden uitgebreid tot vijf kanalen. Meer kanalen is ook mogelijk, alleen is er voor de extra kanalen dan geen computergestuurde indicatie meer mogelijk. Z2 en R10 worden voor dat kanaal dan weggelaten, R9 wordt dan niet aan de Arduino maar aan de plus van de betreffende lamp verbonden zodat de indicatie-LED aangaat zodra er stroom naar de lamp wordt gestuurd. De weerstand R6 van dat betreffende kanaal kan worden vervangen door een doorverbinding.
Voor gevorderden:
  • Alarm. De uitgang aangeduid met ALARM in de source-code wordt hoog (5 Volt) wanneer een lamp niet aangaat die wel aan hoorde te gaan.
  • Extra PWM-uitgang. Er is een extra LED-indicatie-uitgang beschikbaar op het pootje "PWM2_OUT". Deze kan op dezelfde manier als bij Mosfet Q2 worden gebruikt om een extra groep LED's aan te sturen, bijvoorbeeld bij een schakelpaneel bovendeks. De uitgang PWM2_OUT wordt pas actief als de ingang PWM2_ENABLE aan min wordt verbonden.

Programma

Het programma voor dit alles is verrassend eenvoudig. Om de Arduino te programmeren heb je, afhankelijk van het model Arduino, wel of geen externe programmer nodig. De Arduino Pro Mini die wij gebruiken heeft een externe programmer nodig, maar die is gangbaar, even klein als de Arduino zelf en kost op eBay ook maar 3 dollar of zo. Verder heb je uiteraard de bron-code nodig: Download hier de bron-code.

De bron-code is rijkelijk van commentaar voorzien zodat je gemakkelijk de bron-code aan je eigen wensen kunt aanpassen. Maar doe dit alleen wanneer je hebt vastgesteld dat de originele combinatie elektronica en software werkt.


Reacties

Naam:
Tekens over:

contact