Controlla i motori DC e stepper con i moduli controller motore doppio L298N e Arduino

Non devi spendere molti soldi per controllare i motori con un Arduino o una scheda compatibile. Dopo un po 'di caccia abbiamo trovato un modulo di controllo del motore pulito basato sull'IC a ponte H L298N che ti consente di controllare la velocità e la direzione di due motori CC o di controllare facilmente un motore passo-passo bipolare.

Il modulo H-bridge L298N può essere utilizzato con motori con una tensione compresa tra 5 e 35 V CC. Con il modulo utilizzato in questa esercitazione, è presente anche un regolatore a 5 V integrato, quindi se la tensione di alimentazione è fino a 12 V è possibile anche alimentare 5 V dalla scheda.

Quindi iniziamo!

Passaggio 1: informazioni sulle connessioni del modulo L298

Per prima cosa eseguiremo le connessioni, quindi spiegheremo come controllare i motori CC, quindi un motore passo-passo. A questo punto, rivedere i collegamenti sul modulo H-bridge L298N.

Considera l'immagine: abbina i numeri all'elenco sotto l'immagine:

  1. Motore CC 1 “+” o motore passo-passo A +
  2. Motore CC 1 "-" o motore passo-passo A-
  3. Ponticello 12V - rimuoverlo se si utilizza una tensione di alimentazione superiore a 12V DC. Ciò consente l'alimentazione del regolatore 5V di bordo

  4. Collegare qui la tensione di alimentazione del motore, massimo 35 V CC. Rimuovere il ponticello da 12 V se> 12 V CC

  5. GND

  6. Uscita 5 V con jumper 12V in posizione, ideale per alimentare il tuo Arduino (ecc.)

  7. Jumper motore DC 1. Lasciarlo in posizione quando si utilizza un motore passo-passo. Collegare all'uscita PWM per il controllo della velocità del motore CC.

  8. IN 1

  9. IN 2

  10. IN3

  11. IN4

  12. Jumper motore DC 2 abilitazione. Lasciarlo in posizione quando si utilizza un motore passo-passo. Collegare all'uscita PWM per il controllo della velocità del motore CC

  13. Motore CC 2 “+” o motore passo-passo B +

  14. Motore CC 2 “-” o motore passo-passo B-

Passaggio 2: controllo dei motori CC

Controllare uno o due motori CC è abbastanza semplice con il modulo ponte H L298N. Innanzitutto collegare ciascun motore ai collegamenti A e B sul modulo L298N.

Se si utilizzano due motori per un robot (ecc.) Assicurarsi che la polarità dei motori sia la stessa su entrambi gli ingressi. Altrimenti potresti doverli scambiare quando imposti entrambi i motori in avanti e uno va indietro!

Quindi, collegare l'alimentatore: il positivo al pin 4 sul modulo e il negativo / GND al pin 5. Se l'alimentazione è fino a 12V, è possibile lasciare nel jumper 12V (punto 3 nell'immagine sopra) e saranno disponibili 5V dal pin 6 sul modulo.

Questo può essere alimentato al pin 5 V del tuo Arduino per alimentarlo dall'alimentazione dei motori. Non dimenticare di collegare Arduino GND al pin 5 sul modulo e per completare il circuito. Ora avrai bisogno di sei pin di uscita digitale sul tuo Arduino, due dei quali devono essere pin PWM (modulazione di larghezza di impulso).

I pin PWM sono indicati dalla tilde (“~”) accanto al numero del pin, ad esempio nell'immagine dei pin digitali di Arduino Uno.

Infine, collega i pin di uscita digitale Arduino al modulo driver. Nel nostro esempio abbiamo due motori DC, quindi i pin digitali D9, D8, D7 e D6 saranno collegati rispettivamente ai pin IN1, IN2, IN3 e IN4. Quindi collegare D10 al pin del modulo 7 (rimuovere prima il ponticello) e D5 al pin del modulo 12 (di nuovo, rimuovere il ponticello).

La direzione del motore viene controllata inviando un segnale HIGH o LOW all'azionamento per ciascun motore (o canale). Ad esempio per il motore uno, da HIGH a IN1 e da LOW a IN2 lo farà ruotare in una direzione, mentre un LOW e HIGH lo faranno girare nell'altra direzione.

Tuttavia, i motori non gireranno finché non viene impostato un HIGH sul pin di abilitazione (7 per il motore uno, 12 per il motore due). E possono essere spenti con un BASSO agli stessi pin. Tuttavia, se è necessario controllare la velocità dei motori, il segnale PWM dal pin digitale collegato al pin di abilitazione può occuparsene.

Questo è ciò che abbiamo fatto con lo schizzo dimostrativo del motore DC. Due motori CC e un Arduino Uno sono collegati come descritto sopra, insieme a un alimentatore esterno. Quindi inserire e caricare il seguente schizzo:

 // collega i pin del controller del motore ai pin digitali di Arduino // motor one int enA = 10; int in1 = 9; int in2 = 8; // motor two int enB = 5; int in3 = 7; int in4 = 6; void setup () {// imposta tutti i pin di controllo del motore su output pinMode (enA, OUTPUT); pinMode (enB, OUTPUT); pinMode (in1, OUTPUT); pinMode (in2, OUTPUT); pinMode (in3, OUTPUT); pinMode (in4, OUTPUT); } void demoOne () {// questa funzione farà funzionare i motori in entrambe le direzioni a velocità fissa // attiva il motore A digitalWrite (in1, HIGH); digitalWrite (in2, LOW); // imposta la velocità su 200 al di fuori dell'intervallo possibile 0 ~ 255 analogWrite (enA, 200); // attiva il motore B digitalWrite (in3, HIGH); digitalWrite (in4, LOW); // imposta la velocità su 200 fuori dall'intervallo possibile 0 ~ 255 analogWrite (enB, 200); ritardo (2000); // ora cambia la direzione del motore digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); ritardo (2000); // ora spegne i motori digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void demoTwo () {// questa funzione farà funzionare i motori nell'intervallo di possibili velocità // nota che la velocità massima è determinata dal motore stesso e la tensione di funzionamento // i valori PWM inviati da analogWrite () sono frazioni del massima velocità possibile // dall'hardware // accendere i motori digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); // accelera da zero alla velocità massima per (int i = 0; i <256; i ++) {analogWrite (enA, i); analogWrite (enB, i); ritardo (20); } // decelera dalla velocità massima a zero per (int i = 255; i> = 0; --i) {analogWrite (enA, i); analogWrite (enB, i); ritardo (20); } // ora spegne i motori digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void loop () {demoOne (); ritardo (1000); demoTwo (); ritardo (1000); } 

Quindi cosa sta succedendo in quello schizzo? Nella funzione demoOne () accendiamo i motori e li eseguiamo con un valore PWM di 200. Questo non è un valore di velocità, invece la potenza viene applicata per 200/255 di un periodo di tempo contemporaneamente.


Quindi dopo un momento i motori funzionano nella direzione opposta (vedi come abbiamo cambiato gli ALTI e i BASSI nelle funzioni digitalWrite ()?). Per avere un'idea della gamma di velocità possibile del tuo hardware, percorriamo l'intera gamma PWM nella funzione demoTwo () che accende i motori e li percorre attraverso valori PWM da zero a 255 e di nuovo a zero con i due per i loop .

Finalmente questo è dimostrato nel video in questa pagina - usando il nostro telaio serbatoio usurato con due motori DC.

Passaggio 3: controllo di un motore passo-passo con Arduino e L298N

I motori passo-passo possono sembrare complessi, ma nulla potrebbe essere oltre la verità. In questo esempio controlliamo un tipico motore passo-passo NEMA-17 che ha quattro fili, come mostrato nell'immagine in questo passaggio.

Ha 200 passi per giro e può operare a 60 RPM. Se non hai già il valore di passo e velocità per il tuo motore, scoprilo ora e ne avrai bisogno per lo schizzo.

La chiave per il successo del controllo del motore passo-passo è l'identificazione dei fili, ovvero quale è quale. Sarà necessario determinare i fili A +, A-, B + e B. Con il nostro motore di esempio questi sono rosso, verde, giallo e blu. Ora facciamo il cablaggio.

Collegare i fili A +, A-, B + e B- dal motore passo-passo alle connessioni del modulo 1, 2, 13 e 14 rispettivamente. Posizionare i ponticelli inclusi con il modulo L298N sulle coppie nei punti 7 e 12. del modulo Quindi collegare l'alimentatore come richiesto ai punti 4 (positivo) e 5 (negativo / GND).

Ancora una volta se l'alimentazione del motore passo-passo è inferiore a 12 V, montare il ponticello sul modulo al punto 3 che fornisce un'alimentazione a 5 V ordinata per Arduino. Quindi, collegare i pin del modulo L298N IN1, IN2, IN3 e IN4 ai pin digitali D8, D9, D10 e D11 di Arduino.

Infine, collegare Arduino GND al punto 5 sul modulo e Arduino 5V al punto 6 se si procede al 5V dal modulo. Il controllo del motore passo-passo dai tuoi schizzi è molto semplice, grazie alla libreria Stepper Arduino inclusa con l'IDE Arduino di serie.

Per dimostrare il tuo motore, carica semplicemente lo schizzo stepper_oneRevolution incluso nella libreria Stepper. Per trovarlo, fai clic sul menu File> Esempi> Stepper nell'IDE di Arduino.

Infine, controlla il valore di

 const int stepsPerRevolution = 200; 
nello schizzo e modifica 200 per il numero di passi per giro per il tuo motore passo-passo, e anche la velocità che è preimpostata su 60 RPM nella seguente riga:
 myStepper.setSpeed ​​(60); 

Ora puoi salvare e caricare lo schizzo, che invierà il tuo motore passo-passo intorno a un giro, quindi di nuovo indietro. Questo si ottiene con la funzione

myStepper.step (stepsPerRevolution); // in senso orario

myStepper.step (-stepsPerRevolution); // per antiorario

Infine, in questo passaggio viene mostrata una rapida dimostrazione del nostro hardware di prova.

Quindi il gioco è fatto, un modo semplice ed economico per controllare i motori con il tuo Arduino o la scheda compatibile. E se ti è piaciuto questo articolo o vuoi far conoscere qualcun altro all'interessante mondo di Arduino, dai un'occhiata al mio libro (ora in quarta stampa!) "Arduino Workshop".

Articoli Correlati