Nota

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

¿Por qué unirse?

  • Soporte experto: Resuelve problemas post-venta 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 avances exclusivos.

  • 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 a utilizar el L293D para controlar un motor de corriente continua (DC) y hacer que gire en sentido horario y antihorario. Dado que el motor de corriente continua necesita una corriente mayor, por razones de seguridad, utilizaremos el Módulo de Alimentación para suministrar energía a los motores.

Componentes Necesarios

En este proyecto, necesitaremos los siguientes componentes.

../_images/1.3.1_motor_list.png

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

Nombre

ELEMENTOS 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

../_images/1.3.1_motor_schematic.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/1.3.1_motor_circuit.png

Nota

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

../_images/1.3.1_motor_battery.jpeg

Paso 2: Entra en la carpeta del código.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecuta.

sudo python3 1.3.1_Motor_zero.py

Cuando el código se ejecute, el motor primero girará en sentido horario durante 5s, luego se detendrá durante 5s. Después, girará en sentido antihorario durante 5s; posteriormente, el motor se detendrá durante 5s. Esta serie de acciones se ejecutará repetidamente.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

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-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
from gpiozero import Motor
from time import sleep

# Inicializar el Motor con GPIO Zero, especificando los pines GPIO para control hacia adelante (17), hacia atrás (27) y habilitación (22)
motor = Motor(forward=17, backward=27, enable=22)

try:
    # Función principal para controlar la dirección y el movimiento del motor.
    # Alterna la rotación del motor entre sentido horario y antihorario con paradas intermedias.
    actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop}  # Definir acciones del motor para mayor legibilidad

    while True:
        # Iterar a través de las acciones definidas para controlar la dirección del motor
        for action in ['CW', 'STOP', 'CCW', 'STOP']:
            actions[action]()  # Ejecutar la acción actual (adelante, detener, atrás, detener)
            print(f"{action}")  # Mostrar la acción actual en la consola
            sleep(5)  # Pausar durante 5 segundos antes de proceder a la siguiente acción

except KeyboardInterrupt:
    # Manejar de manera adecuada una interrupción de teclado (por ejemplo, Ctrl+C) para detener el programa
    pass

Explicación del Código

  1. Estas declaraciones de importación traen la clase Motor de la biblioteca gpiozero y la función sleep del módulo time.

    #!/usr/bin/env python3
    from gpiozero import Motor
    from time import sleep
    
  2. Esta línea inicializa un objeto Motor, especificando los pines GPIO para control hacia adelante (17), hacia atrás (27) y habilitación (22).

    # Inicializar el Motor con GPIO Zero, especificando los pines GPIO para control hacia adelante (17), hacia atrás (27) y habilitación (22)
    motor = Motor(forward=17, backward=27, enable=22)
    
  3. Las acciones para el control del motor se definen en un diccionario para mayor legibilidad. Un bucle infinito (while True) itera a través de estas acciones, ejecutando cada una durante 5 segundos.

    try:
        # Función principal para controlar la dirección y el movimiento del motor.
        # Alterna la rotación del motor entre sentido horario y antihorario con paradas intermedias.
        actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop}  # Definir acciones del motor para mayor legibilidad
    
        while True:
            # Iterar a través de las acciones definidas para controlar la dirección del motor
            for action in ['CW', 'STOP', 'CCW', 'STOP']:
                actions[action]()  # Ejecutar la acción actual (adelante, detener, atrás, detener)
                print(f"{action}")  # Mostrar la acción actual en la consola
                sleep(5)  # Pausar durante 5 segundos antes de proceder a la siguiente acción
    
  4. Este segmento permite que el programa se termine de manera segura usando una interrupción de teclado (Ctrl+C) sin causar errores.

    except KeyboardInterrupt:
    # Manejar de manera adecuada una interrupción de teclado (por ejemplo, Ctrl+C) para detener el programa
    pass