Arduino e Motore DC

Tag

, , , , , , , , ,

Per utilizzare correttamente un motore DC con Arduino, è necessario avere assimilato alcuni concetti di base, e avere familiarizzato con alcuni semplici componenti. Perché questo preambolo? Lo vediamo subito.

(Se volete un riepilogo veloce sul funzionamento di un motore DC, potete leggere questo studio).

Per far muovere un motore è necessario disporre di molta potenza, in certi casi perfino più di quanta ne possa generare un singolo pin di Arduino. Come è possibile, allora, che Arduino riesca a controllare un motore DC? La risposta è molto semplice: con l’aiuto di un transistor!

Transistor

La domanda, a questo punto, nasce spontanea: che cos’è un transistor? Un transistor (nel nostro caso: un transistore a giunzione bipolare) è un componente che permette di regolare (in genere di amplificare) la carica elettrica che lo attraversa.

Transistor

Transistor

Negli esempi seguenti, ho utilizzati un transistor NPN modello C547B, e questo è il suo datasheet).

Funzionamento

Per utilizzare un transistor, è sufficiente seguire la freccia del suo schema elettrico: la corrente entra nel collettore, è modificata dalla base ed esce amplificata dall’emetitore.

Il “trucco” consiste nel collegare una fonte di energia esterna al collettore, e un pin alla base: in questo modo, una piccola corrente (il pin di Arduino) può pilotare una corrente molto grande (fino a 12-20V)!

Esempio

Ma vediamo ora una dimostrazione pratica. Se prendete una breadboard e riportate lo schema mostrato sotto in figura, vi accorgerete che i 2 led si accendono, ma che non sono molto luminosi.

LED senza Transistor

LED senza Transistor

Provate invece a impostare la vostra breadboard con lo schema seguente. Visto che differenza? Aggiungendo un semplice transistor al circuito, i 2 led adesso sono brillanti e luminosi!

LED con Transistor

LED con Transistor

Diodo

Dopo aver preso confidenza con l’utilizzo di un transistor, è consigliato fare conoscenza con il diodo. Un diodo non è altro che un componente che lascia passare la corrente in una sola direzione: questo creerà un’ulteriore protezione per il nostro Arduino!

Diodo

Diodo

Quando spegniamo il motore DC, potrebbe verificarsi un picco di corrente che – risalendo il circuito – può arrivare fino ai pin e danneggiarli, o addirittura danneggiare Arduino! Con l’aggiunta di un semplice diodo al circuito, ci proteggiamo contro questa eventualità.

Attenzione

Di seguito troverete alcuni consigli utili per utilizzare correttamente un motore DC con Arduino. È sempre consigliabile seguire tutte le precauzioni. Tuttavia non ci si assume nessuna responsabilità nel caso il vostro Arduino prenda fuoco perché avete cercato di collegarlo al motore del vostro SUV, o cose simili.

Attenzione! Utilizzare  Arduino e un motore DC in maniera impropria potrebbe danneggiare il vostro Arduino! Seguite sempre tutte le precauzioni possibili e non fate esperimenti senza un’idea precisa di quello che volete realizzare!!!

Suggerimenti

Utilizzate sempre un transistor: questo vi consente di avere a disposizione la potenza necessaria senza pretendere troppo dai vostro Arduino.

Utilizzate sempre un diodo: questo vi aiuterà a proteggere il vostro Arduino da eventuali cortocircuiti.

Alimentate sempre il motore DC con un’alimentazione esterna e non alimentate mai Arduino con la porta USB del vostro computer!

Questo è importante, soprattutto se Arduino a sua volta alimenta il motore. Un eventuale cortocircuito, in questo caso, può risalire fino al computer!

Arduino e Motore DC

Finalmente, Dopo questa lunghissima ma necessaria introduzione, siamo pronti per una prova pratica vera e propria!

Necessario

  • 1 Arduino
  • 1 Motore DC
  • 1 transistor NPN
  • 1 diodo
  • 1 resistenza da 1k Ohm
  • 8 cavetti

Schema

Posizioniamo gli elementi sulla breadboard, seguendo lo schema seguente:

Schema Arduino + Motore DC

Schema Arduino + Motore DC

In questo esempio, useremo il transistor come un interruttore: la corrente che alimenta il motore cercherà di scaricarsi a terra, ma potrà farlo solo quando il pin 9 di Arduino darà corrente alla base, facendo chiudere il circuito.

Codice

Questo, infine, è il codice dello sketch da caricare su Arduino:

// La corrente va dal pin 9 alla base del transistor
int transistorPin = 9;

void setup() 
{ 
  // Dichiaro il pin 9 come output
  pinMode(transistorPin, OUTPUT);
}

void loop() 
{ 
  // Accende il motore per 1 secondo
  digitalWrite(transistorPin, HIGH);
  delay(1000);

  // Spegne il motore per 1 secondo
  digitalWrite(transistorPin, LOW);
  delay(1000);
}

http://youtu.be/KOPSyPjXPmo

Considerazioni pratiche

Come spesso accade, nella realtà le cose sono più complesse di quanto mostrano esempi e tutorial. Nel nostro caso specifico, pur avendo impostato correttamente la breadboard e lo sketch, è molto probabile che il vostro motore richieda più potenza di quella che riesce a fornire Arduino; oppure, che la resistenza da 1k Ohm sia troppo alta; o che per partire, il motore richieda una piccola “spinta” (come si vede nel video) proprio come tutti i ‘veri’ motori.

Ciononostante, queste sono le basi per utilizzare correttamente un motore con Arduino. Adesso siete liberi di sperimentare – sempre con attenzione – altri motori, altri transistor e altre alimentazioni per far muovere robot, ingranaggi, e tutto quello che vi suggerisce la fantasia! A presto!

Download: arduino_motor.zip