Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

Motor paso a paso

Descripción general

En esta lección, aprenderás a controlar motores paso a paso, específicamente el modelo 28BYJ-48, utilizando un controlador ULN2003 y un Arduino Uno R4. Los motores paso a paso se utilizan en una variedad de aplicaciones como impresoras 3D, máquinas CNC, robótica e incluso en electrodomésticos comunes. Su control preciso permite movimientos intrincados, lo que los hace ideales para proyectos que requieren alta precisión posicional.

En este proyecto, configuraremos el motor paso a paso 28BYJ-48 para que gire en direcciones tanto en el sentido de las agujas del reloj como en el sentido contrario a diferentes velocidades. Los motores paso a paso como estos se utilizan a menudo en sistemas automatizados para girar objetos o accionar mecanismos que requieren un control preciso. Por ejemplo, pueden usarse en cortinas automáticas, donde las cortinas se abren o cierran en momentos específicos o bajo condiciones específicas. Al comprender cómo controlar la rotación y la velocidad de un motor paso a paso, estarás en camino de incorporarlos en tus propios proyectos electrónicos.

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Elite Explorer Kit

300+

Elite Explorer Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN A LOS COMPONENTES

ENLACE DE COMPRA

Arduino Uno R4 WiFi

-

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Motor Paso a Paso

COMPRAR

Módulo de Fuente de Alimentación

-

Conexión

Advertencia

Debido al alto consumo de energía del motor paso a paso, es aconsejable utilizar una fuente de alimentación externa de 5V en lugar de depender del Arduino.

Aunque es posible alimentar el motor paso a paso directamente desde el Arduino, esto no se recomienda ya que puede causar ruido eléctrico en sus líneas de suministro de energía, lo que podría dañar el Arduino.

Nota

Para proteger la batería del Módulo de Fuente de Alimentación, cárgala completamente antes de usarla por primera vez.

../_images/26-stepper_motor_bb.png

Diagrama esquemático

../_images/26_stepper_motor_schematic.png

Código

Nota

  • Puedes abrir el archivo 26-stepper_motor.ino en la ruta elite-explorer-kit-main\basic_project\26-stepper_motor.rst directamente.

  • O copiar este código en Arduino IDE.

Después de cargar el código en la placa Arduino Uno, el motor paso a paso 28BYJ-48 comenzará a girar, impulsado por el controlador ULN2003. Inicialmente, el motor girará en el sentido de las agujas del reloj a una velocidad de 5 RPM (revoluciones por minuto) durante una revolución completa. Después de completar la rotación en el sentido de las agujas del reloj, el motor hará una pausa de 1 segundo.

Posteriormente, el motor girará en sentido contrario a las agujas del reloj a una velocidad aumentada de 15 RPM durante otra revolución completa. Nuevamente, el motor hará una pausa de 1 segundo después de la rotación en sentido contrario a las agujas del reloj. El ciclo de rotación y pausa continuará indefinidamente mientras el Arduino permanezca encendido.

Análisis del código

  1. Inicializar el motor paso a paso

    #include <Stepper.h>  // Incluir la librería Stepper
    
    #define STEPS 2038                   // Definir el número de pasos por revolución para el motor
    Stepper stepper(STEPS, 2, 3, 4, 5);  // Inicializar el objeto stepper y configurar las conexiones de pines (IN1, IN3, IN2, IN4)
    

    Incluir el archivo de cabecera Stepper.h, establecer los pasos a 2038 y luego inicializar el motor paso a paso con la función stepper().

    STEPS: El número de pasos en una revolución de tu motor. Para este motor paso a paso, este valor es 2038.

    Stepper(steps, pin1, pin2, pin3, pin4): Esta función crea una nueva instancia de la clase Stepper que representa un motor paso a paso particular conectado a tu placa Arduino. Los pines pin1, pin2, pin3 y pin4 corresponden a los pines IN1, IN3, IN2 e IN4 en el controlador ULN2003.

  2. Función loop()

    void loop() {
      // Girar en el sentido de las agujas del reloj a 5 RPM
      stepper.setSpeed(5);
      stepper.step(STEPS);  // Girar una revolución completa en el sentido de las agujas del reloj
      delay(1000);          // Esperar 1 segundo
    
      // Girar en sentido contrario a las agujas del reloj a 15 RPM
      stepper.setSpeed(15);
      stepper.step(-STEPS);  // Girar una revolución completa en sentido contrario a las agujas del reloj
      delay(1000);           // Esperar 1 segundo
    }
    

    El programa principal gira el motor paso a paso continuamente, completando un círculo completo en el sentido de las agujas del reloj a 5 RPM y luego un círculo completo en sentido contrario a las agujas del reloj a 15 RPM.

    • setSpeed(rpms): Establece la velocidad del motor en revoluciones por minuto (RPM). Esta función no hace que el motor gire, solo establece la velocidad a la que lo hará cuando llames a step().

      • rpms: la velocidad a la que el motor debe girar en revoluciones por minuto - un número positivo (long).


    • step(steps): Esta función gira el motor por un número especificado de pasos, utilizando la velocidad establecida en la llamada más reciente a setSpeed(). Es importante noter que esta función opera de manera bloqueante, lo que significa que esperará hasta que el motor haya completado su movimiento antes de permitir que el control pase a la siguiente línea en tu boceto.

      Por ejemplo, si establecieras la velocidad en 1 RPM y llamaras a step(2038) en un motor con 2038 pasos, tomaría un minuto completo para que esta función se ejecute. Para lograr un control más preciso, se recomienda mantener una velocidad más alta y solo mover unos pocos pasos con cada llamada a step().

      • steps: el número de pasos para girar el motor - positivo para girar en una dirección, negativo para girar en la otra (int).