En la entrada anterior ¿Cómo controlar un motor con Arduino? aprendimos a controlar la dirección y velocidad de un motor a través de las instrucciones del código, en esta esta guía aprenderás a controlar la velocidad de un motor DC utilizando un potenciómetro, una placa Arduino y el controlador L298N. Esta configuración es ideal para proyectos donde se necesita ajustar la velocidad de motores de corriente continua de manera precisa y eficiente.


Materiales necesarios:

  • 1 Arduino Uno
  • 1 motor CC
  • 1 potenciómetro de 10k ohmios
  • 1 controlador L298N
  • Fuente de alimentación externa para el motor (como una batería de 9V)
  • Protoboard y cables de conexión

Esquema de Conexión:

Controlar-Velocidad-de-un-motor-con-Potenciómetro-y-Arduino




  1. Motor: conecta los dos terminales del motor a las salidas OUT1 y OUT2 del L298N.
  2. Fuente de alimentación del motor: conecta el terminal positivo de la fuente de alimentación al pin 12V del L298N y el negativo al pin GND .
  3. Conexión de Arduino al L298N:
    • Pin de control IN1 del L298N al pin digital 9 del Arduino.
    • Pin de control IN2 del L298N al pin digital 8 del Arduino.
    • Pin ENA del L298N al pin PWM 10 del Arduino (para control de velocidad).
  4. Potenciómetro: conecta los extremos del potenciómetro a 5V y GND, y el pin central al pin A0 del Arduino.
  5. Lógica del L298N: Conecta el pin GND del L298N al GND del Arduino.





Código Arduino con L298N:

// Definir pines
int potPin = A0;     // Pin del potenciómetro
int in1 = 9;         // Pin IN1 del L298N
int in2 = 8;         // Pin IN2 del L298N
int enablePin = 10;  // Pin ENA del L298N (PWM)

void setup() {
  // Configurar pines como salida
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enablePin, OUTPUT);

  // Inicializar el motor en dirección hacia adelante
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
}

void loop() {
  // Leer el valor del potenciómetro (0 a 1023)
  int potValue = analogRead(potPin);

  // Mapear el valor del potenciómetro a un rango de 0 a 255
  int motorSpeed = map(potValue, 0, 1023, 0, 255);

  // Controlar la velocidad del motor usando PWM
  analogWrite(enablePin, motorSpeed);
}

Explicación del Código:

  1. Control de Direcciones del Motor:

    En el setup(), configuramos el motor para que gire en una dirección específica. Usamos los pines IN1 e IN2 del L298N para definir la dirección. En este caso, IN1 está en HIGH e IN2 en LOW, lo que hace que el motor gire hacia adelante.

  2. Control de Velocidad:

    En el loop(), leemos el valor del potenciómetro con analogRead(potPin). Luego, este valor se convierte a un rango de 0 a 255 con map(), y se usa analogWrite(enablePin, motorSpeed)para controlar la velocidad del motor.


Conclusión:

Con esta configuración, puede controlar la velocidad de un motor de corriente continua simplemente girando el potenciómetro. El driver L298N te permite manejar motores más grandes y potentes de manera eficiente, haciéndolo ideal para proyectos que requieren más potencia. ¡Experimenta ajustando la velocidad y dirección para llevar tus proyectos al siguiente nivel!