Auto klok, thermo- en voltmeter
1.
Inleiding
Dit apparaat is ontworpen als vervanging van de originele klok in een
Fiat Ducato 1992-1994, gemonteerd in de binnenspiegel console. De originele
klok is niet erg nauwkeurig, toont alleen de tijd en is gevoelig voor storingen
(vb. van Xenon verlichting). De vervanging hier beschreven heeft deze nadelen
niet, en toont daarenboven ook de temperatuur en de startbatterijspanning. Ze
werkt op de startbatterij en maakt gebruik van de Microchip MCP9800 als
temperatuur sensor.
Deze schakeling is gebaseerd op de PIC16F1937
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 LCD display dat in dit ontwerp gebruikt wordt is de Varitronix
VIM-404 (Digikey ordernr: 153-1047-ND), dit is een 0.5” gemultiplexte 4 digits
7-segment transflective display. Hij wordt aangestuurd door de PIC16F1937 microcontroller
met ingebouwde LCD driver.
De LCD wordt voorzien van achtergrondverlichting d.m.v. een LED backlight
unit (4.1V): Digikey ordernr. 153-1026-ND.
Het ontwerp is gebaseerd op Microchip’s F1 evaluation board. De originele
PIC16LF1937 werd vervangen door de PIC16F1937 om het geheel op 5V (in plaats
van 3.3V) te kunnen laten werken wat een beter contrast oplevert voor het
gebruikte LCD display.
3.
Gebruik
Het apparaat wordt bediend met één enkele drukknop.
Eerst wordt de tijd getoond. Druk éénmaal op de knop om de temperatuur
te tonen, druk nogmaals op de knop op de spanning te tonen.
Instellen van de tijd gebeurt met een unieke 1-knops bediening:
- Eerst worden
de uren ingesteld. Houd de knop ingedrukt, de eenheden van de minuten zullen
oplopen tot aan 0, daarna zullen de tientallen van de minuten oplopen tot aan
0, daarna zullen de uren oplopen. Laat de knop los zodra de uren
correct zijn.
- Daarna
worden de tientallen van de minute ingesteld. Houd de knop ingedrukt, de
eenheden van de minuten zullen oplopen tot aan 0, daarna zullen de tientallen
van de minute oplopen. Laat de knop los zodra de tientallen van de minuten
correct zijn.
- Daarna worden
de eenheden van de minuten ingesteld. Houd de knop ingedrukt, de eenheden van
de minuten zullen oplopen. Laat de knop los zodra de eenheden van de minuten
correct zijn.
4.
Aansluiting
Het is aan te raden om twee 4-pin connectors te gebruiken om de
verbinding te maken tussen het apparaat en de auto. Ik heb deze zelf gemaakt
m.b.v. een standaard headers:
5.
Schema
6.
Uitleg van het schema
(Zie het schema hierboven).
De 12V voeding komende van de contactsleutel of de lichtschakelaar moet
verbonden worden met PAD8. Dit is voor de achtergrondverlichting, deze zal
inschakelen als de motor draait of als de standlichten aangezet worden, dit
gebeurt door spanningsregelaar IC4 (LM317) die is ingesteld op 4.1V (d.m.v.
R3-R5).
De 12V continue voiding moet aangesloten worden aan PAD6. Deze wordt
naar beneden bijgesteld tot 5V d.m.v. IC2, een zeer efficiënte
spanningsregelaar van Microchip (de MCP1790) die de spanning voorziet voor de
PIC, het LCD display en de temperatuur sensor.
Drie gemeenschappelijke lijnen en een heleboel segment lijnen zijn
verbonden tussen het LCD display en de PIC’s LCD driver.
De digitale temperatuur sensor is verbonden met de klok- en data lijnen
van de PIC’s I2C bus.
Een standaard 32768 quartz kristal is verbonden met de PIC’s oscillator
pennen, dit kristal wordt gebruikt als tijdsbasis voor de klok.
R1 en R2 vormen een spanningsdeler om de batterijspanning te meten. Hij
is verbonden met een analoge input van de PIC.
7.
De gedrukte
schakeling
De print werd ontworden voor smd componenten.
Ze is dubbelzijdig uitgevoerd en ontworpen met Eagle (van Cadsoft).
Het LCD display, de enige niet-SMD component, heft lange pinnen en kan
daardoor gemonteerd worden bovenop de microcontroller, wat plaats bespaart.
De LED backlight unit past tussen het LCD display en de print/PIC.
PDF bestand (bovenkant, gespiegeld) om te printen op een transparent: Print-layout
PDF bestand (onderkant) om te printen op een transparent: Print-layout
Link naar Eagle bestand brd bestand met de PCB layout.
8.
Het uiteindelijke apparaat
Hieronder een paar foto’s van het uiteindelijke
apparaat.
De originele klok vergeleken met de nieuwe:
Klok in tijdmodus, merk op dat voor de “6” en “9” een ietwat gewijzigde
“font” gebruikt is, wat doet denken aan professionel displays:
De klok ingebouwd in de midden spiegel console van de Fiat Ducato:
9.
Tips en tricks
-
De backlight unit kan een beetje warm worden wat tot
een foute aflezing van de temperatuur kan leiden. Het is beter om de sensor een
zekere afstand van de print af te monteren met behulp van 4 draden.
-
In mijn camper gaat de achtergrondverlichting aan
wanneer het contact aan wordt gezet of wanneer het licht aan wordt gezet. Dit
kan bereikt worden met behulp van twee diodes aan beide draden komende van
contact en van het licht naar PAD8.
-
Nauwkeurigheid van de klok: de tijd wordt bijgehouden
via timer1, gevoed door een 32768 quarz kristal. Normaal veroorzaakt de timer
een interrupt elke 2 seconden, maar omdat we de TMR1 waarde op ongeveer 8000h
zetten, wordt dit gereduceerd tot eenmaal per seconde. Men kan spelen met de
waarde van 8000h: verhogen tot bv. 8001h zal de klok een beetje sneller doen
lopen, verlagen vertraagt de klok. Men kan zelfs niet gehele getallen
gebruiken, vb. 8000.5h door slechts om de zoveel interrupts te verhogen.
Gebruik makend van lange observatietijden voor de nauwkeurigheid, kan men de
ideale waarde voor TMR1 verkrijgen, wat resulteert in een zeer precieze klok.
10.
Programmeren
De software is geschreven in C (Hi-tech C supporting Microchip). Er wordt
gebruik gemaakt van stroombesparende technieken zoals Sleep() en “wake up from
sleep after timer1 overflow”.
Om het apparaat te programmeren heb je de Microchip MPLAB IDE nodig (gratis
te downloaden) en een PICkit3 compatibele programmer. Je hebt ook de Hi-tech C
compiler nodig (de lite versie, gratis te downloaden, volstaat).
Zip bestand met alle source code, header bestanden en project bestanden:
Link naar MPLAB project. Het project bestand
dat moet gebruikt worden noemt CarClockTempVoltMeter_5V.mcp, het workspace bestand
is CarClockTempVoltMeter_5V.mcw.
Verbinding met een PIC programmer.
De connector gemarkeerd met “M+-DC” moet tijdens het programmeren
verbonden worden met de PICkit3 programmer (M correspondeert met het witte driehoekje
op de PICkit3).
Home Terug naar
Electronica projecten