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.

 

 

Terug naar boven

 

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.

 

Terug naar boven

 

 

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.

 

 

Terug naar boven

 

 

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:

 

 

 

Terug naar boven

 

 

5.             Schema

 

 

 

Componentenlijst

 

Link naar Eagle schema

 

 

Terug naar boven

 

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.

 

Terug naar boven

 

 

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.

 

 

 

 

 

Terug naar boven

 

 

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:

 

 

 

Terug naar boven

 

 

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.

 

 

Terug naar boven

 

 

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

 

Terug naar boven

 

 

 

 

 

Home                         Terug naar Electronica projecten