Elektronica Stynus
 

Binaire BCD Klok.

Als ontspanning tijdens het leren voor de examens heb ik een binaire klok ontworpen en gemaakt op basis van een PIC16F628A.

 

Schema hoofdprint:

Schema binaire BCD klok
Schema voeding:

Schema voeding

Schema led matrix:

schema led matrix

Pcb layout hoofdprint:

pcb binaire BCD klok

Printlayout als pdf: Link

 

Foto's:

binaire BCD klok

binaire BCD klok

binaire BCD klok

binaire BCD klok

binaire BCD klok

binaire BCD klok

 

De code voor in de pic:

'****************************************************************
'*                       Binaire klok                           *
'*  Auteur  : Coenen Stijn [Stynus]                             *
'*            Copyright (c) 2008 ElektronicaStynus.be           * 
'*  Datum   : 12/06/2008                                        *
'*  Versie  : 1.0                                               *
'****************************************************************
    Device              16F628A
    Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
    ALL_DIGITAL         = true   
'****************************************************************   
'Leds 
    Dim     tijduur10   As Byte
    Dim     tijduur1    As Byte
    Dim     tijdmin10   As Byte
    Dim     tijdmin1    As Byte
    Symbol  leds        = PORTB   
    Symbol  uren10      = PORTA.0
    Symbol  uren1       = PORTA.1
    Symbol  minu10      = PORTA.2
    Symbol  minu1       = PORTA.3 
    TRISB               = %11000000
    TRISA               = %00010000
'instellen
    Symbol  incMin      = PORTB.6
    Symbol  incUur      = PORTB.7
    Dim     minBit      As Bit
    Dim     uurBit      As Bit
    PORTB_PULLUPS       = 1 
'interrupt
    Symbol  klok50      = PORTA.4
    Dim     tussenCount As Byte
    Clear
    
    Symbol T0IF         = INTCON.2      'Bit die hoog wordt bij overflow    
    Symbol T0IE         = INTCON.5      'Timer Overflow Interupt Enable bit
    Symbol GIE          = INTCON.7      'Global interupt enable bit
    Symbol PSA          = OPTION_REG.3  'Prescaler Assignment bit
    Symbol TOSE         = OPTION_REG.4  'Stijgende of dalende flank kiezen.
    Symbol T0CS         = OPTION_REG.5  'selecteren timer ingang    
    TOSE                = 0             'stijgende flank
    T0CS                = 1             'RA4 selecteren als timer ingang 
    PSA                 = 1             'Prescaler uit
    T0IE                = 1             'Interupt opzetten voor timer 0
    T0IF                = 0             'Timer 0 vlag clearen
    TMR0                = 206           '206 in register TMR0 gooien zoadat bij 
                                        '50Hz 1 keer per seconde interupt is
    GIE                 = 1             'Interupt opzetten  
GoTo over_interupt

on_hardware_interrupt GoTo Interupt 
Interupt: 
    T0IF = 0    'Overflow vlag terug afzetten
    TMR0 = 206  'Terug 205 in het TMR0 reg zetten 
                '(voor 1 interupt per sec bij 50 hz)
    Inc tussenCount
    If tussenCount = 60 Then
        tussenCount = 0
        Inc tijdmin1
        'minuten eenheden
         If tijdmin1 = 10 Then
            tijdmin1 = 0
            'Minuten tientallen
            Inc tijdmin10
            If tijdmin10 = 6 Then
                Inc tijduur1
                tijdmin1 = 0
                tijdmin10 = 0
                'Uren
                If tijduur1 = 4 And tijduur10 = 2 Then
                   tijduur1 = 0
                   tijduur10 = 0
                EndIf
                If tijduur1 = 10 Then
                   tijduur1 = 0
                   Inc tijduur10
                EndIf
            EndIf
        EndIf 
    EndIf
Context Restore  

over_interupt:
    
'preset waarde meegeven
    tijduur10           = 0 
    tijduur1            = 0
    tijdmin10           = 0
    tijdmin1            = 0
        
Hoofdprog:
    'leds aansturen
    'minuten eenheden
        High minu1
            leds = tijdmin1 
            DelayMS 1 
        Low minu1
        leds = 0
    DelayUS 50
    'Minuten tientallen
        High minu10
            leds = tijdmin10 
            DelayMS 1    
        Low minu10
        leds = 0
    DelayUS 50
    'Uren eenheden
        High uren1
            leds = tijduur1
            DelayMS 1    
        Low uren1
        leds = 0
    DelayUS 50
        'Uren tientallen
        High uren10
            leds = tijduur10  
            DelayMS 1   
        Low uren10
        leds = 0
    DelayMS 2
    GoSub Instellen
GoTo Hoofdprog

Instellen:
    'Minuten instellen
    If incMin = 0 And minBit = 0 Then
        Inc tijdmin1
        If tijdmin1 = 10 Then
            tijdmin1 = 0
            'Minuten tientallen
            Inc tijdmin10
            If tijdmin10 = 6 Then
                tijdmin1 = 0
                tijdmin10 = 0
            EndIf
        EndIf
        minBit = 1
    Else
        If incMin = 1 And minBit = 1  Then
            minBit = 0    
        EndIf
    EndIf
    'Uren instellen
    If incUur = 0 And uurBit = 0 Then
        Inc tijduur1
        If tijduur1 = 10 Then
            tijduur1 = 0
            'Minuten tientallen
            Inc tijduur10
            If tijduur10 = 6 Then
                tijduur1 = 0
                tijduur10 = 0
            EndIf
        EndIf
        uurBit = 1
    Else
        If incUur = 1 And uurBit = 1 Then
            uurBit = 0    
        EndIf
    EndIf
Return
End    

De hex file: link.

Top

Reactie's

Naam: Gitaarstudentje
Datum: 14 Juni 2008, 12:47
Bericht:
Weer'n schoon projectje ... ook iets voor het je-weet-wel, komt binnenkort online? ;)
Naam: Goeman Mike
Datum: 21 Juli 2008, 11:09
Bericht:
Hey, dit is een zeer mooi project.
Kan je dit niet aanpassen zodat er ook seconden zijn?
Naam: Stynus
Datum: 21 Juli 2008, 12:03
Bericht:
Hoi,

Je kan het schema aanpassen door nog 2 kolommen toe te voegen.
In de software is het ook niet echt een probleem.

mvg,
Stynus
Naam: Fabian
Datum: 28 Februari 2009, 22:36
Bericht:
heey, dat ziet er zeer mooi uit!
waar zijn alle gaten/aansluitingen voor? aangezien ik deze klok ook wil maken, moet ik weten wat waarvoor is.

Naam: Stynus
Datum: 01 Maart 2009, 11:00
Bericht:
Hoi,

Staat allemaal in de schema's.

Mvg,
Stynus
Naam: fabian
Datum: 01 Maart 2009, 13:18
Bericht:
ok, dankje, weet het nu. is de interne oscillator een beetje betrouwbaar?
en kan ik niet een 1x9V trafo gebruiken? die heb ik namelijk wel nog.
Naam: Stynus
Datum: 01 Maart 2009, 13:24
Bericht:
Hoi,

Die 2de wikkeling wordt gebruikt voor de klokfrequentie van de klok. De 50hz van het net is namelijk atoomklok gestuurd. Daardoor is de klok heel precies. De interne oscillator wordt enkel gebruikt voor het programma zelf (de leds aansturen).

Een 1x 9V transfo gaat niet. Heb dat eerst ook geprobeerd maar dan komt er geen betrouwbaar 50Hz signaal uit de comparator.

Mvg,
Stynus
Naam: Fabian
Datum: 01 Maart 2009, 19:13
Bericht:
zo, laatste vraag :)
is die zenerdiode echt nodig? aangezien de spanning toch altijd 9V is.
Naam: Stynus
Datum: 01 Maart 2009, 20:04
Bericht:
Hoi,

Ja, die opamp is met 5V gevoed dus mag de spanning op de ingang daar niet ver bovenuit komen.

Mvg,
Stynus
Naam: Fabian
Datum: 12 Maart 2009, 15:34
Bericht:
hallo, net klok op geëtste print gemaakt, en getest. alles werkt, maar: ik krijg geen minuten en uren. zo dus: 00:09 en dan gaat ie weer naar 00:00 ook met de uren: 09:00 -> 00:00 er komen dus geen tientallen bij, niet als de klok loopt, en ook niet als ik het handmatig instel.
Naam: Stynus
Datum: 12 Maart 2009, 18:01
Bericht:
Hoi,

Worden al je transistoren aangestuurd? (Even met een scoop meten)

Mvg,
Stynus
Naam: Fabian
Datum: 12 Maart 2009, 20:22
Bericht:
krijg een vreemd signaal, dat iets weg heeft van een blokgolf en een sinus door elkaar, op alle 4 transistoren. op de 4 kanalen die uit de PIC komen, krijg ik wel iets moois.
verder heb ik geprobeerd om de contacten van de kabels naar de matrix om te draaien, dus 1 op 4 4 op 1 enzovoorts. dan werkt ie wel, maar staat het als het ware op de kop.
Naam: Fabian
Datum: 13 April 2009, 18:12
Bericht:
hallo, ik heb mijn klok nu werkend, maar hij loopt voor op mijn computer/GSM. hij loopt iets sneller dan mijn andere klokken, heb jij dat ook, en hoe los je dat op?
Naam: Stynus
Datum: 13 April 2009, 18:22
Bericht:
Hoi,

Dat hij sneller loopt had ik eerst toen ik voeding en clockpuls uit 1 wikkeling van de transfo wilde halen ook. Nadat ik die gescheiden had nietmeer.

Als je toch gescheiden wikkelingen gebruikt had kan je eens proberen met een netfilter ervoor te zetten. En eventueel die 2de wikkeling waar de klokpuls uitkomt wat te belasten.

Mvg,
Stynus
Naam: Fabian
Datum: 13 April 2009, 19:17
Bericht:
ik heb gewoon het schema gebruikt wat hier op de site staat.

netfilter is wat groot voor in het kastje, waarmee kan ik die 2e winding waar de klokpuls uitkomt het beste mee belasten?
Naam: Stynus
Datum: 13 April 2009, 19:23
Bericht:
Een weerstand van 100 Ohm 1W ofzo eens proberen.

Mvg,
Stynus
Naam: Fabian
Datum: 13 April 2009, 19:57
Bericht:
hallo,

ik heb net een 100Ohm 1W aan mijn voeding gehangen, en zelfs die wort heel erg warm, dus dat lijkt me niet zo slim. ook kan mijn trafo denk ik niet zoveel leveren.

wat nu?
Naam: Stynus
Datum: 13 April 2009, 20:00
Bericht:
Dat die weerstand warm wordt is normaal. Daar wordt bijna 1W in verstookt. Je mag de weerstand ook wat hoger kiezen dat er nog maar een halve wat wordt verstookt ofzo.

Gewoon even wat experimenteren.

Mvg,
Stynus
Naam: Fabian
Datum: 14 April 2009, 18:53
Bericht:
net een 200 ohm 1W eraan gehangen (2 x 100 ohm in serie) en dat wordt minder warm. maar als ik de weerstanden op de trafo zet doet mijn klok helemaal niets meer.
wat is hier aan de hand?
Naam: Stynus
Datum: 14 April 2009, 18:55
Bericht:
Dan een grotere weerstand gebruiken. (De spanning zal wel teveel ingezakt zijn). Probeer eens met 1K dan.

Mvg,
Stynus
Naam: Fabian
Datum: 14 April 2009, 19:26
Bericht:
nope ook niet,
ik heb eens gekeken, en na 2 minuten loopt ie al 10 seconden voor...
dat klopt dus niet helemaal
Naam: Stynus
Datum: 14 April 2009, 19:37
Bericht:
Dan kan je proberen om wat met de TMR0 waarde in de interrupt te spelen.

Woon je soms ergens waar je een andere netfrequentie hebt? Of zit je op een ups ofzo te testen waarvan je frequentie geen 50Hz is?

Mvg,
Stynus
Naam: Fabian
Datum: 14 April 2009, 19:58
Bericht:
als ik van TMR0 bijvoorbeeld 200 zou maken, betekend dat dat hij sneller, of langzamer zal gaan lopen?

ik neem aan dat het hier gewoon 50Hz is. ik heb hier niets van een UPS staan.
Naam: Stynus
Datum: 14 April 2009, 20:41
Bericht:
Dan gaat hij trager.

Mvg,
Stynus
Naam: stef
Datum: 09 April 2010, 19:54
Bericht:
Hooi,
Mooi project.Waar ik niet uitkom is hoe het in elkaar zit met de knoppen.Dit kan ik nergens terug vinden in het schema welke en hoe de knoppen aangesloten moeten worden.Kan u mij verder helpen.
Mooi project,was op zoek naar een binaire klok.

Mvgr Stephan
Naam: Stynus
Datum: 10 April 2010, 00:47
Bericht:
Hoi,

Op de header waar knoppen bijstaat.

Mvg,
Stynus
Naam: stef
Datum: 10 April 2010, 18:54
Bericht:
OK,bedankt voor de uitleg.Zal de klok bouwen.
Mvgr Stephan
Naam: stef
Datum: 10 April 2010, 21:00
Bericht:
Hoi,
Was ik vergeten .Namelijk welke leds werden er gebruikt voor het project?5mm of 3mm
Zou graag 3mm leds gebruiken,is om te weten welke weerstanden er nodig zijn voor 3mm leds
Alvast bedankt
Mvgr Stephan
Naam: Stynus
Datum: 11 April 2010, 10:17
Bericht:
Hoi,

3 of 5mm leds maakt niks uit. Zolang ze dezelfde kleur hebben heb je dezelfde spanning en stroom.
Ik heb hier de weerstanden nogal groot genomen dus elke kleur led zou zonder problemen moeten kunnen.

Mvg,
Stynus
Naam: stef
Datum: 11 April 2010, 10:58
Bericht:
Hoi Stynus,

Bedankt voor de reactie.Zal waarschijnlijk 3mm leds gebruiken zo kan het display compact blijven.
Bedankt voor het plaatsen van het schema op het net.
Mvgr Stephan
Naam: stef
Datum: 17 April 2010, 19:30
Bericht:
Hoi Stynus,
Ben gestart met het project.Had nog een vraagje betreffende de voeding.
Mag de GND van de tweede wikkeling van de transfo(die gebruikt wordt voor de klokpuls)aangesloten worden aan de GND van de eerste wikkeling,dus aan de GND aan de DC zijde.
Ben namelijk niet echt thuis in de elektronica maar ben de zaak aan het leren.Heb het echter nooit geleerd op school,doet het nu in mijn vrije tijd,zelfstudie.

Alvast bedank
Stef
Naam: Stynus
Datum: 17 April 2010, 21:29
Bericht:
Die hangt idd zoals in het schema te zien is aan de massa.

Mvg,
Stynus
Naam: stef
Datum: 22 April 2010, 23:58
Bericht:
Hoi Stynus,
net de klok proef doen draaien maar stoot op hetzelfde probleem zoals Fabian voorhad namelijk:
net klok op geëtste print gemaakt, en getest. alles werkt, maar: ik krijg geen minuten en uren. zo dus: 00:09 en dan gaat ie weer naar 00:00 ook met de uren: 09:00 -> 00:00 er komen dus geen tientallen bij, niet als de klok loopt, en ook niet als ik het handmatig instel

Weet u soms hoe fabian destijds het probleme heeft opgelost?Zou het iets te maken hebben met de transitoren?

Alvast bedank voor de eventuele hulp
Mvgr Stef
Naam: stef
Datum: 24 April 2010, 20:14
Bericht:
Hoi stynus,
heb de klok werkende gekregen maar die loopt veel te snel vooruit.Ik lees dat dit eventueel op te lossen is met het plaatsen van een weerstand.Kan u mij uuitleggen hoe de weerstand precies moet aangesloten worden?
Misschie een domme vraag maar ik heb feitelijk geen elektronica gestudeerd

Mvgr Stef
Naam: Stynus
Datum: 26 April 2010, 21:39
Bericht:
Denk dat we beter hier verder gaan met de oplossing: http://www.schematheek.net/index.php?p=forum/topic&t=371&n=1

Mvg,
Stynus
Naam*:
Email: (Wordt niet weergegeven)
  Waarschuw me als er reacties op deze pagina zijn
Tekst*:
 
Powered by Scriptsmill Comments Script

Top

© 2002-2010 Elektronica Stynus.
Valid XHTML 1.0