mercoledì 6 febbraio 2013

Controllare carichi potenti!!

Mi sono posto il problema di usare Arduino per il controllo di dispositivi ad alto assorbimento di corrente, come ad esempio un ventilatore a 12 V o una lampada o una pompa.

Girando in rete ho visto diversi blog sull'uso dei MOSFET accoppiati ad Arduino. Il MOSFET, per chi non lo sapesse, è un componente elettronico attivo che funziona come un relè. Una piccola tensione in ingresso (piedino gate) riesce a chiudere un circuito (tra i due piedini Drain e Source) facendo passare correnti notevoli, anche di decine di Ampere.

Frugando nella scatola dei semiconduttori, ho trovato nel cassetto un MOSFET NDP405B della National, che può commutare una corrente fino a 12 A con una tensione di 12 V (144 W !!).  Va benissimo per il mio scopo che è quello di controllare dispositivi alimentati a 12 V, tipo quelli usati sulle autovetture.

Prima ho detto che il MOSFET funziona come un interruttore, quindi permette alla corrente di passare o non passare attraverso il dispositivo. Come puo' essere usato per farne passare una quantità voluta, tra 0 e il valore massimo?  Alcuni dispositivi come i motori o le lampade, hanno la prerogativa di reagire lentamente alla corrente pulsata (intermittente). Se per esempio alimentiamo un motore con una corrente che si interrompe ogni millisecondo, questo continuerà a girare, durante l'interruzione, come se fosse alimentato da una corrente continua, ma leggermente inferiore. Lo stesso dicasi per una lampada, anche quelle a LED, alimentate con corrente pulsata, ci appaiono emettere una luce continua a causa della reazione lenta della nostra retina (persistenza).  Quindi possiamo dire che alcuni dispositivi alimentati da corrente pulsata si comportano come se fossero alimentati da una corrente media, ricavata mediando i periodi di corrente "on" con quelli di corrente "off".  Variando quindi la lunghezza di questi periodi si possono ottenere tutti i valori di corrente media compresi tra 0 e il massimo.

In base a questa spiegazione, per raggiungere il nostro scopo di far passare una corrente media prefissata dentro al nostro carico, bisogna comandare il MOSFET con un treno di impulsi di durata voluta. In particolare, per il MOSFET NDP405B gli impulsi possono essere anche di 12 V di ampiezza. L'ideale è quindi inviare al Gate un'onda quadra  tra 0 e 12 V, con frequenza fissa, ma con la durata della semionda alta di lunghezza variabile a piacere.  La frazione di tempo in cui l'onda è alta rispetto al periodo è chiamata "Duty cycle". Arduino può produrre un'onda di questo genere, anche se fino a 5 V di ampiezza, usando l'uscita PWM e l'istruzione analogWrite(pin, value). L'onda quadra emessa, ha una frequenza di circa 490 Hz con un    duty cycle pari a value/255.  Value può andare da 0 (ampiezza media nulla) a 255 (ampiezza media 5V).

Per portare l'ampiezza dell'onda da 5 V a 12, come richiesto dal MOSFET, ho inserito nel circuito un transistor alimentato a 12 V, come nello schema qui sotto.


Nello schema si nota un altro componente, ACS715, inserito sulla linea di alimentazione del carico (Load). Questo componente serve a misurare la corrente. E' un dispositivo ad effetto Hall che consente ad Arduino di acquisire i dati di corrente. Ne parlerò in un prossimo post.

Nessun commento:

Posta un commento