Orologio
con LCD e PIC 18F4620
Questa è la pagina introduttiva dell'orologio con PIC 18F4620
Premi il pulsante in alto a sinistra per accedere all'ultima versione.
Un ringraziamento speciale a Daniele Bucciarelli
Grazie al suo prezioso lavoro, presto sarà disponibile anche il circuito stampato (PCB) per il montaggio di questo orologio e... ci saranno altre novità.
Chi volesse contattarlo può scrivergli qui: daniele@microt.it
Riassunto delle caratteristiche tecniche
L'ottima precisione dell'orologio è data dall'oscillatore compensato in temperatura DS32Khz il datasheet riporta max +/-1min all'anno con temperatura da 0 a 40°C e max +/-4min all'anno con temperatura da -40 a +85°C. Questo orologio ha tre sveglie indipendenti ed ogni sveglia può essere impostata nei seguenti modi:
Tutti i giorni, cioè quando si disattiva la sveglia, la stessa resta già preimpostata per il giorno successivo. Una sola volta, cioè quando si disattiva la sveglia, la stessa resta disattivata. Da Lun a Ven, la sveglia suonerà all'ora impostata tutti i giorni da lunedì a venerdì, senza doverla mai toccare, questa sveglia non suona nel week-end (sabato e domenica). Da Lun a Sab, questa sveglia è simile alla precedente ma per i più sfortunati che si devono alzare alla stessa ora anche al sabato, per cui questa sveglia non suona solo alla domenica. In caso di accavallamento degli orari di suonata tra le sveglie, tra loro esiste una priorità cioè sveglia 1, poi sveglia 2 ed infine sveglia 3, la sveglia 1 è quella a sinistra nel display, seguita dalla sveglia 2 al centro e dalla sveglia 3 a destra. Le uscite disponibili per le sveglie sono le seguenti: Il buzzer che ha un'uscita intermittente, oppure al pin 6 (RA4) è presente un'uscita fissa a 1 logico per tutta la durata della suonata e vale per tutte e tre le sveglie, oppure pin 2 (RA0) per la sveglia 1, pin 3 (RA1) per la sveglia 2 e pin 4 (RA2) per la sveglia 3. Tutte queste uscite sono da 1 logico durante le suonate o lo snooze. Restano fisse a 1 logico per poter pilotare circuiti DAST, radio digitali ecc... Penso che questa gestione di sveglie sia esauriente ma... se qualcuno ha ulteriori consigli per favore me lo faccia sapere.
Quando una sveglia suona, può essere spenta tramite il pulsante PL1 oppure tramite il pulsante PL5 è possibile attivare la funzione Snooze (pisolino) che farà suonare nuovamente la sveglia esattamente 10 minuti dopo. Quando la sveglia risuonerà, è possibile spegnerla come prima tramite il pulsante PL1 oppure nuovamente con il pulsante PL5 Snooze, questo ciclo può essere ripetuto all'infinito.
La luminosità del display lcd è regolabile in 10 step in modo che sia possibile avere una buona luminosità di giorno e che di notte non dia fastidio. Questo orologio è dotato di una eeprom esterna al micro che può memorizzare fino a 255 eventi tra feste e compleanni gestisce fino a 3 eventi visualizzati in successione nello stesso giorno. E' dotato di una batteria da 3V al litio che serve come backup al DS1306 che è l'integrato orologio, questa batteria dura circa 10 anni. Quando viene a mancare la tensione di rete, l'orologio si spegne ma le sveglie ed il conteggio dell'orologio continuano senza alcun problema. L'unica cosa è che in questa condizione non è possibile visualizzare l'ora e le sveglie non suoneranno poiché il micro non è alimentato. L'orologio DS1306 contiene al suo interno una zona RAM nella quale vengono memorizzati i dati delle sveglie più un dato di controllo, se per caso la batteria viene rimossa oppure si scarica ed i dati contenuti nella ram non sono più validi quando l'orologio viene rialimentato una funzione controlla che i dati contenuti nella ram del DS1306 siano validi altrimenti obbliga l'utente ad impostare il datario, l'orologio e le sveglie. E' presente anche un led (facoltativo) che segnala il sincronismo dell'orologio a 1Hz. Questo orologio dispone anche di una uscita seriale RS232 (facoltativa) che trasmette il datario con l'ora corrente ed un mark per poter sincronizzare eventualmente altre apparecchiature.
Quando le sveglie non suonano il pulsante PL1 serve per entrare nel menù principale e come OK di conferma nelle scelte del menù, PL2 per entrare nel menù gestione compleanni e feste della eeprom e per muoversi "al successivo" nei menù, il pulsante PL3 incrementa, il pulsante PL4 decrementa la retroilluminazione del display e decrementa nei menù, il pulsante PL5 incrementa la retroilluminazione del display e mentre suona una sveglia attiva lo snooze.
15/06/2011 E' stata rilasciata la versione 1.04 e contiene le seguenti modifiche:
Più volte mi è stato richiesto di modificare la sezione sveglie dell'orologio e così oltre al buzzer che ha un'uscita intermittente, ho aggiunto un out ad uscita fissa, questo out come il buzzer è comune a tutte e tre le sveglie. Avendo altri out a disposizione ho anche aggiunto tre out indipendenti sempre ad uscita fissa. Questi out ad uscita fissa hanno il livello alto durante le suonate.
Sono state aggiunte in modo da poter consentire di eliminare eventualmente il buzzer ed aggiungere altri circuiti come sveglia ad esempio dei DAST, chip radio ecc...
Chiaramente questa versione comprende anche le modifiche della versione 1.03 che risolve il problema di scrittura su eeprom esterna, attenzione la eeprom è del tipo 25LC640A NON 25LC640 è importante perchè l'interfaccia SPI del modello 25LC640A arriva fino a 10MHz.
Visto l’ottimo risultato ottenuto con il progetto del precedente orologio con LCD pilotato da PIC 16F877A, ho pensato di sostituire il micro e passare alla famiglia PIC18 con ben 32K di memoria e senza l'uso di banchi e pagine.
Il funzionamento è simile al precedente orologio realizzato con PIC 16F877A perché questo micro pur essendo molto più potente è pin to pin con il precedente. Vedi le specifiche dell'orologio con PIC 16F877A
Modifiche apportate:
1) Per la gestione della retroilluminazione dell'LCD è stato un PWM disponibile all'interno del micro per cui premendo il pulsante PL4 si diminuisce la luminosità e premendo il pulsante PL5 si incrementa. Premendo questi pulsanti sulla riga 3 del display appare una scala dal minimo al massimo indicante il livello corrente della luminosità, dopo 10 secondi torna al normale funzionamento.
2) Il jumper JP2 se è inserito abilita la trasmissione via seriale RS232, altrimenti la routine viene ignorata.
3) Per scelta è stato mantenuto l'oscillatore compensato esterno da 10MHz (maggiore precisione) , anche se a causa della tolleranza era possibile utilizzare l'oscillatore interno del PIC 18F4620 modificando soltanto qualche routine di temporizzazione.
Utilizzo della EEPROM:
Utilizzo EEPROM esterna 25LC640
65536 Bit organizzati in 8192x8 e pagina da 32 byte
8192:32 = 256 fra compleanni e feste
La pagina da 32 byte è così utilizzata:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Prog |
G |
M |
AH |
AL |
Flag |
|
|
|
|
|
|
Nome |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
Prosegue nome o festa |
Progressivo = Numero progressivo 0~255
G = Giorno
M = Mese
AH = Parte alta dell’Anno
AL = Parte bassa dell’Anno
Flag = 1=Compleanno, 0=Festa
Nome = 20 caratteri per descrivere la festa o scrivere il nome della persona del compleanno.
Flusso gestione EEPROM:
Dalla modalità orologio, premendo PL2 si entra nel menù gestione EEPROM passando attraverso le seguenti funzioni.
Verifica se la EEPROM è correttamente formattata, se sì, salta a menu 1
Se la EEPROM non è formattata, visualizza il menù Formatta/Annulla e premendo PL2 ritorna all’orologio poiché non è possibile proseguire con la EEPROM non formattata, premendo PL1 la EEPROM viene formattata e si passa al menù 1
Menu1: Premendo il pulsante PL2 si ritorna alla modalità orologio, premendo il pulsante PL1 si entra nella modalità visualizzazione EEPROM a pagine.
Dopo aver premuto il pulsante PL1, viene visualizzata la pagina 00 della EEPROM e si hanno tre possibilità, PL1 incrementa l’indirizzamento della EEPROM e visualizza la pagina successiva, PL2 esce ritornando alla modalità orologio, PL3 entra in modifica della pagina corrente.
Entrando in modifica sono attivi tutti e cinque i pulsanti con le seguenti funzioni:
PL1 Visualizza in menù di uscita
PL2 Seleziona il carattere/gruppo di caratteri successivo/i per la modifica
PL3 Incrementa il valore selezionato
PL4 Decrementa il valore selezionato
PL5 Cancella il record corrente
Se viene premuto il pulsante PL1, viene visualizzato il menu di uscita con le scelte:
PL1 Annulla e rilegge
PL2 Salva
Se viene premuto il pulsante PL5, viene visualizzato il menu con le seguenti scelte:
PL1 Annulla
PL2 Elimina
Dettaglio della trasmissione via seriale RS232:
* = Marker sincronismo
Versione italiana:
12345678901234567890123456789012345678901234
* 25 Aprile 2005 - Lun Ore 11:23:03
Versione inglese:
123456789012345678901234567890123456789012345
* 25 April 2005 - Mon Time 11:14:47
© Copyright tony@microt.it