IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

12
[email protected] IrrigaPIC Centralina a 8 uscite per irrigazione con valvole a 24V ac con programma settimanale. Lo scopo del progetto è la realizzazione di una centralina per il controllo di elettrovalvole in alternata per l’irrigazione del giardino… uno dei requisiti è il costo contenuto. Schema a blocchi La presa “220 in” dotata di interruttore (recuperati da alimentatori ATX) alimenta il “trasformatore” (recuperato da qualche apparecchiatura surplus) da cui si ottiene 12V DC non regolati. Il “Conv dc/dc” converte i 12V DC in 5 Volt regolati, usati per alimentare “Main CPU” e “RTC”. Il modulo “RTC” ha una batteria di backup (cella al litio recuperata da un pacco di batterie di un portatile) per mantenere data e ora in caso di mancanza di alimentazione di rete. La “Scheda relè” utilizza l’alimentazione a 12 V. I relè utilizzati sono 8 del tipo mini e 1 del tipo normale, utilizzato per comandare una presa con uscita 220V. In pratica quando almeno una delle 8 uscite è attiva, c’è tensione di rete anche sulla presa comandata in modo da poter attivare l’alimentatore a bassa tensione (24V ac) solo al momento del bisogno… oppure potrebbe essere utilizzata per comandare una pompa per pescare l’acqua da utilizzare per irrigare… Tra un evento (accensione o spegnimento) e l’altro “Main CPU” è posta in stato di SLEEP per ridurre il consumo di corrente; viene risvegliata da 2 diversi interrupt legati alla batteria scarica e interrupt da parte del modulo RTC (orario del programma impostato dall’utente)

description

IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

Transcript of IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

Page 1: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

IrrigaPIC

Centralina a 8 uscite per irrigazione con valvole a 24V ac con programma

settimanale.

Lo scopo del progetto è la realizzazione di una centralina per il controllo di elettrovalvole in alternata per

l’irrigazione del giardino… uno dei requisiti è il costo contenuto.

Schema a blocchi

La presa “220 in” dotata di interruttore (recuperati da alimentatori ATX) alimenta il “trasformatore”

(recuperato da qualche apparecchiatura surplus) da cui si ottiene 12V DC non regolati. Il “Conv dc/dc”

converte i 12V DC in 5 Volt regolati, usati per alimentare “Main CPU” e “RTC”. Il modulo “RTC” ha una

batteria di backup (cella al litio recuperata da un pacco di batterie di un portatile) per mantenere data e ora

in caso di mancanza di alimentazione di rete. La “Scheda relè” utilizza l’alimentazione a 12 V. I relè utilizzati

sono 8 del tipo mini e 1 del tipo normale, utilizzato per comandare una presa con uscita 220V. In pratica

quando almeno una delle 8 uscite è attiva, c’è tensione di rete anche sulla presa comandata in modo da

poter attivare l’alimentatore a bassa tensione (24V ac) solo al momento del bisogno… oppure potrebbe

essere utilizzata per comandare una pompa per pescare l’acqua da utilizzare per irrigare…

Tra un evento (accensione o spegnimento) e l’altro “Main CPU” è posta in stato di SLEEP per ridurre il

consumo di corrente; viene risvegliata da 2 diversi interrupt legati alla batteria scarica e interrupt da parte

del modulo RTC (orario del programma impostato dall’utente)

Page 2: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

Convertitore dc/dc E’ utilizzato un MAX5035B di maxim-ic.com (ottenuto in campionatura gratuita) nel suo schema classico

indicato a pagina 1.

Il C di ingresso sono in realtà 3 : 100n,1u, 100u, l’induttore è 680uH (CoilCraft campionatura gratuita), il

CRef è 10n, il C di uscita 680u insieme a 100n.

Uno schema per la millefori potrebbe essere il seguente

C3 è in realtà l’induttore da 680uH. Ingresso in basso a destra, uscita (5V) in alto a sinistra.

Page 3: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

Main CPU

La scheda principale contiene

Processore Pic 18F2550 (Xtal 8Mhz con PLL) (campionatura gratuita Microchip)

RTC I2C DS1337 (Xtal 32Khz) (campionatura gratuita Maxim-ic.com)

Interfaccia di debug USART

Batteria tampone

2 tasti (accesso USB / testo TEST)

2 LED (status / batteria)

I pin relativi alla PORTB (21-28) attivano i relè in miniatura.

Pinout della CPU

Page 4: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

Funzionamento

Mancando completamente di display, l’impostazione iniziale della centralina viene fatta attraverso il

collegamento USB ad un PC tramite un apposito programma oppure sempre con lo stesso programma che

modifica il firmware prima della programmazione col PicKit (modalità USB).

All’accensione il firmware verifica la pressione dei tasti SUSB/SKEY entrando rispettivamente in modalità

USB o TEST; se nessuno dei tasti risulta premuto viene eseguito il programma principale: vengono letti data

e ora dal RTC, questi vengono confrontati con i dati presenti nell’EEPROM del PIC e alla presenza di eventi

per quell’ora (siano accensioni o spegnimento) verranno attivati o disattivati i relè corrispondenti.

Quindi viene letto l’evento successivo dalla EEPROM e impostato sul RTC l’ allarme la data a l’ora

dell’evento. A questo punto il PIC si pone in modalità SLEEP (con comparatori accesi) e verrà svegliato solo

da:

batteria tampone scarica (BATInt)

allarme timer (RTCInt)

Interrupt BATInt

Attiva il LED di segnalazione batteria scarica

La tensione di soglia di comparazione è generata usando il “COMPARATOR VOLTAGE REFERENCE

MODULE” (pag 281 del datasheet del P18F2550)

Interrupt RTCInt

Attiva il led di status, con un lampeggio rapido

Legge dalla EEPROM l’evento relativo alla data /ora di quel momento e attiva/disattiva i carichi.

Quindi legge l’evento successivo, spegne il LED di status, imposta nell’RTC il nuovo allarme e si pone

in SLEEP

Organizzazione memoria interna PIC

I 256 byte della EEPROM del PIC sono organizzati in 81 slot in grado di contenere eventi.

Un evento può essere un attivazione/disattivazione di un relè in un dato giorno/ora.

Un evento può accomunare più attivazioni/disattivazioni.

Page 5: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

I primi 8 byte sono riservati e possono contenere ad esempio il salvataggio della data/ora in fase di cambio

batteria.

I byte dalla posizione 8 alla posizione 253 sono riservati agli slot di informazione eventi. Ogni slot occupa 3

byte, ed ogni byte è così composto:

Byte 1: B7..B5 => giorno della settimana, B4..B0 => orario.

Il giorno della settimana :

0: non impostato

1: Domenica

7: Sabato

Byte 2: minuti

Byte 3: attivazioni PORTB

Segnalazione stato led I led, di norma spenti, sono di due tipi:

Led batteria (verde) indica batteria tampone scarica. Rimane acceso per ricordare di sostituire la batteria

interna

Led stato (rosso): può lampeggiare in 2 modi (corto per OK, lungo per Errore), oppure acceso Fisso (di

norma un problema)

Page 6: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

All’avvio

Pressione SUSB : Led bat ON, Led Status ON => comunicazione USB HID Attivata

Pressione SKEY: Led Status ON (1 secondo), Lampeggio OK.

Poi il Led Status rimane acceso per 2 secondi per poi spegnersi e a questo punto

Se tasto SKEY è ancora premuto

Salva data e ora corrente, il dispositivo si mette in Stop (Led Status ON Fisso)

Se tasto SKEY non è più premuto

Si attiva la modalità di test che accende in sequenza gli 8 relè per 9 secondi ognuno;

durante il test il led status sarà accesso; terminato il testo un lampeggio, quindi il

dispositivo si mette in STOP accendendo il LED Status

Comunicazione USB I comandi principali inviati nella comunicazione USB HID (report da 64 byte) sono

USB_FIRMWAREINFO : il dispositivo invia la versione del firmware (stringa di 29 byte) al USB HOST

USB_GETORA: il dispositivo legge l’RTC e invia data e ora al USB HOST (8 byte)

USB_LEGGISTATO: il dispositivo invia lo stato di alcune porte del PIC al USB HOST (6 byte)

USB_SETORA: l’USB HOST invia il nuovo orario da importare sul RTC (8 byte), vedi tracciato USB_GETORA

USB_SETPORTB: l’USB HOST invia il nuovo valore di PORTB (2 byte)

USB_RDRMEM: il dispositivo invia tutto il contenuto della EEPROM in blocchi da 64 byte.

USB_SCRMEM: l’USB HOST scrive 256 byte che andranno a sovrascrivere il contenuto della EEPROM

USB_DEBUG: il dispositivo legge il RTC e inizializza la gestione degli slot, leggendo il primo (5 byte)

USB_GETSLOTIDX: il dispositivo legge lo slot indicato alla posizione 1 del report HID, l’ora RTC e ne

restituisce il valore (8 byte)

Page 7: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

Scheda relè

Questa parte del circuito è stata realizzata come scheda separata in modo da poterla configurare in modo

personalizzato. In figura sono rappresentati solo il relè numero 1 e il relè numero 8 , i rimanenti sono

collegati in modo analogo. Necessita di una alimentazione +12V DC (non stabilizzati). Per poter pilotare in

modo adeguato le bobine dei relè invece di usare transistor-resistenze-diodo si è fatto uso dell’integrato

ULN2803 (campionatura gratuita ti.com), tranne che per il relè delle presa comandata pilotano con un

normale transistor.

Porta di ULN2808 e pinout del componente:

Realizzazione su mille fori (progetto con lochMaster):

Page 9: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

Uno sguardo al firmware I sorgenti sono in C, il compilatore mikroC 8.2.0.

Le impostazioni del progetto configurano un quarzo da 8 MHz.

Per alimentare correttamente il PLL per l’USB (che accetta solo frequenze da 4Mhz) si deve dividere il

“primary oscillator” per 2 (PLL Prescaler), quindi dividere per 2 questi 96 MHz per ottenere i 48MHz del bus

USB (USBDIV=1). L’uscita del PLL viene usato anche per alimentare il primary clock, dividendo anch’esso per

2 (CPUDIV), ottenendo un clock da 48Mhz.

Visto il “massiccio” utilizzo dei comparatori, ecco di seguito la configurazione usata: servivano 2 comparatori indipendenti ma con un riferimento ad una tensione comune di soglia. Perché i comparatori ? Perché sono in grado di risvegliare il PIC dalla modalità di SLEEP, stato in cui viene posta la CPU tra un evento e l’altro. E la tensione di soglia , quale utilizzare ? Beh visto che un indicatore è la batteria scarica, potremmo usare un valore intorno ai 3V… L’altro comparatore è usato “impropriamente” per leggere lo stato del PIN “INT” dell’RTC; questo pin è tenuto a livello Alto dal RTC fino a quando non scatta un evento impostato che lo porta a livello basso; si sarebbe potuto utilizzare un normale PIN di I/O con interrupt sul cambio di stato, ma avendo già impostato 1 comparatore, anche l’altro, con le stesse modalità, può essere utilizzato senza troppi problemi. Il registro principale è il CMCON

Page 10: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

È stato configurato in questo modo: CMCON=0b00000110; bit 7 C2OUT: Comparator 2 Output bit

0 = C2 VIN+ < C2 VIN- bit 6 C1OUT: Comparator 1 Output bit

0 = C1 VIN+ < C1 VIN- bit 5 C2INV: Comparator 2 Output Inversion bit

0 = C2 output not inverted bit 4 C1INV: Comparator 1 Output Inversion bit

0 = C2 output not inverted bit 3 CIS: Comparator Input Switch bit

Per impostare la tensione di soglia si utilizza il “Comparator Voltage Reference Module” disponibile su diversi PIC. In pratica è una rete di 16 resistenze che dividono il valore della tensione di alimentazione in una tensione che può essere usata come riferimento per il comparatori interni e/o portata sull’uscita del pin dedicato. Il registro che controlla il tutto è il

E in questo progetto è configurato in questo modo CVRCON = 0b11001000; bit 7 CVREN: Comparator Voltage Reference Enable bit

1 = CVREF circuit powered on bit 6 CVROE: Comparator VREF Output Enable bit(1)

1 = CVREF voltage level is also output on the RA2/AN2/VREF-/CVREF pin bit 5 CVRR: Comparator VREF Range Selection bit

0 = 0.25 CVRSRC to 0.75 CVRSRC, with CVRSRC/32 step size (high range) bit 4 CVRSS: Comparator VREF Source Selection bit

0 = Comparator reference source, CVRSRC = VDD – VSS bit 3-0 CVR3:CVR0: Comparator VREF Value Selection bits (0 ≤ (CVR3:CVR0) ≤ 15)

Page 11: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

When CVRR = 0: CVREF = (CVRSRC/4) + ((CVR3:CVR0)/32) • (CVRSRC) (5/4) + ((8/32) * 5)=1.25 + 1.25 = 2.5V

Quindi la tensione di riferimento per i comparatori e disponibile come Test Point su RA2 è di circa 2.5V (ovviamente dipende dalla tensione di alimentazione). Interrupt Per la gestione degli interrupt si devono abilitare dal registro INTCON

GIE=> Global Interrupt Enable bit PEIE=> Peripheral Interrupt Enable bit E dal registro PIE2 (contain the individual enable bits for the peripheral interrupts.) CMIE=>Comparator Interrupt Enable bit Nella routine di gestione si dovrà poi resettare il bit PIR2.CMIF

La gestione del RTC è piuttosto semplice ed è inclusa nel file ds1337_stuff.c, le funzioni principali

implementate sono le seguenti

DS_NOW(void);

DS_setOrario(unsigned short hh, unsigned short mm,unsigned short ss);

DS_setData(unsigned short dd,unsigned short gg,unsigned short mm, unsigned short aa);

DS_setAllarme(unsigned short hh, unsigned short mm,unsigned short dd);

DS_getAllarme(void);

DS_clearAllarme();

Per semplificare la lettura dei dati dalla eeprom del PIC è stata create una libreria apposita (EEprom_stuff.c)

che simula una lista

void EE_Reset();

unsigned short EE_Eos();

void EE_Open();

void EE_READSlot();

void EE_moveNext();

void EE_moveFirst();

void EE_moveLast();

void EE_moveTo(unsigned short indexBaseZero);

Conclusione

La centralina è stata provata tutto il mese natalizio per accendere le lucine sul mio balcone.. e non è

esplosa! Dal punto di vista elettronico non è una gran complessità, e sono per la maggior parte componenti

reperibili in campionatura gratuita o dal basso costo e quindi le premesse iniziali non sono state disattese…

costa molto di più il contenitore (scatola di derivazione per impianti elettrici).

Samples PIC18F2550 PIC www.microchip.com DS1337 I²C Serial Real-Time Clock www.maximintegrated.com MAX5035B 1A Step-Down DC/DC Conv. www.maximintegrated.com ULN2803 Octal darlington transistor array www.ti.com T81H5D312-05 5V PCB relay www.te.com RTH14012 12V Power PCB relay www.te.com DR0810-684L 680uH Coil www.coilcraft.com 4900-9048RE64 [email protected] Transformer www.te.com

Page 12: IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac

[email protected]

Schema realizzazione scheda CPU