Home Forum Scrivi una domanda di elettronica ……orologio digitale………

Questo argomento contiene 3 risposte, ha 4 partecipanti, ed è stato aggiornato da  fra83 3 anni, 8 mesi fa.

Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #57518

    è da tanto che seguo il sito in anonimato e oggi ho fatto il grande passo…….mi sono iscritto come utente a tutti gli effetti….XD XD XD XD…….bando alle ciance, volevo chiedere agli utenti del sito se mi sapete indicare come posso iniziare i primi passi verso la costruzione di un orologio digitale……..premetto che è da poco che ho iniziato a smenettare seriamente con il PIC16F84 (regalato da mio zio insieme al ludipippo) quindi se avete qualche proposta che utilizza questo processore, fate pure…….la terminologia la sto acquisendo……….grazie amiciiiiiiiiiiiii XD XD XD XD

    #68973

    Alex87ai
    Membro

    L’orologio digitale è forse il primo progetto che si cerca di realizzare quando si acquisiscono le prime basi sulla programmazione di un microcontrollore (è stato infatti il mio primo progetto quando ho imparato a programmare in Assembly il microcontrollore PIC16F84). Per iniziare analizzerei prima il lato di generazione della base dei tempi.
    Tu devi generare una segnale che abbia una frequenza di 1Hz e i modi per farlo sono diversi, te ne elenco qualcuno:
    1) Generare il segnale sincronizzante tramite oscillatore esterno (sconsigliato perché aumenta le dimensioni del circuito e poi ci sono soluzioni sicuramente più valide e furbe);
    2) Generare il segnale a 1Hz partendo dai 50Hz della tensione di rete (se devi alimentare l’orologio con un piccolo trasformatore + ponte di diodi + condensatore di bulk allora questa potrebbe essere una buona soluzione, perché devi sapere che la frequenza di rete è altamente stabile, il che conferirebbe la stessa stabilità al tuo orologio). In linea di principio il sistema è quello presentato al seguente link http://www.inftube.com/tecnica/elettronica/GENERATORE-DI-CLOCK-SINCRONO-C65419.php se non fosse che bisogna aggiungere un ulteriore diodo e un condensatore elettrolitico da almeno un migliaio di uF perché nel caso del link il trasformatore e il ponte di Graetz servono solo a generarti un riferimento di 100Hz, mentre con la modifica che ti proponevo è possibile ricavare sia la tensione primaria di alimentazione che il suddetto riferimento. I 100Hz vanno successivamente decimati tramite due contatori decadici in cascata (come fatto al link che ti ho consigliato) oppure se utilizzi un microcontrollore dai in pasto questo segnale ad un pin di input digitale per andare a triggerare il conteggio di un contatore saturato a 100.
    3) Utilizzi un circuito RTC (Real Time Clock) che tipicamente è realizzato tramite un solo circuito integrato al quale ci devi aggiungere un quarzo esterno da 32.768KHz (per intenderci quelli presenti in tutti gli orologi al quarzo) e una batteria al litio formato CR2032. Quest’ultima servirà a mantenerti sincronizzato l’orologio quando viene via l’alimentazione. Il vantaggio dell’utilizzare tale sistema è che la gestione dei conteggi di secondi, minuti, ore, giorni, mesi, anni è demandata totalmente ad un circuito integrato esterno e quindi non devi preoccuparti di implementare tu quei conteggi, ma lo svantaggio è che richiede una programmazione del microcontrollore un po’ più avanzata perché dovresti sapere implementare la comunicazione SPI tra micro e RTC e in più dovresti scrivere una routine apposita per l’estrazione delle informazioni utili dai pacchetti scambiati via SPI. Per farla breve, RTC e microcontrollore cooperano tra loro tramite scambio di pacchetti via SPI, quindi se devi regolare l’ora il micro deve andare a scrivere nel RTC, mentre per poter aggiornare l’ora sul display il micro deve andare a leggere dal RTC. Quindi se sei alle prime armi, forse questo approccio è poco appropriato.
    4) Puoi generare il riferimento di 1Hz partendo dal clock del tuo microcontrollore. Questa a mio parere è la soluzione più semplice dopo la generazione del riferimento a partire dalla tensione di rete a 50Hz. Infatti, se la scelta del valore del quarzo è fatta in maniera oculata, generare 1Hz diventa veramente semplice. Ti faccio un esempio considerando un microcontrollore PIC: parti da un quarzo di 3,2768MHz (che assomiglia molto a 2^15), dividi per 4 che è il numero di cicli di clock richiesti per l’esecuzione di un’istruzione elementare, dividi per 128 che è il prescaler del TMR0 e infine dividi per 256 che rappresenta il numero di conteggi che il TMR0 compie per andare in overflow e generare un evento di interrupt. Dai calcoli ti esce il numero 25, cioè ti toccherà attendere 25 eventi di interrupt di TMR0 prima di incrementare la cifra dei secondi. Implementerai nella routine di interrupt handler un variabile count che incrementata e controllata periodicamente verrà azzerata quando raggiungerà il valore 25, in corrispondenza dell’incremento della cifra secondi.
    Spero di essere stato chiaro! In definitiva l’ultima opzione è forse quella più semplice da considerare!

    #68986

    linus
    Membro

    puoi avere una possibilità più ambiziosa con quel PIC, oggi c’è una smania degli appassionati nella realizzazione di orologi digitali, ma non i soliti orologi, questi orologi che visualizzano l’ora sia in digitale che in analogico, grazie al accensione e allo spegnimento dei led in modo tale da creare un effetto visivo molto bello, si chiamano propeller clock. Puoi trovare parecchio materiale in rete relativamente all’argomento e svariate soluzioni fatte anche con i PIC16F84.

    #69075

    fra83
    Membro

    Per cominciare cerca di capire come funzionano i Timer, io avevo realizzato un orologio digitale in assembler con un microcontrollore atmega e non era stato facilissimo, il tutto funzionava senza quarzo ma con un oscillatore RC quindi l’orologio non risultava essere molto preciso. Ti consiglio di aggiungere un quarzo esterno. Se scrivi il codice in C te la cavi con qualche routine non troppo difficile.
    Per quanto riguarda il circuito se sei alle prime armi ti consiglio dei display 7 segmenti, mettine 6 2 per i secondi, 2 per i minuti e 2 per le ore e pilotali con la tecnica del multiplexing cioè ad ogni coppia di display fai corrispondere un transistore bjt che ti attiva una coppia per volta.
    Quando avrai preso dimestichezza con queste cose cambia microcontrollore prendi un 16f877 e prova ad usare un RTC tipo 1307 o simili pilotabile via I2C e prova ad usare un display LCD.

Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)

Devi aver eseguito l’accesso per poter rispondere a questa discussione.