Progetto di Microcontrollori Cronotermostato per Caldaia
Obiettivo del Progetto Realizzazione di un dispositivo elettronico capace di gestire l accensione di una caldaia mediante il controllo della temperatura ambiente di un locale, seguendo delle fasce orarie di accensione programmabili dall utente. Caratteristiche principali Misurazione della temperatura mediante sonda digitale DS18B20 con protocollo di comunicazione 1-Wire1 Interfaccia utente formata da un display alfanumerico e tasti funzione Utilizzo del serial real-time clock (RTC) DS1307 con protocollo di comunicazione I 2 C e oscillatore esterno compensato in temperatura DS32KHz Interfaccia di potenza formata da un relè deviatore da 16 A Modalità di funzionamento OFF, Manuale, ON Microcontrollore della serie PIC 16F917
Il Circuito
PIC 16F917 Caratteristiche Principali: 8-Bit Microcontroller 44 Pin OSC interno 8MHz Program Memory 8KB SRAM EEPROM 352B 256B Porte I/O 35 Timers 8/16bit 2/1 CCP 2 ADC 10 Bit 1 ICSP (Programmazione) 35 Istruzioni di base
DS18B20 Package e configurations pin : Struttura interna sensore :
DS18B20
DS18B20
Protocollo 1-Wire1 Più sensori sullo stesso filo: Esempio controllo presenza sensore:
Protocollo 1-Wire1 Routine di Reset: RESET: IMPUT CLRF PRESENZA OUTPUT PAUSA 500 IMPUT PAUSA 70 BTFSS PORTC,DQ INCF PRESENZA,1 PAUSA 430 RETLW 0
Lettura della Temperatura Lettura Temperatura Invio comando di RESET Lettura della Temperatura Invio comando Skip Rom (CCh) Invio comando di RESET Invia comando Converti Temp (44h) Separo idatiletti inparte intera, decimale e segno Attendi 750 ms Segno.bit0= 1 Invio comando di RESET Invio comando Skip Rom (CCh) Complemento a 2 Invio comando Leggi Temp (BEh) Stampa la temperatura sul display Fine
DS1307 Schema a blocchi: Package :
DS1307
Memoria interna DS1307: DS1307
DS1307 Oscillatore esterno DS32KHz (32,768 KHz):
DS32KHz Accurate to ±4 Minutes/Year (-40 C to +85 C) Accurate to ±1 Minute/Year (0 C to +40 C)
Più dispositivi sullo stesso bus: Bus I 2 C Timing diagram:
Bus I 2 C
Bus I 2 C Scrittura: Lettura:
Modalità mista: Bus I 2 C
Leggere i dati dal DS1307 Leggere un Dato I 2 C Start Invia comando lettura e indirizzo da dove leggere Invia ACK Inizio lettura Ricevere ancora byte? Ricevo un bit Invia not ACK Bit ricevuti= 8 Invia Stop Return
Inviare i dati dal DS1307 Inviare un Dato I 2 C Start Invia com ando di s c r it tu r a e in d ir iz z o d a do ve in iziare a scrivere M etto il d ato da scrivere in un registro a scorrim ento In v io d i u n bit Bit trasm es si= 8 Ricevi ACK Inviare ancora byte? I 2 C Stop Return
Display LCD 20X4
Display LCD 20X4
Interfaccia Utente Menù 1: Accesso al menù mediante l ausilio dell interrupt sulla porta RB0 del PIC (dove connesso il pulsante MENU /SET) Possibilità di scegliere cosa impostare mediante i pulsanti INCR e MENU /SET; Il pulsante INCR scorre il menù Il pulsante MENU /SET accede al sottomenù selezionato I Pulsanti:
Interfaccia Utente Interrupt e Menù Evento di interrupt avvenuto Stampa "Menù 1" su LCD Tasto "MENU'/SET" Premuto? Fine? Stampa la schermata principale su LCD Tasto "INC" Premuto? Entra nel menù selezionato dal cursore Riattiva Interrupt Sposta il cursore per selezionare il menù successivo Return da Interrupt
Interfaccia Utente Da questo menù è possibile impostare sia l ora che la data Premendo il tasto MENU /SET si conferma la cifra e sposta il cursore su quella successiva Premendo il tasto INCR si incrementa la cifra selezionata in modo ciclico Quando si conferma sull ultima ultima cifra della data i dati vengono salvati in memoria Menù 2:
Interfaccia Utente Menù 2 Stampa su LCD il Menù 2, l'ora e la data attuale Tasto "MENU'/SET" Premuto? Ultima cifra? Salvo e sposto il cursore sulla cifra successiva Salvo i dati impostati nel DS1307 Tasto "INCR" Premuto? Ritorno al "Menù 1" Incrementa la cifra selezionata dal cursore
Interfaccia Utente Da questo menù è possibile impostare tre programmi di accensione distribuiti nell arco delle 24H Premendo il tasto MENU /SET si inizia a modificare l accensione selezionata successivamente, permette di confermare la cifra e passare alla successiva Premendo il tasto INCR si incrementa la cifra selezionata, oppure passa all accensione accensione successiva per poi andare su fine Menù 3:
Interfaccia Utente Menù 3 Stampa su LCD il menù 3 e la prima accensione salvata in eeprom Tasto MENU'/SET premuto? Siamo su Fine? Inizio modifica accensione selezionata Tasto INCR premuto? Ritorno al Menù 1 Tasto INCR premuto? Incremento cifra selezionata Carico i dati dell'accensione successiva dalla memoria e li stampo su LCD Tasto MENU'/SET premuto? Ultima cifra? Salva e passa alla successiva Salva i dati in EEPROM epermettedi midificare un'altra accensione
Interfaccia Utente Da questo menù è possibile settare il valore della temperatura ambiente da un range che va da 15 a 30 C Premendo il tasto MENU /SET si conferma la temperatura visualizzata e la salva in memoria Premendo il tasto INCR incrementa la temperatura in modo ciclico nel range sopra citato Menù 4:
Interfaccia Utente Menù 4 Stampa su LCD il Menù 4 e il valore di temperatura precedentemente salvato in memoria Tasto MENU'/SET premuto? Salva il dato in memoria Ritorno al Menù 1 Tasto INCR premuto? Temp=30? Riporta il valore della temperatura al minimo (15 C) Incremento il valore della temperatura
Interfaccia Utente Mediante lo switch in figura è possibile usufruire di tre funzioni ovvero: 1. OFF il dispositivo spegne la caldaia senza effettuare nessun controllo 2. PROG il dispositivo accende la caldaia secondo le fasce orarie tenendo conto della temperatura ambiente impostata 3. ON il dispositivo accende la caldaia senza controllare le fasce orarie ma controllando solo la temperatura ambiente impostata
Interfaccia di Potenza L interfaccia di potenza è costituita da un relè deviatore da 16 A 250 V il cui stato è normalmente aperto. La bobina ha una tensione nominale di 12 V Esso viene pilotato da un transistore (2N2222) usato come interruttore
Alimentazione della scheda La tensione di alimentazione della scheda è di 12 V stabilizzati per poter alimentare il relè,, al suo interno è situato un regolatore di tensione LM7805 che abbassa e stabilizza la tensione sui 5 V per poter alimentare tutti gli altri dispositivi della scheda tra cui anche il microcontrollore
Main Loop Start Setto impostazioni oscillatore, direzionalità delle porte e attivazione interrupt Inizializzo il display LCD e stampo la schermata principale Invio comando Converti Temp. Leggo i dati dal DS1307 e li converto Temp > Soglia Switch in posizione OFF? Leggo la Temp Flag= 1? Switch in posizione manuale? Spegni Caldaia Accendi Caldaia Confronto ora attuale con programmazi oni salvate Setto un Flag Stampo Ora Data e Temp su LCD Leggo la Temp
Realizzazione PCB Il primo passo x la realizzazione del PCB è stato quello di disegnare lo stampato del circuito utilizzando il software Eagle
Realizzazione PCB Il secondo passo è stato quello di stampare la maschera del circuito sul foglio lucido da utilizzare nel processo di fotoincisione
Realizzazione PCB Il processo di fotoincisione ha consistito nell esporre esporre la basetta presensibilizzata, sulla quale è stata posta la maschera, ai raggi UV emessi da un bromografo artigianale per un tempo di 1 e 05.
Realizzazione PCB Una volta effettuata la fotoincisione si è passato allo sviluppo immergendo la basetta in una vaschetta contenente della soda caustica. Questo processo asporta la pellicola fotosensibile colpita dai raggi UV nel processo precedente
Realizzazione PCB A questo punto la basetta è stata immersa in una bacinella contenente del cloruro ferrico che intacca il rame in eccesso lasciando inalterate le piste che formano il circuito
Realizzazione Scheda
Realizzazione Scheda
Realizzazione Scheda
Realizzazione Scheda