1.
Inleiding
De
binnenverlichting van een auto zonder boordcomputer is vaak zeer eenvoudig: je
opent de deur, de binnenverlichting gaat aan, je sluit de deur en het licht
gaat weer uit.
Het
zou heel comfortabel zijn als het licht wat langer blijft branden nadat de deur
is gesloten, bijvoorbeeld om je sleutels in het contact te steken.
In de
handel en op internet vind je talloze schema's en kant-en-klare apparaten
hiervoor, maar het apparaat dat hier beschreven wordt heeft een paar
interessante eigenschappen die ik nergens anders kon vinden, en die ik echt wou
hebben. Vandaar dus zelfbouw
Deze schakeling is gebaseerd op de PIC18F2550
microcontroller. Deze chip is eigenlijk een kleine computer die in één enkele
chip bevat is, inclusief RAM geheugen, EEPROM, I/O poorten, centrale
verwerkingseenheid enz. Als je deze chip koopt, is hij uiteraard leeg en bevat
geen enkel programma. Je moet de broncode (zie link onderaan) compileren en de
resulterende machinecode naar de chip downloaden. Hierbij kun je gebruik maken
van een kleine "programmer" die verbonden wordt met de PC en de chip.
Voor meer in detail uitleg van dit soort dingen, kun je best eens naar volgende
plaats surfen: Getting
started with microcontrollers.
2.
Beschrijving
Het
gebruik van een microcontroller voor een simpel apparaat als een auto
interieurverlichting extender lijkt op het eerste zicht een beetje overkill.
Een eenvoudige 555 timer of wat transistors/weerstanden/condensators zouden
kunnen volstaan, maar rekening houdend met de eigenschappen die ik aan dit
apparaat wou geven, is uiteindelijk het gebruik van een micro-controller de
beste keuze gebleken.
Deze eigenschappen zijn:
-
Nul verbruik in standby mode
-
Geen
enkele wijziging nodig aan de bestaande bedrading, zelfs geen onderbreking van
de draad komende van de deurschakelaar naar de lamp of van de lamp naar de +12V.
Het apparaat heeft slechts 1 draad nodig om te interfacen met de bestaande
binnenverlichting (plus 2 draden voor de voeding)
-
Optioneel
is een extra schakelaar aansluitbaar voor manuele bediening, deze bedient dan
de lamp met soft start en soft stop (automatisch in- en uit dimmen)
-
Optioneel
kan de lamp onmiddellijk uitgeschakeld worden door middel van een externe
trigger, vb. wanneer de motor aangezet wordt of het alarm geactiveerd wordt
-
Instelbare
uitschakeltijd voor de lamp nadat de autodeuren zijn gesloten, en instelbare
tijd hoe lang de lamp dimt tot de uit positie of tot de aan positie
-
Geschikt
voor zowel LED verlichting als gloeilampen
3.
Gebruik/aansluiting met
bestaande binnenverlichting
Een
typische auto binnenverlichting ziet er schematisch meestal zo uit:
Nadat
dit apparaat erop aangesloten wordt, ziet het schema er zo uit:
Zoals
je kan zien is er slechts 1 draad verbonden met de bestaande bedrading, dit kan
gebeuren op elk geschikt punt (vb. in de buurt van de lamp, in de buurt van de
deurschakelaar of eender waar tussenin).
Optioneel
kan een extra schakelaar (S2) van het toggle-type toegevoegd worden waarmee de
verlichting manueel kan bediend worden (PAD4 in het schema, zie later). Alsook
kan een extra signaal van een ander systeem (vb. motor aan, alarm geactiveerd,
…) toegevoegd worden aan het apparaat om onmiddellijk de verlichting uit te
schakelen (S3, PAD10 in het schema). Dit resulteert in het volgende
schema:
4.
Schema
5.
Werking
(zie
schema in vorige paragraaf).
Het
moeilijkste is dat we slechts één draad hebben als interface met het bestaande
binnenverlichtingssysteem, en dat deze draad reeds verbonden is met de lamp en
met de deurschakelaar. Hieraan willen we absoluut niets veranderen.
Hiervoor
gebruiken we relais K1. Dit relais is eigenlijk parallel verbonden met de lamp
(blokkeer relais K3 even buiten beschouwing gelaten). Relais K1 wordt gebruikt
om de toestand van de lamp in het oog te houden. Dus als de lamp aangaat of
uitgaat weten we dit via poort RB0 van de PIC. Zie verderop.
Maar
laat ons eerst even naar de stroomvoorziening voor het circuit kijken. Omdat we
willen dat het verbruik in standby toestand nihil is, worden hiervoor eveneens
relais gebruikt. Het spanningsregelaar IC (IC2) is in normale omstandigheden
niet verbonden met de 12V van de auto. Zodra de deur geopend wordt, en daardoor
de lamp gaat branden en ook relais K1 aangaat, voorziet K1 stroom naar de
spanningsregelaar en dus ook naar de PIC. Het eerste dat de PIC softwarematig
gaat doen is zichzelf verzekeren van stroom door relais K4 te activeren via
poort RA4.
Zodra
de PIC begint te lopen, doet hij eerst niets anders dan wachten tot de deur
gesloten is via relais K1 en input poort RB0. In de software is dit terug te
vinden onder “DOOR MODE”. Zodra RB0 aan de grond hangt, weten we dat de deur
gesloten is. Het licht gaat hierdoor uit maar onmiddellijk neemt de PIC het van
de deurschakelaar over en zet het licht terug aan door een 100% duty-cycle PWM
signaal te sturen naar poort RC1 en transistor Q1. Daarna wacht de PIC circa 25
seconden (kan softwarematig gewijzigd worden) en begint dan de lamp zachtjes te
dimmen (van 100% naar 0% in 3 seconden). Voordat de dim-cyclus gestart wordt,
wordt K3 geactiveerd om te voorkomen dat relais K1 kan zoemen als gevolg van de
PWM spanning op zijn spoel (K1 is immers parallel met de lamp verbonden). Zodra
het dimmen voltooid is tot 0%, is al het werk gedaan en schakelt de PIC al zijn
relais uit, ook K4, en komt het hele apparaat stroomloos te staan.
De 25
seconden wacht-cyclus (in “DOOR MODE”) zal onderbroken worden indien RB2 aan de
grond hangt door triggering van een extern systeem. In dat geval zal de PIC
onmiddellijk beginnen met de dim-cyclus.
Een
andere manier om het licht aan te zetten is via de manuele schakelaar, dewelke
relais K2 bedient. Dit is ongeveer hetzelfde als bij door modus (activeren van
de spanningsregelaar om de PIC in te schakelen), maar omdat dit ook input RB1
aan de grond hangt zal de software in een andere modus gaan. In de source code
is dit aangeduid als “MANUAL MODE”. In deze modus wordt gezorgd voor een zachte
start van de lamp (dimmen van 0% tot 100% in 3 seconden), vervolgens wordt
gewacht tot RB1 van de grond af gaat en dan wordt gestart met het terug
uit-dimmen van de lamp (van 100% naar 0% in 3 seconden) en vervolgens wordt
alles afgezet.
6.
Prototype
Het apparaat werd eerst geprototyped op een Dwengo bord en zijn
bijbehorende breadboard. Doordat de 4 relais hier niet zomaar in te prikken
zijn ziet het geheel er nogal slordig uit:
Beneden links een auto LED lamp. Beneden rechts de Dwengo programmer.
7.
De
gedrukte schakeling
De print
is ontworpen voor SMD componenten.
Ze is
enkelzijdig met 8 doorverbindingen. Eigenlijk is ze ontworpen als dubbelzijdige
print in Eagle (van Cadsoft) maar ik had geen zin om een
dubbelzijdige print te maken dus is de onderkant bedoeld als doorverbindingen
(aan de bovenzijde te solderen, daarvoor heb ik vierkantjes overheen de via’s
gelegd).
De
grote transistor (IRFZ34N) is de enige niet-SMD component, hiervoor moet je dus
3 gaatjes boren. Het beste is om de transistor aan de onderzijde van de print
te steken.
PDF bestand
(gespiegeld) geschikt om op een transparent af te drukken: Print-layout. Zorg er bij het afdrukken
voor geen schaling te gebruiken!
PDF bestand
die de print toont inclusief componenten. De rode lijnen zijn de koperbanen, de
blauwe lijnen stellen de doorverbindingen voor: Print-layout compleet
8.
Het uiteindelijke apparaat
Op de foto hieronder het is uiteindelijke apparaat te zien. De bedrading
naar de buitenwereld: links boven massa en licht-controle, links in het midden
+12V, links beneden de groene draad naar de manuele schakelaar. De draad aan de
rechterkant is voor de externe trigger.
De printplaat had eigenlijk nog een stuk kleiner kunnen zijn als ik er
wat langer aan gewerkt had.
De witte blokjes zijn de 4 relais. Deze zijn allen van het type Omron
G6K-2F 5V SMD type (gepolariseerd).
De connecter gemarkeerd met “-+MCD” is de in-circuit programming
interface die verbonden wordt met de programmer (connecties: - =, massa + =
+5V, M = reset, C = clock, D = data).
Ingebouwd in een doorschijnend plastic kastje (5 x 7 x 1 cm):
9.
Programmeren
De
software is geschreven in C (PIC
C18 van Microchip).
Het
eerste prototype is gemaakt op een Dwengo experimenteerbord (http://www.dwengo.org). Omdat dit bord gebruik
maakt van de PIC18F4550, heb ik 2 projecten gemaakt: één voor de PIC18F4550 en
één voor de PIC18F2550 (het uiteindelijke apparaat). Het eerste maakt gebruik
van de Dwengo bibliotheek om wat debug boodschappen op het Dwengo LCD te tonen,
het tweede heeft de Dwengo bibliotheek niet nodig.
Het
Dwengo bord en bibliotheek zijn niet nodig om dit project te bouwen, enkel de Microchip
MPLAB IDE en een PICkit2 compatibele programmer is voldoende.
De
software maakt gebruik van de PWM module op de PIC18F2550
om de lamp te dimmen. Dit gebeurt in 64 stappen.
Zip bestand
dat alle source code, header bestanden en project bestanden bevat: Link naar MPLAB projecten
Verbinding
met een PIC programmer.
Pad
5-6-7-8-9 moeten (tijdelijk) verbonden worden met een PIC programmer (5=-, 6=+,
7=VPP, 8=clock, 9=data), bijvoorbeeld een PICkit2 compatibele programmer.
10.
Customisaties
Als je
de software wilt customiseren, neem dan een kijkje naar CarCourtesyLight.c waarin de volgende defines
naar wens kunnen veranderd worden:
TIMEOUT_SECONDS
waarde in seconden: hoe hoger de waarde, hoe langer de extended cyclus duurt
(tijd vooraleer de lamp begint met uitdimmen)
SOFT_STOP_DOOR
hoe hoger de waarde, hoe langer het duurt om de lamp te dimmen (dim-cyclus tijd)
SOFT_START_MANUAL
idem maar voor soft starting (fade in) via de manuele schakelaar
SOFT_STOP_MANUAL
idem maar voor soft stop (fade out) via de manuele schakelaar
Gamma-tabel:
De
software maakt gebruik van een gama tabel (g[] in de source code) om een
percentage te vertalen naar een juiste duty cycle voor de lamp die visueel
correspondeert met dat percentage. Deze tabel is geschikt voor LEDs, ik weet
niet wat het effect is op gloeilampen. Mogelijk moet in dat geval de tabel
worden aangepast.
Home Terug naar Electronica projecten