Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete 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.

  • Aprender y Compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas Exclusivas: Obtén acceso anticipado a anuncios de nuevos 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.

1.3.1 Motor

Introducción

En este proyecto, aprenderemos cómo usar el L293D para controlar un motor de corriente continua (DC) y hacerlo girar en sentido horario y antihorario. Dado que el motor de DC necesita una corriente mayor, por razones de seguridad, usaremos el módulo de alimentación para suministrar energía a los motores.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_1.3.1.png

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

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

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

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Módulo de Fuente de Alimentación

-

L293D

-

Motor de corriente continua (DC)

COMPRAR

Diagrama Esquemático

Conecta el módulo de alimentación en la placa de pruebas (breadboard) e inserta el jumper en el pin de 5V, de esta forma se obtendrá un voltaje de 5V. Conecta el pin 1 del L293D al GPIO22 y configúralo como nivel alto. Conecta el pin 2 al GPIO27 y el pin 7 al GPIO17, luego establece un pin en alto y el otro en bajo. Así podrás cambiar la dirección de rotación del motor.

../_images/image336.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/image117.png

Nota

El módulo de alimentación puede utilizar una batería de 9V con el conector para baterías de 9V incluido en el kit. Inserta el puente del módulo de alimentación en las tiras de bus de 5V de la placa de pruebas.

../_images/image118.jpeg

Paso 2: Ingresa a la carpeta del código.

cd ~/raphael-kit/c/1.3.1/

Paso 3: Compila.

gcc 1.3.1_Motor.c -lwiringPi

Paso 4: Ejecuta el archivo compilado.

sudo ./a.out

Mientras el código se ejecuta, el motor primero gira en sentido horario durante 5s, luego se detiene durante 5s, después gira en sentido antihorario durante 5s; posteriormente, el motor se detiene durante 5s. Esta serie de acciones se ejecutará repetidamente.

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", por favor consulta Instalar y verificar WiringPi.

Código

#include <wiringPi.h>
#include <stdio.h>

#define MotorPin1       0
#define MotorPin2       2
#define MotorEnable     3

int main(void){
    int i;
    if(wiringPiSetup() == -1){ //when initialize wiring failed, print messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(MotorPin1, OUTPUT);
    pinMode(MotorPin2, OUTPUT);
    pinMode(MotorEnable, OUTPUT);
    while(1){
        printf("Clockwise\n");
        digitalWrite(MotorEnable, HIGH);
        digitalWrite(MotorPin1, HIGH);
        digitalWrite(MotorPin2, LOW);
        for(i=0;i<3;i++){
            delay(1000);
        }

        printf("Stop\n");
        digitalWrite(MotorEnable, LOW);
        for(i=0;i<3;i++){
            delay(1000);
        }

        printf("Anti-clockwise\n");
        digitalWrite(MotorEnable, HIGH);
        digitalWrite(MotorPin1, LOW);
        digitalWrite(MotorPin2, HIGH);
        for(i=0;i<3;i++){
            delay(1000);
        }

        printf("Stop\n");
        digitalWrite(MotorEnable, LOW);
        for(i=0;i<3;i++){
            delay(1000);
        }
    }
    return 0;
}

Explicación del Código

digitalWrite(MotorEnable, HIGH);

Habilita el L293D.

digitalWrite(MotorPin1, HIGH);
digitalWrite(MotorPin2, LOW);

Establece un nivel alto para 2A (pin 7); dado que 1,2EN (pin 1) está en nivel alto, 2Y saldrá con nivel alto.

Establece un nivel bajo para 1A, luego 1Y saldrá con nivel bajo, y el motor girará.

for(i=0;i<3;i++){
    delay(1000);
}

Este bucle es para retrasar durante 3*1000ms.

digitalWrite(MotorEnable, LOW)

Si 1,2EN (pin 1) está en nivel bajo, L293D no funciona. El motor deja de girar.

digitalWrite(MotorPin1, LOW)
digitalWrite(MotorPin2, HIGH)

Invierte el flujo de corriente del motor, luego el motor girará en sentido inverso.

Imagen del Fenómeno

../_images/image119.jpeg