Paso 1: Motor de dirección de Control de DC a través de RPi
Control de motor DC mediante RPi
Nuestra siguiente tarea es controlar un motor DC usando el script de python y cabeceras GPIO en frambuesa pi y esto va a crear una imagen de 'Cómo funciona el robot' en nuestra mente. Puede controlar ventilador de la habitación según el tiempo fuera (como saben el uso de sensores con rpi). Haciendo todo esto le hará entender las reglas básicas de la robótica.
Vamos a motor control un DC que se necesita al menos 400 mA de corriente para funcionar correctamente, pero nuestra RPi puede suministrar casi 20mA solamente. Significa que tenemos que conectar una fuente de alimentación DC externo. No es un problema! Tenemos pequeñas baterías de 6V y 9V disponible en el mercado.
ADVERTENCIA: No conecte un motor directamente a la frambuesa Pi, dañará su frambuesa Pi.
Obviamente se requiere un controlador de motor IC para controlar la funcionalidad del motor (al girarlo en sentido horario o antihorario). Es mejor comenzar con controlador de motor L293D IC.
Requisitos:
· Un Pi de frambuesa con tarjeta SD preinstalada con Raspbian
· Un protoboard
· Un controlador de motor L293D IC
· Cables de puente (macho a macho) y hembra a macho
· Un motor de DC de 6v
· Una batería de 6V o 9V.
L293D
Es un controlador de motor IC podemos controlar 2 motores a la vez de él. A continuación se muestra su configuración de pines. Es un IC que incluye (a un costado) un Vcc (al encender) de 16 pines, un pin GND, un pin de activación (on y off un motor), dos entradas correspondientes a dos salidas.
Conexiones:
· Primero conecte el pin de Vcc del L293D a 5V (3, 3V también puede ser uso)
· Ahora Conecte los motivos
· Estamos usando 2,3,4 GPIO para el IC de control. (GPIO-02 y 03 de GPIO como entrada 1 y 2 respectivamente)
· Conectarse GPIO-04 respectivo pin Enable del IC.
· Ahora finalmente Conecte salida 1 & 2 a ambos la conexión del motor como se muestra en la figura.
Código Python:-
importación RPi.GPIO como GPIO
de importación sueño
GPIO.setmode (GPIO. BCM)
Motor1A = 02
Motor1B = 03
Motor1E = 04
GPIO.setup (Motor1A, GPIO. HACIA FUERA)
GPIO.setup (Motor1B, GPIO. HACIA FUERA)
GPIO.setup (Motor1E, GPIO. HACIA FUERA)
Imprimir "El Motor va a empezar"
GPIO.output (Motor1A, GPIO. # ALTA) para funcionar el motor en sentido horario
GPIO.output (Motor1B, GPIO. # BAJO) poner alto a girar el motor en sentido antihorario
GPIO.output (Motor1E, GPIO. # ALTA) debe ser siempre alto para arrancar el motor
Sleep(5)
Imprimir "Parada motor"
GPIO.output (Motor1E, GPIO. # BAJO) para parar el motor
GPIO.cleanup()
Después de ejecutar el código anterior el motor empezará a girar en dirección a la derecha durante 5 segundos. Modificando el código anterior puede hacer revertirla. Ahora podemos hacer un coche con dos o cuatro motores.
Control de velocidad de motor DC mediante RPi
Como saben algunos de los lugares que necesita también controlar la velocidad de motores. Del tema anterior se entiende el control de encendido y apagado de los motores, pero eso no es suficiente derecho?? Ahora si tiene una pregunta en tu mente que cómo podemos producir voltaje analógico de pines GPIO de RPi. No hay problema porque podemos producir pulsos de voltaje de él por medio de PWM (modulación de anchura de pulso) y de control de voltaje de la salida del pin GPIO.
Modulación de anchura de pulso
Es un proceso muy simple que podemos controlar la frecuencia del voltaje de la fuente. Módulo PWM está disponible para los GPIO en RPi y como la conocemos
Período de tiempo = 1/frecuencia
Si selecciono una frecuencia de 100Hz que significa el período de tiempo es 10m seg (voltaje es triged a 'Alto' para m 10 seg). Nuestra batería de suministro de 9V al motor y para reducir la velocidad que tenemos para reducir esta tensión. Por lo tanto si queremos reducir la velocidad a la mitad que la que tenemos que cambiar el tiempo (es el porcentaje del período de tiempo para que voltaje es alto) a 50.
Voltaje suministrado al motor está controlando por pin Enable del motor controlador IC - L293N así que sólo tenemos que el PWM se aplica al pin Enable para variar la velocidad. El bramido es el código de python para entender PWM y que necesita la conexión por encima en el tema anterior (control de motor DC mediante RPi).
>>> importación RPi.GPIO como biblioteca de GPIO # importación GPIO
>>> de tiempo importar sueño
>>> GPIO.setmode (GPIO. BCM)
>>> Motor1A = # 02 conjunto GPIO-02 entrada 1 de la IC de controlador
>>> Motor1B = # 03 set GPIO-03 como entrada 2 de la IC de controlador
>>> Motor1E = # 04 set GPIO-04 como activar pin 1 de la IC de controlador
>>> GPIO.setup (Motor1A, GPIO. HACIA FUERA)
>>> GPIO.setup (Motor1B, GPIO. HACIA FUERA)
>>> GPIO.setup (Motor1E, GPIO. HACIA FUERA)
>>> pwm = GPIO. Pin PWM(04,100) # de configuración Enable significa GPIO-04 para PWM
>>> pwm.start(50) # comenzando con 50% tiempo
>>> Imprimir "Seguir adelante"
>>> GPIO.output (Motor1A, GPIO. ALTA)
>>> GPIO.output (Motor1B, GPIO. BAJO)
>>> GPIO.output (Motor1E, GPIO. ALTA)
>>> sleep(2)
# esto funcionará el motor hacia adelante durante 2 segundos con 50% de velocidad.
>>> pwm. ChangeDutyCycle(80) # tiempo aumento a 80
>>> Imprimir "Ir hacia atrás"
>>> GPIO.output (Motor1A, GPIO. ALTA)
>>> GPIO.output (Motor1B, GPIO. BAJO)
>>> GPIO.output (Motor1E, GPIO. ALTA)
>>> sleep(2)
# Esto ejecutará su motor en la dirección contraria para 2 segundos con un 80% de la velocidad mediante el suministro de 80% de la tensión de la batería
>>> Imprimir "Detener ahora"
>>> GPIO.output (Motor1E, GPIO. BAJO)
>>> parada de # pwm.stop() PWM de GPIO de salida es necesario
>>> GPIO.cleanup()
Espero que funciona para usted!