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



Schema elettrico - Electric diagram




Prototipo, alimentatore - Prototype, power supply




Prototipo, interfaccia seriale - Prototype, serial interface




Prototipo, vista generale - Prototype, seen general




Prototipo, particolari - Prototype, details




Alimentatore e pulsanti - Power supply and buttons




Prototipo, particolari - Prototype, details




Prototipo, particolari - Prototype, details




DS32khz - DS1306 - EEPROM




Microcontroller 18F4620




Data sheet DS1306 DS1306.PDF (287k)
Data sheet DS32Khz DS32Khz.PDF (453k)
Data sheet 25LC640 25LC640A.pdf (511k)

File .HEX italiano per PIC 18F4620 versione 1.05 del 16/05/2012Clock18F.rar (11k)


Componenti Elettronici



I files .HEX nonchè il contenuto di queste pagine è stato rilasciato per applicazioni didattiche SENZA fine di lucro. Per qualsiasi altro tipo di applicazione potete contattarmi via email.

The files. HEX and the content of these pages was released for teaching applications WITHOUT end of I make money from. For any other type of application it be able to contact me via email.


© Copyright tony@microt.it