Con questo tutorial vorrei chiarire come pilotare un motore DC in modo bi-direazionale con 4 porte digitali di arduino (che possono essere ridotte a 2 con l'aggiunta di 2 ulteriori transistor), con un circuito composto da 4 transistor (di cui 2 NPN e 2 PNP) e 4 diodi. Come ben sapete i motori elettrici hanno bisogno di una "centralina" per essere comandati. Questo componente spesso è composto (se si parla di motori dc) da 4 transistor e 4 diodi (molto spesso sono presenti anche dei condensatori e resistenze), quindi una cosa realizzabile senza problemi in casa in pochi minuti.
Lista dei componenti
- 2x BD177 transistor
- 2x BD178 transistor
- 4x IN4007 diodo
I transistor sono i componenti fondamentali e attivi del sistema. Ci sono due tipologie di transistor quelli NPN e quelli PNP. La differenza tra i due è che gli NPN funzionano permettendo alla corrente positiva di attraversarli (cioè corrente in arrivo da + e in uscita dal transistor verso motore) solo se il polo base è connesso al +, invece PNP permettono alla corrente in arrivo dal motore di attraversali e andare verso la massa, solo se la base è connessa al -.
PNP NPN
In cosa consiste
Il ponte ad H è cosi' chiamato per la forma dello schema, è formato da 4 transistor e 4 diodi che hanno il ruolo di permettere o no il flusso di corrente in un dato senso all'interno del sistema. Questi verranno accesi a coppie per ruotare il motore in un senso o nell'altro, gli altri due saranno opportunamente chiusi per evitare corti circuiti. In poche parole grazie a 4 switch è possibile decidere la direzione della corrente all'interno del motore e quindi trasformarla in movimento in un dato senso di rotazione. Ecco uno schema semplice di cosa si ottiene:
transistor1 | transistor2 | transistor3 | transistor4 | Risultato sperimentale |
1 | 0 | 0 | 1 | Rotazione in senso orario |
0 | 1 | 1 | 0 | Rotazione in senso antiorario |
0 | 0 | 0 | 0 | Motore libero |
0 | 1 | 0 | 1 | Frenata elettromagnetica |
1 | 0 | 1 | 0 | Frenata elettromagnetica |
Tutto ciò consiste in un Ponte ad H davvero minimale.
E' pensato per pilotare motori DC da 3 a 36v con un assorbimento massimo di 3A continui e 7A pulsati. L'architettura del sistema è pensata per ridurre il più possibile le possibilità di baking di componenti (bruciare tutto per errore di wiring). I Transistor consigliati sono enormi ed è impossibile bruciarli con una batteria da 6 volt in qualsiasi combinazione proviate.
Come potete vedere il circuito è molto semplice. Fate molta attenzione al wiring dei transistor, controllate sui datasheet linkati sopra la referenza dei pin e connettetela come spiegato. Testate prima il funzionamento di un singolo transistor delle due tipologie. Dopo aver chiarito i collegamenti di entrambi, iniziate con metodo a duplicare e specularizzare lo schema ; ). Dopo aver fatto il wiring come mostrato qui sopra, collegate le basi dei 4 transistor alle porte digitali 2 3 4 5 di Arduino e caricate lo sketch seguente:
07 | pinMode(motorPin1, OUTPUT); |
08 | pinMode(motorPin2, OUTPUT); |
09 | pinMode(motorPin3, OUTPUT); |
10 | pinMode(motorPin4, OUTPUT); |
14 | digitalWrite(motorPin1, HIGH); |
15 | digitalWrite(motorPin2, LOW); |
16 | digitalWrite(motorPin3, LOW); |
17 | digitalWrite(motorPin4, HIGH); |
19 | digitalWrite(motorPin1, LOW); |
20 | digitalWrite(motorPin2,HIGH); |
21 | digitalWrite(motorPin3, HIGH); |
22 | digitalWrite(motorPin4, LOW); |
Dopo aver alimentato il motore e caricato lo sketch dovreste ottenere 1 secondo di rotazione in un senso e 1 secondo di rotazione nel senso opposto. Questo è solo un piccolo esempio delle incredibili funzionalità di questo sistema, che permette di pilotare qualsiasi motore dc applicato alla robotica amatoriale senza avere problemi.
In questo caso per l'esempio ho utilizzato un motore delle amate MINI4WD e un alimentatore da 6v 1A.