Sida 1 av 3

Digital väckarklocka *Uppdaterad 25.01.2007*

Postat: 13 augusti 2006, 21:40:27
av idiotdea
Det här blir mitt första riktiga projekt inom elektronik. Jag tänkte göra en "helt vanlig" väckarklocka med 4 siffrors LCD-display. För inställning av tid och alarm används rotationssensorer.

Motivering
Med de flesta vanliga väckarklockorna ställer man in alarmtiden genom att "klicka sig fram" till rätt tid. Problemet med detta är att det tar väldigt länge att ställa in tiden. Sedan klickar man alltid nu som då en gång för mycket. Någon annan som känner igen sig när man skall ställa in klockan på t.ex. 8.00 och i misstag klickar en gång för mycket, och så tvingas man klicka 23 gånger till? Detta problem löser jag med hjälp av rotationssensorer vilka tillåter mycket snabbare "sökning" och även fungerar i båda riktningarna.

Hårdvara
Klockan är uppbyggd kring en PIC16F628 som använder sig av den interna oscillatorn för att hålla tiden. Displayenmodulen består av 4st 7-segment displayer som drivs av varsin 4511 (BCD to 7-segment driver). Displaydrivarna är multiplexade för att kunna uppdatera varje display skiljt för sig. För justering av tid och annat används som sagt rotationssensorer. Senare tillkommer fler knappar/brytare för diverse funktioner.

Mjukvara
Hjärtat i klockan - PIC:en - kommer jag att mata med ett program jag själv skriver i assembler. Rotationssensorerna kopplas in på PORTB<4:7> och genererar en interrupt när någon av ingångarna ändras. Timer interrupten kommer att användas för att hålla reda på tiden och vid behov uppdatera displayerna och ringa alarmet.

Tidtabell
Jag började på allvar fundera på att göra väckarklockan nångång i början av året, så allting går inte så snabbt. Om den är klar till julen är jag nöjd.

13.08.2006
Jag har införskaffat nästan alla komponenter jag behöver till klockan. En del testkopplingar har gjorts. Assemblerkoden för rotationssensorerna är till största delen skriven (jobbigt!). Komponentschema och kretskortslayout påbörjad för displaymodulen (det blir ett "styrkort" och ett displaykort).

21.08.2006
UV-boxen klar och displaymodulens kretskort tillverkat. Rutinen för att läsa av rotationssensorer är i princip klar.

Bilder
Bild
En tidig skiss av hur jag har tänkt mig att klockan skall se ut (matchar min förstärkare).


Ge gärna kommertarer, förslag till förbättringar osv.

*edit: uppdaterade tidtabellen

Postat: 13 augusti 2006, 21:44:24
av bengt-re
Ja, en kommentar - välj ett noggrannare klocka till systemet. En bra kristall rekomenderas. INTOSC är inte så noggrann att det blir någon vidare klocka av det... 0,1% är fortfarande MÅNGA miinuter per månad i fel..

Postat: 13 augusti 2006, 22:23:57
av flippy
Med en klockkristall med en tolerans på 20 ppm blir det ungefär en sekund per månad, med en tolerans på 0,1% blir det istället 259200 sekunder.

Postat: 13 augusti 2006, 22:27:53
av bengt-re
Ungefär 100 gånger fel dina beräkningar på 0,1% osc...

En cirka 40 minuter som maxfel per månad med 0,1% är lite mer rätt...

Postat: 13 augusti 2006, 23:06:38
av björn
Jag hade nog satt dit en RTC direkt, eller gör iallafall layouten så att möjligheten finns.

Postat: 13 augusti 2006, 23:07:07
av Jine
DS1302 skulle göra jobbet bättre.. :)

Även så kan du göra lite ÖVERCORE projekt och interfaca den till datorn också? :) Trådlös 433mhz kommenication? :)

Ds1302.. Kalender och allt.. :)
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2685

Finns som samples också.. ps ;)

Postat: 13 augusti 2006, 23:09:06
av flippy
Så går det när man är trött :shock:
2592 jämfört med 51,84 sekunder blir det, en jäkla skillnad är det iaf

Postat: 13 augusti 2006, 23:39:02
av idiotdea
Tack för alla kommentarer! Det verkar som att jag blir tvungen att använda en extrern kristall då. Åtminstone planera in en i schemat. Hoppas bara att jag har tillräckligt men in/out pinnar =).

Jag hade tänkt mig att man kunde korrigera felet på den interna oscillatorn i mjukvaran. Man låter klockan gå i t.ex. en veckas tid och mäter sedan hur mycket den går fel. När man vet den tiden kan man sedan räkna ut att man för varje x:e timer interrupt måste lägga till eller ta bort nån sekund från tiden. Är detta något ni tror att kan fungera? Detta förutsätter förstås att felet på oscillatorn är konstant, vilket det kanske inte är?

Jine: Ja, det verkar ju intressant, men jag tror nog att jag skippar det till en början åtminstone.

Som jag skrev så är det mitt första elektronikprojekt, förutom möjligen att få några led:ar att lysa, så det är inte bara att tuta och köra. Det känns som att det kanske är ett lite stort projekt att börja med, så jag försöker hålla det så simpelt som möjligt.

Postat: 13 augusti 2006, 23:41:52
av Chribbe76
Den enda fördelen att använda en RTC i ditt fall är om du vill ha batteri-bakup för att klockan inte ska tappa tiden om det blir strömlöst.
Annars tycker jag att du ska göra som du har tänkt men använd en kristall för att driva picen med istället.
Men det roligaste skulle nog vara att göra batteri-bakup utan att använda RTC.
(ja, jag är lite allergisk mot RTC)

Postat: 13 augusti 2006, 23:47:52
av baron3d
Måste naturligtvis förses med en DCF77 mottagare :D
Då blir den någorlunda exakt.

Postat: 14 augusti 2006, 08:17:29
av Icecap
Ett alternativ är DS32KHZ från Dallas (eller besläktade i serien), då har man en noggranhet som ger +- 1 minut/år.

Ska man vara riktig petig vore en DCF77 definitivt grejen, kombinera det med en RTC med DS32KHZ och vi börjar prata atomklocka-liknande tillstånd.

RTC'n kan fint backas upp med en supercap, klockan ställer ju in sig själv när strömmen återkommer. Ska man vara petig kan det vara en idé att ha batteri-backup så att klockan fungerar även vid strömavbrott, man kan då stänga av displayen och spara ström då.

Postat: 14 augusti 2006, 09:54:44
av Chribbe76
Att låta klockan gå en vecka och kolla hur mycket fel den går och sen korrigera i mjukvaran är en bra ide' (dessutom väldigt roligt och spännande).
Men den interna oscillatorn har för dålig stabilitet så en kristall är ett måste.

I den här tråden har jag postat lite kod för att göra en klockbas med ett timer-interrupt där man lätt kan kallibrera tidbasen.
http://www.elektronikforumet.com/forum/ ... hp?t=12258

Postat: 14 augusti 2006, 14:51:21
av Källberg
Ännu roligare vore det om du tåg in klocktiden från radiosändaren i tyskland...

Postat: 14 augusti 2006, 15:26:59
av flippy
Sändaren i Tyskland heter just DCF77

Postat: 15 augusti 2006, 17:24:19
av Källberg
Det visste jag också... :roll: