Centralina per il controllo di una pompa d’irrigazione

0_Only_panel

Costruzione di una centralina per il controllo automatico di una pompa dell'acqua utilizzata per l'irrigazione. L'applicazione permette il controllo remoto anche con un telecomando radio e il monitoraggio del livello dell'acqua presente  mediante un Sonar. Un display grafico a colori visualizza lo stato di funzionamento.

Il progetto

La realizzazione della centralina nasce dall'esigenza di gestire una pompa dell'acqua di un pozzo artesiano utilizzato per l'irrigazione. La centralina comanda una pompa funzionante a 230 Vac mediante un relè statico, permette il funzionamento temporizzato con un Timer programmabile e misura il livello dell'acqua presente grazie ad un Sonar. Oltre ai pulsanti di START/STOP  e TIMER presenti nel pannello principale sono gestiti altri due pulsanti remoti e un telecomando radio. Le caratteristiche sono:

Lo schema a blocchi sintetizza le funzioni della centralina:

La scheda controller

La scheda controller contiene gran parte dell'elettronica ovvero il microcontrollore, il ricevitore radio, i due alimentatori (CPU e I/O optoisolati)  e gli optoisolatori necessari per leggere i 4 ingressi a 24 volt e comandare le 4 uscite sempre a 24 Vdc. E' presente anche un RTC e un sensore di temperatura connessi al bus I2C del uP.  Il display grafico a colori è fissato sul pannello operatore e riceve dalla seriale le informazioni da visualizzare.

Il microcontrollore

La scheda utilizza il microcontrollore a 8 bit Microchip 18F4620 con 64 Kbyte di flash codice e 1526 byte di ram. Sono utilizzate molte delle periferiche presenti come indicato nella tabella

in particolare le periferiche capture CCP1/CCP2 insieme ai timer 1/3 sono utilizzate per misurare la durata di segnali digitali con bassa latenza, mentre i principali eventi sono gestiti in interrupt.

Il firmware

Il software è scritto con il linguaggio C ed è basato sull'utilizzo del RTOS Salvo: questo ha permesso di strutturare il programma in 8 task ognuno con funzioni e priorità specifiche:

  • TaskA_Main           gestione pulsanti e funzioni
  • TaskB_CpuClock  verifica e  correzione del clock interno
  • TaskC_InOut          lettura ingressi, analogica, scrittura delle uscite
  • TaskD_Sonar         gestione del Sonar
  • TaskE_Faux           funzioni ausiliarie, orologio, temperatura, livello RSSI
  • TaskF_Diagno       trasmissione dei dati al display grafico
  • TaskG_Receiver   gestione del telecomando radio
  • TaskH_Ntc             misura della temperatura del Sonar con la Ntc

Il display grafico

Il display visualizza le informazioni ricevute dal 18F4620, mediante la porta seriale, relative al funzionamento ovvero lo stato RUN/STOP, il livello dell'acqua, gli allarmi, il timer, la diagnostica ecc. Il modello utilizzato è il uLCD-32PT da 3.2'', risoluzione 320×240 pixel, 65K di colori prodotto dalla 4D SYSTEMS. Utilizzando l'IDE proprietario è possibile creare delle pagine di grafica e salvare il tutto nei 15 Kbyte di flash interna al display. Sono disponibili anche 5 pin di I/O, due porte seriali, bus i2C e lettore per micro SD.

Gestione

Il TaskA_Main controlla le funzioni principali della centralina ovvero accende/spegne la pompa a seconda dei pulsanti premuti o al telecomando, gestisce l'allarme del livello dell'acqua e del 24 volt utilizzato per gli I/O optoisolati. Le variabili Ope.Field.STATUS,  Ope.Field.FAULT e Ope.Field.FUNC indicano rispettivamente lo stato operativo del sistema, eventuali fault hardware presenti e le funzioni disponibili. Queste informazioni, insieme a molte altre, sono disponibili nelle pagine Diagno e Function.

In particolare quest'ultima permette di attivare/disattivare le seguenti funzioni:

  • spegnimento della centralina se non utilizzata nella fascia oraria 0.00-06.00
  • misura del livello mediante il Sonar
  • controllo remoto con il telecomando radio a 434 MHz
  • sensibilità del ricevitore radio
  • compensazione della temperatura nella misura del Sonar
  • correzione del clock CPU

Il sonar

Il livello minimo dell'acqua viene rilevato con un galleggiante dotato di switch mentre grazie al Sonar è possibile monitorare in ogni momento la quantità d'acqua presente nel pozzo. Il modello utilizzato è il MB7052 della MaxBotix che si caratterizza per la flessibilità e la facilità d'utilizzo. Le sua caratteristiche sono:

  • tensione di alimentazione 3.3-5.5 Vdc
  • consumo a 5 volt 3.4 mA, peak 100 mA
  • auto calibrazione
  • impulso sonar di 42 KHz
  • distanza min/max del target 30/765 cm
  • risoluzione della misura di 1 cm
  • tre differenti modalità di indicazione della misura
  • filtri software anti rumore
  • grado di protezione IP65

Questo modello è particolarmente adatto per la misura del livello dell'acqua perchè implementa nel software le funzioni "Noise and Clutter filtering" e "Target Speed". Con la prima vengono rimossi tutti gli echo dei target a breve distanza e solo quello più lontano viene mantenuto: questo permette di rimuovere gli echo prodotti dalle pareti del pozzo o dal tubo di pescaggio e solo il target dell'acqua viene rilevato. La "Target Speed" richiede che la variazione del target tra due letture sia minore di 10 cm altrimenti la misura viene scartata. Considerando la lenta variazione dell'acqua, anche durante il funzionamento della pompa, questa funzione contribuisce a eliminare eventuali false letture.

Il sensore è completamente resinato e nella parte posteriore è presente un connettore con 7 contatti: con uno di questi si comanda l'acquisizione mediante l'emissione di un impulso a 42 KHz mentre la distanza del target viene indicata con un impulso digitale. Il calcolo della distanza si determina dividendo la durata dell'impulso ToF (time of flight in uS) per 58 che rappresenta il tempo necessario all'impulso per coprire la distanza di 1 cm a 25 °C. Se si desidera la massima precisione nella misura bisogna tener conto che la velocità del suono varia in funzione della temperatura, pertanto il valore di conversione deve essere ricalcolato ad ogni variazione della temperatura di lavoro del Sonar.

Per questo motivo all'interno del contenitore dove è alloggiato l'MB7052 è presente una NTC, gestita dal TaskH_NTC, che ne rileva la temperatura. Il TaskD_Sonar comanda l'acquisizione ogni 6 secondi in STOP o ogni 2 se la pompa è in funzione, calcola la distanza e gestisce gli errori.

Terminiamo l'analisi completa del progetto della centralina vedendone la descrizione del ricevitore radio, la gestione del clock interno e l'installazione finale.

Il ricevitore radio

La centralina permette il controllo remoto mediante un telecomando radio grazie al ricevitore RX-AM4SF della Aurel  operante alla frequenza di 434 MHz. Il ricevitore, integrato nella scheda controller, ha queste caratteristiche:

  • schermatura EMI-RFI
  • tensione di alimentazione 5 Vdc +/- 5% separata front end-detector
  • consumo 6.5 mA
  • due soglie di sensibilità -90/-108 dBm
  • uscita analogica proporzionale al segnale ricevuto
  • uscita digitale TTL compatibile

Il telecomando controlla lo START/STOP della pompa e utilizza un PIC 12F675 per generare una codifica a 12 bit tipo MM53200. Il codice abbinato al tasto premuto pilota il modulo di trasmissione da 50 mW @ 434 MHz sempre della Aurel; il tutto è inserito in un contenitore IP65 dotato di antenna. Il TaskG_Receiver si occupa della ricezione del codice decodificando i frame ricevuti. Collegando l'antenna esterna Aurel GP433 al ricevitore la portata, con contatto visivo, è di almeno 100 metri.

Correzione del clock CPU

Il clock del microcontrollore 18F4620 non è generato dal classico quarzo esterno ma dall'oscillatore interno alla CPU da 8 MHz. Purtroppo questo oscillatore non è stabile come un quarzo e la sua frequenza varia in funzione della temperatura e della tensione di alimentazione.  La stabilià del clock CPU è fondamentale dato che i timer 1/3 vengono utilizzati per la misura di segnali digitali. La scelta di utilizzare il clock interno ha, sì, da un lato, permesso di risparmiare spazio sul PCB (molto poco..) ma, dall'altro, ha anche aumentato la complessità del firmware dato che ho dovuto inserire un controllo sulla stabilità del clock.

Il clock interno viene calibrato in fase di produzione con una precisione del +/- 1% a 25 °C e le eventuali variazioni possono essere corrette con il registro OSCTUNE. Il registro permette una correzione del +/- 12% ma con solo 5 bit pertanto la risoluzione è del 0.75% ovvero 60 KHz. Il TaskB_CpuClock si occupa del controllo della stabilità misurando un clock di riferimento da 16 Hz generato dal RTC M41T81 e calcolando di conseguenza la necessaria correzione per l'OSCTUNE.

Ho verificato l'effettiva variazione del clock a 8 MHz (presente sul pin RA6 @ 2MHz) nel range di temperatura 0/60 °C riscontrando una variazione massima di -0.32% pari a 25600 Hz a 0 °C, valore inferiore alla soglia necessaria per la correzione.

La funzione di correzione rimane comunque presente per correggere eventuali derive del clock dovute all'invecchiamento del micro. Ciò non toglie che è possibile utilizzare un quarzo esterno da 8 MHz configurando opportunamente il 18F4620 e eliminando il task non più necessario.

Schemi elettrici

Gran parte dei componenti presenti nella scheda controller sono in SMD e questo ha permesso di contenerne le dimensioni. Il layout mostra le funzioni dei connettori e dei led presenti mentre di seguito è riportato lo schema elettrico con la disposizione dei componenti.

Installazione

L'immagine seguente mostra la centralina in funzione e inserita nel contenitore per esterno Gewiss modello GW40102, grado di protezione IP65. Il pulsante rosso serve per  lo START/STOP mentre il verde attiva il TIMER. Il display indica l'ora, la data, lo stato della pompa e il tempo di funzionamento. Sul lato destro è rappresentato il pozzo che nell'applicazione specifica ha una profondità di 2.5 metri. L'acqua presente è di 1.18 metri, sotto è indicato il volume in mc e la temperatura del Sonar rilevata dalla NTC.

Togliendo il coperchio, partendo dall'alto, è possibile individuare:

  • cavo coassiale 50 ohm connesso all'antenna esterna GP433
  • la scheda controller
  • lo sganciatore F80ST1
  • il magnetotermico F881N6
  • porta fusibile di protezione per il trasformatore d'alimentazione
  • relè statico Fotek SSR25
  • trasformatore toroidale 230/12+12 12VA
  • cavi di alimentazione e dei sensori

Conclusioni

Negli allegati è presente lo schema elettrico, i file gerber e i sorgenti sia del PIC 18F4620 che del display grafico. E' presente anche una relazione, in formato pdf, che descrive in forma più approfondita tutto il progetto. Che ne pensate?

5 Comments

  1. delfino_curioso delfino_curioso 9 dicembre 2013
  2. adrirobot adrirobot 29 novembre 2013
  3. maxvarese 29 novembre 2013
  4. mscafoglieri 2 dicembre 2013
  5. maxvarese 2 dicembre 2013

Leave a Reply