Controllare un motore DC utilizzando un driver di motore L293D con PWM Arduino

Controllare un motore DC utilizzando un driver di motore L293D con PWM Arduino

Questo progetto dimostra come controllare la velocità e la direzione di un motore DC utilizzando un chip driver per motori L293D e le capacità di modulazione della larghezza dell'impulso (PWM) di Arduino. Questo setup consente un controllo preciso del motore, rendendolo adatto a una varietà di applicazioni.

Ecco alcune idee di progetti utilizzando questa configurazione:

  • Robotica:Controlla il movimento delle ruote di un piccolo robot.
  • Dispositivi automatizzati:Crea tende automatizzate, persiane o un piccolo nastro trasportatore.
  • Controllo della ventola:Regola la velocità di una ventola di raffreddamento in base alle letture di temperatura.
  • Tracker solari:Posiziona piccoli pannelli solari per seguire il sole durante tutta la giornata.

Hardware/Componenti

  • Arduino Uno (o scheda compatibile)
  • Circuito integrato driver motore L293D
  • Motore DC (conforme ai limiti di tensione e corrente dell'L293D, fino a 600mA)
  • Alimentatore 9V (per il motore)
  • Cavi di collegamento
  • Breadboard (raccomandato)

Guida al cablaggio

Il chip L293D funge da interfaccia tra l'Arduino e il motore DC. Permette all'Arduino di controllare sia la velocità che la direzione del motore. Il chip richiede un'alimentazione separata per il motore perché l'Arduino non può fornire sufficiente corrente per la maggior parte dei motori.

%%CABLAGGIO%%

Spiegazione del codice

Il codice Arduino controlla il driver L293D, che a sua volta controlla il motore DC. Il codice utilizza PWM per variare la velocità del motore e segnali digitali per cambiare direzione.

Ecco i principali parametri configurabili nel codice:


#define P1A 10 // Arduino pin connected to L293D input 1A
#define P2A 11 // Arduino pin connected to L293D input 2A
#define EN12 9 // Arduino pin connected to L293D enable pin (1,2EN)

const int speedStep = 15; // Increment for speed changes
const int speedDelay = 1000; // Delay between speed steps (in milliseconds)

TheL293D()La funzione controlla la direzione e la velocità del motore. 'L' imposta il motore per ruotare in senso orario, 'R' lo imposta per ruotare in senso antiorario. Ilspdil parametro controlla la velocità (0-255) eenabilita (1) o disabilita (0) il motore. (nel video alle 09:24)


void L293D(char dir,int spd, int en)
{
  if(dir =='L') // Clockwise rotation
  {
    // ...
    analogWrite(P1A,spd); // Set speed using PWM
    digitalWrite(P2A,LOW); 
  }else{ // Counter-clockwise rotation
    // ...
    digitalWrite(P1A,LOW);
    analogWrite(P2A,spd); // Set speed using PWM
  }
}

Progetto dal Vivo/Demostrazione

Il video dimostra il progetto in azione, mostrando i cambiamenti di velocità e direzione del motore. Le letture dell'oscilloscopio visualizzano i segnali PWM che controllano il motore. (nel video a 11:07)

Capitoli

  • [00:00] Introduzione al controllo del motore CC con L293D
  • [00:30] Dimostrazione e spiegazione del progetto
  • [01:12] Panoramica del Driver di Motore L293D
  • [02:08] Specifiche del Motore DC
  • [02:30] Spiegazione del Datasheet L293D
  • [04:40] Spiegazione e dimostrazione del cablaggio
  • [07:05] Spiegazione del codice Arduino
  • [11:07] Dimostrazione del progetto e letture dell'oscilloscopio
144-Arduino source for L293D motor driver (loop)
Lingua: C++
145-Source for a simple L293D motor controller using Arduino (CW, CCW, and STOP)
Lingua: C++
Copia!

File📁

Nessun file disponibile.