Sei sulla pagina 1di 19

Misure Elettroniche Progetto finale - 8/07/11

Riattivatore per contatore ENEL

Relatori: Letterio Mondo, Francesco Wanderlingh, Francesco Curreri

Introduzione al progetto
Nel nostro progetto abbiamo sviluppato un dispositivo che riattiva il contatore Enel esterno dopo che questo viene disattivato a causa di un sovraccarico. Consiste in pratica di un servomotore posto sopra il contatore che ne risolleva linterruttore tramite una cordicella. Il dispositivo in condizioni di riposo resta costantemente in sleep, non assorbendo quindi corrente. Nel momento in cui linterruttore del contatore si abbassa, tira la cordicella, la quale chiude un microswitch a levetta. Questo evento attiva il circuito che, dopo un certo tempo, tira in alto la corda e quindi con se linterruttore del contatore. Il tempo entro cui far partire il dispositivo viene scelto dallutente fra un minimo di 10 secondi e un massimo di 120. In questo lasso di tempo si ha cos la possibilit di spegnere eventualmente lapparecchio che sta causando il sovraccarico con conseguente disattivazione del contatore. Dopo la prima riattivazione parte un timer di 2 minuti: se entro tale tempo si arriva ad un terzo sgancio, il dispositivo rimane in standby (Safety Stop) e deve essere riavviato manualmente. Questo perch nel caso in cui ci fossero pi di due stacchi consecutivi, il problema non un semplice sovraccarico ma qualcosa di pi serio per il quale sarebbe meglio lasciare il contatore staccato.

Il riattivatore installato

Panoramica dellinterno del box

Schematizzazione della riattivazione

Quando il contatore scatta, la cordicella entra in tensione e lo switch SW1 segnala al circuito di controllo levento; a questo punto entra in funzione il servocontrollo che inizia girare fino a riportare, tramite la cordicella, in posizione ON la leva del contatore. Lo switch SW2 segnala che il servomotore tornato nella posizione originaria e che il contatore nuovamente in funzione.

Istruzioni veloci per la programmazione Accendere il dispositivo Tenere premuto il tastino esterno e attendere lo spegnimento dei LED Spenti i LED, ogni successiva pressione del tasto incrementa il tempo di riattivazione di 10 secondi (1 click 10 secondi, 2 click 20 secondi, , 12 click 120 secondi). Ogni pressione confermata dallaccensione del LED verde. [superati i 12 click, si ritorna nuovamente a 10 secondi] Raggiunto il tempo desiderato, attendere 5 secondi per confermarlo e salvarlo: in conferma il LED verde lampegger tante volte quanto stato premuto il tasto. Terminata la programmazione, il micro va in sleep.

LED Verde

Tastino
LED Rosso

Funzionamento del circuito


A sovrintendere le funzioni del dispositivo, stato usato un microcontrollore U2 (Atmel ATTiny45). Il circuito alimentato da due batterie da 9 V disposte in serie. Il regolatore U1 (78L05) ricava dallalimentazione 5 volt stabilizzati in modo da alimentare correttamente il microcontrollore. Il diodo D1 protegge dallinversione di polarit. Mentre i condensatori C1, C2, C3 e C4, livellano la tensione prima e dopo il regolatore e ne filtrano i disturbi. Il servomotore comandato in PWM dalluscita PB0 per mezzo di T3 (Transistor Darlington BC517). Il diodo D4 e il condensatore C5 proteggono dagli impulsi dovuti al funzionamento del motore elettrico. Allingresso PB1 collegato lSW2 che si chiude nel momento in cui il rotore del servomotore ha raggiunto la posizione di riposo. A PB4 e PB5 sono collegati i due LED (verde e rosso) che guidano lutente durante limpostazione del tempo entro cui fare riattivare il contatore e che indicano i vari stati di funzionamento del dispositivo. T1 e T2 servono a tenere lalimentazione isolata dal resto del circuito quando il dispositivo in sleep, in modo che il regolatore non assorba alcuna corrente quando non in funzione (cos da prolungare la durata delle batterie). Quando viene chiuso SW1 dalla cordicella tirata dallinterruttore, T2 (BC547) entra in conduzione (la sua base si polarizza positivamente) mandando a sua volta in conduzione T1 (BC557), che un PNP, la cui base si polarizza negativamente. Quindi la corrente arriva al regolatore e quindi al micro. Il micro porta a livello alto la linea PB3, in modo che il circuito sia ancora alimentato dopo che SW1 si apre nel momento in cui la leva viene rialzata. Il partitore formato da R5 ed R6 indica alla linea PB2 lo stato dellSW1: se il micro legge un livello alto, allora SW1 chiuso; se legge un livello basso allora aperto. I diodi D2 e D3 impediscono che i comandi che attivano il circuito, cio lSW1 e luscita del micro, si influenzino reciprocamente. Gli switch esterni SW1EXT e SW2EXT sono messi in parallelo rispettivamente ad SW1 ed SW2 e sono usati dallutente per la programmazione del tempo di riattivazione del contatore. Essi infatti sono disposti in maniera tale da essere premuti contemporaneamente alla pressione del tastino esterno, poich attraverso questa combinazione che il microcontrollore entra in modalit di programmazione.

Elenco componenti
R1: 10 K R2, R3: 4,7 K R4, R6: 10 K R5: 1 K R7: 470 R8: 470 R9: 4,7 K R10: 47K C1: 220 F 25VL Elettrolitico C2, C3, C5: 100 nF Multistrato C4: 100 F 16VL Elettrolitico U1: 78L05 U2: AT Tiny45 D1, D2, D3: 1N4007 D4: 1N4148 LD1: Led Rosso 3mm LD2: Led Verde 3mm T1: BC557 T2: BC547 T3: BC517 SW1, SW2: Microswitch a levetta SW EXT: Microswitch a tastino

Schema Circuitale

PCB

Foto del Circuito

Alcune Foto

Il circuito stampato

Vista a di rotore e switch

Vista superiore del sistema di attacco degli switch

Vista superiore di tutto il riattivatore

Il servomotore e la modulazione PWM


Un motore in corrente continua di potenza medio/piccola costituito da una carcassa all'interno della quale presente un campo magnetico generato, nei motori pi piccoli, da magneti permanenti. Tali magneti (statore) hanno al loro interno una parte meccanica che pu solo ruotare (rotore) con degli avvolgimenti fissati su di esso. I magneti dunque generano un campo fisso che interagendo con quello variabile generato dagli avvolgimenti presenti sul rotore, fanno ruotare questultimo (Fig.1). In particolare il nostro motore (Fig.2) costituito, oltre che dal motore in se, anche da un motoriduttore che diminuendo la velocit di rotazione consente di guadagnarne in potenza (Ncm). motoriduttore

Figura1: Interno motore

Figura2:Esterno servomotore adoperato

Per pilotare il nostro motore abbiamo scelto una modulazione PWM (non invertente) poich ci ha consentito un buon controllo sulla velocit del motore tramite la sola variazione del duty-cycle attraverso i registri del microcontrollore (OCR).

Figura 3: PWM nel micro (ATtiny45)

Figura 4: Definizione di duty cycle

Un segnale PWM (Pulse Width Modulation ovvero modulazione a variazione della larghezza d'impulso) un'onda quadra di durata variabile che permette di controllare l'assorbimento (la potenza assorbita) di un carico elettrico (nel nostro caso il motore DC), variando (modulando) la durata dellonda quadra. La modulazione caratterizzata dunque da una frequenza di funzionamento (fissa) e da un duty cycle (variabile); come si deduce dalla Fig.1, il duty cycle il rapporto tra il tempo in cui l'onda assume valore alto e il periodo T (l'inverso della frequenza: T=1/f). Ne segue che un duty cycle del 50% corrisponde ad un'onda quadra che assume valore alto per il 50% del tempo, un duty cycle dell'80% corrisponde ad un'onda quadra che assume valore alto per l'80% del tempo e basso per il restante 20%. Per quanto riguarda il funzionamento allinterno del nostro circuito il servomotore comandato in PWM con un duty cycle del 90% luscita PB0 del micro per mezzo del Darlington che consente il guadagno di corrente necessario la buon funzionamento degli avvolgimenti interni del motore. Notare il diodo di free-wheeling per la protezione dagli impulsi dovuti al funzionamento del motore elettrico, e il condensatore di filtro C5, posti proprio vicino ai terminali di uscita cui va collegato il servomotore. La scelta del servomotore per questo progetto non stata semplice: da un calcolo preliminare stato valutato in circa 70 Ncm la coppia necessaria per sollevare linterruttore del contatore; inoltre data la necessit di un movimento lento e preciso era necessario un servomotore di buona qualit. stato quindi scelto un motoriduttore della Micromotors con coppia massima di ben 100 Ncm e un notevole rapporto di riduzione.

Il microcontrollore
Lintero sistema gestito da un microcontrollore Atmel della serie tiny, lATtiny45. Questo piccolo ma performante micro contiene al suo interno tutte le periferiche necessarie alla nostra applicazione. Vengono di seguito elencate alcune sue caratteristiche: memoria programma di tipo FLASH di 4KB memoria dati SRAM di 256B memoria non volatile EEPROM di 256B 32 registri general purpose 2 timer/counter a 8 bit con prescaler separati e uscite PWM 4 canali ADC a 10 bit 6 pin di I/O digitale generali oscillatore interno calibrato fino a 8 MHz modalit di funzionamento a basso consumo diverse sorgenti di Interrupt

In particolare notiamo la presenza di unuscita PWM indipendente e gestita dallinterrupt interna Timer/Counter0: configurando opportunamente alcuni registri possibile pilotare il motore DC in maniera semplice ed immediata. Loscillatore interno calibrato ci permette di evitare lutilizzo di quarzi esterni, che avrebbero richiesto pi spazio e occupato due pin del micro. Nella EEPROM viene salvato il tempo di attesa impostato dallutente. I 6 pin di I/O (aiooooohhh!) vengono utilizzati per gestire le varie funzioni del sistema: vengono tutti configurati come I/O digitali generali tranne PB0, che luscita del segnale PWM.

PB1 e PB2 sono configurati come ingressi, e collegati rispettivamente a SW2 (il microswitch a levetta che controlla quando il motore raggiunge la posizione di riposo) e SW1 (il microswitch che invece premuto quando scatta linterruttore del contatore).

PB3, PB4 e PB5 sono invece utilizzati come uscite: il primo serve a collegare lalimentazione al sistema, mentre attraverso gli altri due vengono gestiti i led di stato. Allaccensione (cio quando viene premuto SW1 dal contatore che si sgancia o dallutente attraverso il tastino esterno) vengono inizializzate tutte le linee di I/O, i timer e si preleva dalla memoria EEPROM il tempo di attesa memorizzato. Si noti che Timer0 usato per generare luscita PWM, mentre il Timer1 genera una routine di interrupt ogni 31ms circa. Tale routine ha il compito di gestire tutte le temporizzazioni necessarie: i tempi di accensione dei led, il periodo di attivazione del motore e gli intervalli di tempo necessari alle varie modalit di funzionamento. Subito dopo laccensione i due led rimangono accesi per un secondo, durante il quale si stabilizza lalimentazione. A questo punto il micro stabilisce la modalit di funzionamento tra: la modalit di programmazione del tempo di attesa (PMode) la modalit di attivazione del motore (AMode)

Se premuto il tastino esterno (SW1+SW2) si entra in PMode, altrimenti si esegue lAMode. Nel primo caso (Pmode) il led rosso rimane acceso, mentre quello verde si spegne. Lutente selezioner il tempo da memorizzare attraverso il tastino posizionato nella parte anteriore del dispositivo (come detto prima collegato a SW1 e SW2). Premendolo il tempo aumenter a passi di 10 secondi e il led verde dar conferma visiva della pressione. Il tempo massimo memorizzabile di 120 secondi. Arrivato a questo limite, se si continua a premere, il micro ripartir a contare il tempo da 10 secondi. Il superamento del tempo limite confermato dallo spegnimento del led rosso e dallaccensione del led verde per 0,5 secondi. Per salvare il tempo in memoria sufficiente non premere il tasto per 5 secondi. Trascorso questo periodo il micro dar conferma del salvataggio facendo lampeggiare il led verde tante volte quante sono le decine di secondi impostate. A questo punto esce dalla PMode disattivando lalimentazione (modalit sleep). In AMode invece il micro controlla per prima cosa che non siano state effettuate pi di due attivazioni in due minuti, attraverso un registro che ne tiene traccia. In quel caso il firmware entrer in Safety Stop: vengono disattivate tutte le funzioni e il led rosso lampegger con un periodo di 5 secondi. Lutente dovr resettare manualmente il circuito togliendo lalimentazione attraverso linterruttore generale. In caso contrario, prima di attivare il motore, il micro attende per il tempo deciso dallutente. Durante questa attesa il led rosso spento, mentre quello

verde lampeggia con un periodo di 2 secondi. Trascorso tale tempo, il motore viene alimentato. Mentre il motore acceso il led verde lampegger velocemente. Il motore verr alimentato finch, girando, non colpisce lSW2. Questo invier uno zero logico al micro che capisce che il motore ha fatto un giro completo avendo cos riattivato il contatore. Per ritornare alla posizione di riposo, il motore verr alimentato per un altro secondo e poi disattivato. A questo punto il micro attender 2 minuti (tempo di standby), durante i quali il led verde lampegger ogni 5 secondi. Se il contatore dellEnel non si disattiver unaltra volta in questi 2 minuti, il micro andr in sleep disattivando lalimentazione e il circuito sar pronto per una nuova sessione di lavoro. Altrimenti il firmware torner allinizio dellAmode eseguendo una seconda riattivazione. Si noti che tra unattivazione e laltra, allinterno della stessa sessione, il tempo di standby trascorso viene salvato dal micro e ripristinato alla fine della seconda attivazione. Qui di seguito la visulizzazione schematica del programma attraverso un flowchart.

FLOWCHART
RiattCont_CMW.asm

SW1 is pressed: the circuit is powered


Power stabilization

I/O Initialization CLEAR Counting and Control Registers Timer Setting(1sec) Led_G=ON Led_R=ON

Delay 1sec

PMode

YES

SW2 ON?
(pressed by user)

NO

AMode

PMode
Micro connects the POWER TEMPO1 Clear NBLINK Clear

SW1 ON?
(still pressed)

YES

NO Timer Setting(5sec) Led_G=OFF Led_R=ON NO 5 sec are passed?

SW1 ON?
(pressed by user)

NO

(timer is running)

YES Timer Stopped LED_G=ON

YES

Timer Stopped TEMPO1 =120? NO NBLINK++ TEMPO1+10 Led_G= Blinks NBLINK times@1Hz

YES TEMPO1=10 NBLINK=1 Led_R=OFF Delay 0.5sec

Store TEMPO1 in EEPROM

SLEEP SW1 ON?


(still pressed)

YES

NO Timer Restart LED_R=ON

AMode
Micro connects the POWER

Led_G=OFF Led_R=OFF N_ATT++ (number of activations)

SAFETY STOP!

YES

N_ATT 3? NO

Led_R=Blink@0.2Hz
(endless state till the circuit is manually switched off)

Stop and Store TCONT2


(TCONT2 counts 2min from 1st boot) (at 1st boot TCONT2 is 0)

Led_G=Blink@0.5Hz Timer Setting(TEMPO1)


(timer is running)

TEMPO1 elapsed? YES

NO

Led_G=Blink@5Hz START PWM

Load and Run TCONT2 Led_G=Blink@0.2Hz


(timer is running)

NO SW1 ON? YES

SW2 ON?
(pressed by screw)

TCONT2 NO
has reached 2 min?

NO

YES LITTLE MOTOR STEP (to reach idle position) STOP PWM

YES SLEEP