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.

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

  • Avances exclusivos: 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 especiales.

👉 ¿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 conducir 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, utilizamos 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 siguientes enlaces.

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 a la placa de pruebas e inserta el capuchón del puente en el pin de 5V, así se suministrará 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 mientras el otro en bajo. De esta manera, puedes 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 usar una batería de 9V con el conector de batería de 9V incluido en el kit. Inserta el capuchón del 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/python

Paso 3: Ejecuta.

sudo python3 1.3.1_Motor.py

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

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

import RPi.GPIO as GPIO
import time

# Set up pins
MotorPin1   = 17
MotorPin2   = 27
MotorEnable = 22

def setup():
    # Set the GPIO modes to BCM Numbering
    GPIO.setmode(GPIO.BCM)
    # Set pins to output
    GPIO.setup(MotorPin1, GPIO.OUT)
    GPIO.setup(MotorPin2, GPIO.OUT)
    GPIO.setup(MotorEnable, GPIO.OUT, initial=GPIO.LOW)

# Define a motor function to spin the motor
# direction should be
# 1(clockwise), 0(stop), -1(counterclockwise)
def motor(direction):
    # Clockwise
    if direction == 1:
        # Set direction
        GPIO.output(MotorPin1, GPIO.HIGH)
        GPIO.output(MotorPin2, GPIO.LOW)
        # Enable the motor
        GPIO.output(MotorEnable, GPIO.HIGH)
        print ("Clockwise")
    # Counterclockwise
    if direction == -1:
        # Set direction
        GPIO.output(MotorPin1, GPIO.LOW)
        GPIO.output(MotorPin2, GPIO.HIGH)
        # Enable the motor
        GPIO.output(MotorEnable, GPIO.HIGH)
        print ("Counterclockwise")
    # Stop
    if direction == 0:
        # Disable the motor
        GPIO.output(MotorEnable, GPIO.LOW)
        print ("Stop")

def main():
    # Define a dictionary to make the script more readable
    # CW as clockwise, CCW as counterclockwise, STOP as stop
    directions = {'CW': 1, 'CCW': -1, 'STOP': 0}
    while True:
        # Clockwise
        motor(directions['CW'])
        time.sleep(5)
        # Stop
        motor(directions['STOP'])
        time.sleep(5)
        # Anticlockwise
        motor(directions['CCW'])
        time.sleep(5)
        # Stop
        motor(directions['STOP'])
        time.sleep(5)

def destroy():
    # Stop the motor
    GPIO.output(MotorEnable, GPIO.LOW)
    # Release resource
    GPIO.cleanup()

# If run this script directly, do:
if __name__ == '__main__':
    setup()
    try:
        main()
    # When 'Ctrl+C' is pressed, the program
    # destroy() will be executed.
    except KeyboardInterrupt:
        destroy()

Explicación del Código

def motor(direction):
    # Sentido horario
    if direction == 1:
        # Establecer dirección
        GPIO.output(MotorPin1, GPIO.HIGH)
        GPIO.output(MotorPin2, GPIO.LOW)
        # Habilitar el motor
        GPIO.output(MotorEnable, GPIO.HIGH)
        print ("Clockwise")
...

Crear una función, motor() cuyo parámetro es direction. Si se cumple la condición de que direction=1, el motor gira en sentido horario; cuando direction=-1, el motor gira en sentido antihorario; y bajo la condición de que direction=0, deja de girar.

def main():
    # Definir un diccionario para hacer el script más legible
    # CW como sentido horario, CCW como sentido antihorario, STOP como detener
    directions = {'CW': 1, 'CCW': -1, 'STOP': 0}
    while True:
        # Sentido horario
        motor(directions['CW'])
        time.sleep(5)
        # Detener
        motor(directions['STOP'])
        time.sleep(5)
        # Sentido antihorario
        motor(directions['CCW'])
        time.sleep(5)
        # Detener
        motor(directions['STOP'])
        time.sleep(5)

En la función main(), crea un diccionario, directions[], en el cual CW es igual a 1, el valor de CCW es -1, y el número 0 se refiere a Stop.

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

Ahora, deberías ver la hélice del motor girando.

Imagen del Fenómeno

../_images/image119.jpeg