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.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los siguientes enlaces.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
|---|---|
- |
|
- |
|
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.
Procedimientos Experimentales
Paso 1: Construye el circuito.
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.
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