Comandare un motore in due direzioni con due relè

Una cosa necessaria per molti progetti è il poter comandare un motore in corrente continua (DC, direct current) in una direzione e nell’altra, e spesso sono necessari anche dei finecorsa per definire il range di funzionamento. Per implementare questo controllo si possono usare diverse soluzioni, alcune furbe, altre meno. Visto che c’è una grande diffusione di soluzioni poco ottimali ho pensato di pubblicare questo tutorial.

Finché il motore è di (relativamente) piccole dimensioni è semplice ed economico farlo con un ponte-H a transistor, ci sono dozzine e dozzine di tutorial. Le “motor shield” per arduino (amazon, banggod) sono diffusissime, ed esistono anche moduli stand-alone (amazon, banggod) che sono praticamente la stessa cosa delle motor shield ma hanno i pin di comando più accessibili.

La faccenda si complica quando i motori diventano più grossi, quando richiedono correnti e/o tensioni non gestibili dai ponti H più diffusi. Oppure a volte si ha bisogno di avere una separazione completa (tecnicamente: separazione galvanica) tra il circuito di comando e il circuito di potenza del motore.  Se è richiesta solamente più potenza ci si può sempre costruire un ponte H con dei transistor belli grossi, concettualmente non cambia niente rispetto a prima ma magari dal punto di vista economico le cose non sono ottimali. Se è richiesto isolamento galvanico si potrebbero aggiungere dei fotoaccoppiatori (optoisolatori), purtroppo non tutti i moduli li montano, anzi. 

Oppure, come ho visto fare a molti, si utilizzano dei relé.

Prima soluzione

h-bridge-motor-inverter Comandare un motore in due direzioni con due relè Fai da te (DIY)

Quello che ho visto fare parecchie volte è fare un simil-ponte H con dei relé, 4 per la precisione. Praticamente si mettono i contatti NO (normally open, normalmente aperto, cioè i contatti che NON fanno passare corrente quando il relè non è attivo) al posto dei transistor, tutto qui. Concettualmente è esattamente quello che mostrano qui. Non è che sia sbagliato in senso stretto, ma non è neanche ottimale.

Il primo problema dei ponti H è la necessaria precisione dei comandi, che non devono mai “sovrapporsi”! Infatti è strettamente necessario che non più di un contatto per lato sia chiuso nello stesso momento. Esempio: se è chiuso il contatto a sinistra in alto (S1) può essere chiuso qualunque contatto del ramo destro del ponte (S3 o S4) ma non il contatto a sinistra in basso (S2). Ovviamente questo vale anche per il lato destro quindi quando scrivo “qualunque contatto del ramo destro” intendo S3 OPPURE S4, non tutti e due insieme.

Il problema della chiusura contemporanea dei due contatti dello stesso lato è evidente: si cortocircuita l’alimentazione, che di conseguenza può venire pesantemente e magari definitivamente danneggiata, ed è anche possibile possibile bruciare il circuito facendo circolare correnti maggiori di quelle che può sopportare. Insomma, capitano brutte cose.

Altro problema: mentre i transistor hanno tempi di intervento rapidi e precisi i relé sono molto più lenti, quindi è assolutamente obbligatorio inserire un certo ritardo tra l’apertura di un contatto e la chiusura dell’altro sullo stesso ramo del ponte. Oltre a questo c’è da aggiungere che non sono affatto necessari 4 relé per comandare un motore, ne bastano due.

In più, oltre al necessario ritardo, allo spreco di soldi e spazio sul circuito c’è di peggio: ricordatevi di Murphy e del fatto che nel mondo reale, prima o poi, “shit happens”. Cosa potrebbe succedere se un relé non commuta nonostante il comando ricevuto? Capita, non dovrebbe succedere ma capita. A volte i relé si “incollano”, specialmente se c’è stato un picco di corrente imprevisto che ha leggermente fuso i contatti. E cosa succederebbe se qualcosa andasse storto nella trasmissione dei segnali di comando? Magari anche il software di controllo ha un bug, non è una cosa impossibile.

La risposta è quella di prima: alimentazione danneggiata e/o qualcosa nel circuito si cuoce o perde il prezioso magic smoke.

Buone notizie comunque: la soluzione esiste ed è anche facile da implementare!

Seconda soluzione

Se al posto di un ponte H, a transistor o a quattro relé, prendiamo un modulo a due relé (amazon, bangood) e seguiamo questo schema sarà possibile comandare un motore DC senza rischiare cortocircuiti e altre brutte cose. controllo-direzione-motore-DC-due-relé-invertitore-876x1024 Comandare un motore in due direzioni con due relè Fai da te (DIY)

La connessione è semplice, in pratica basta mettere il positivo e il negativo dell’alimentazione del motore “dalla stessa parte” nei due relé. Semplice e veloce. Collegando l’appropriata alimentazione al modulo e comandando i due ingressi si possono ottenere queste quattro condizioni di funzionamento, tutte intrinsecamente sicure. Tra le altre cose il modulo ha anche gli input optoisolati, quindi i comandi del circuito sono doppiamente separati e protetti rispetto al motore, e questo rende il tutto ancora più sicuro.

direzione-motore-dc-due-relé-invertitore Comandare un motore in due direzioni con due relè Fai da te (DIY)

Come potete vedere non importa se un comando viene dato sbagliato: il motore non si comporterà come previsto (dopotutto c’è un comando sbagliato, l’elettronica non fa miracoli) ma il circuito e l’alimentazione non subiranno danni. Ogni possibile configurazione ha un risultato sicuro, utilizzando quattro relé non è così. Una cosa buffa è vedere come alcuni propongano come soluzione l’aggiunta di altri due relé per comandare i primi quattro, come una sorta di interblocco, che neanche Xzibit di Pimp My Ride.

L’interblocco meccanico è intrinseco nei relay, se li si usa intelligentemente, cioè facendo un intero lato del ponte H con un singolo relay.

Un altro possibile vantaggio dell’usare due relé è che impostando gli ingressi in modo uguale (entrambi accesi o entrambi spenti) si cortocircuitano i terminali del motore. Questo cortocircuito permette la circolazione di correnti in grado di frenare il motore grazie alla legge di Lenz. In pratica questa legge dice che se si prova a far  ruotare un motore DC cioè se si provoca una variazione del campo magnetico sulle sue bobine, si genera una una differenza di potenziale sui suoi terminali. Se questa differenza di potenziale si può “scaricare”, facendo circolare una corrente grazie al cortocircuito, si crea una forza “controelettromotrice” che tende a contrastare la forza originale che tendeva a far ruotare il motore. Provate a prendere un qualunque motorino DC, fate ruotare l’albero tenendo i suoi terminali aperti. Poi saldate un cavo corto che cortocircuita i suoi terminali e riprovate: l’effetto di frenatura sarà evidente.

NB: non esagerate a sfruttare questo effetto, la capacità di frenatura si basa sulla circolazione di corrente, che in un cortocircuito può raggiungere valori molto elevati e quindi danneggiare i cavi o altro.

Utilizzo del modulo

Comandare questo modulo è anche più semplice di un ponte a transistor, infatti ci sono solo due ingressi invece di quattro. Per cominciare il modulo va alimentato a 5V, da applicare a Vcc e  GND.  Gli ingressi di comando vanno portati alla tensione GND per attivare il relé. Questo si può fare “a mano” con un semplice interruttore connesso tra GND e  IN1 (o IN2), oppure si può usare un microcontrollore, tipo Arduino, collegandoli a due output digitali. Settando gli output a livello logico basso con un semplice digitalWrite(pin, LOW) si attivano i relé. Questo post non voleva essere un tutorial su Arduino ma sui relé, però se può interessare a un discreto numero di persone posso buttar giù un po’ di codice per gestire il modulo relé in un’applicazione di esempio.

Esempio elettromeccanico

Prendiamo come ipotesi un verricello, un montacarichi, un portone, una saracinesca o in genere un qualunque meccanismo comandato da un motore DC che abbia due direzioni di marcia e il suo range di movimento utile ben definito (non un ventilatore, che non ha ne finecorsa ne necessità di invertire la rotazione). Con un interruttore a tre posizioni (deviatore unipolare a tre posizioni) e due finecorsa abbiamo tutto il controllo che ci serve per controllare il motore.

controllo-direzione-motore-DC-due-relé-invertitore-elettromeccanico-624x1024 Comandare un motore in due direzioni con due relè Fai da te (DIY)

Come da schema colleghiamo i fine corsa sui contatti “C” (common, comune) e “NC” (normally close, normalmente chiuso, cioè che conduce quando il finecorsa NON è premuto). Il polo centrale dell’interruttore, cioè quello che viene messo in contatto con uno dei laterali a seconda di come si aziona la leva, va connesso a “GND”. In questo modo con l’interruttore inattivo il suo polo centrale non è connesso a nessuno dei poli laterali, quindi nessun ingresso viene collegato a GND e i relé non si attivano. Se si interviene sull’interruttore si chiude un contatto tra il suo polo centrale e uno dei due laterali. In questo modo uno degli ingressi verrà portato a tensione di GND, attivando un relè, ma solo finché non viene premuto il relativo finecorsa. Il finecorsa è collegato sul NC e non sul NO proprio per trasmettere il comando dell’interruttore in condizioni di lavoro normale, e di interromperlo al momento  necessario (es: il verricello ha riavvolto tutta la fune e il gancio fa in qualche modo scattare l’interruttore).

In pratica girando l’interruttore in una posizione il motore ruota in un verso, potenzialmente fino al finecorsa, e quando il finecorsa interviene il motore resta frenato finché non viene comandato nell’altra direzione. Con l’interruttore al centro il motore resta frenato, con l’interruttore nell’altra posizione il motore ruota nell’altro verso e si comporta in maniera analoga al primo caso. Comodo, no?

In questo video ho realizzato questo circuito  su breadboard, l’alimentatore che vedete è quello che ho costruito qui.

Upgrade?

Un limite di questo sistema rispetto al ponte H a transistor è che non possiamo regolare la velocità, possiamo comandare il motore solo “avanti/fermo/indietro” In molte applicazioni non è necessario regolare la velocità ma nel caso ne abbiate bisogno possiamo aggiungere un pezzo. Il problema è che non possiamo agire con una modulazione PWM sui relé perché semplicemente sono troppo lenti e comunque avrebbero una vita utile molto limitata. Possiamo però risolvere il problema inserendo un controllo PWM direttamente nell’alimentazione del motore, cioè aggiungiamo solo un transistor a monte che si occupa solo della quantità della corrente che passa e non anche del verso.  Dal momento che stiamo parlando di relé da 10A non vi bastano dei modulini PWM da pochi ampere (i relé del modulo suggerito sono da 10A), quindi vi lascio un paio di link per un modulatore PWM sufficientemente grande: amazon, bangood.

Downgrade?

Nel caso vogliate comandare un motore in corrente continua da pochi ampere in effetti non vi serve tutta la corrente supportabile dal sistema a relé, e anche i disturbi generati saranno minori. Per pochi ampere sono disponibili anche moduli integrati, che semplificano connessioni e controlli. Per una corrente massima di 3A un modulo molto comodo potrebbe essere questo (amazon, bangood).

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.