Recientemente compré una de estas placas de motor y controlador paso a paso , y no puedo encontrar ninguna documentación sobre cómo conectarla a la Raspberry Pi, estoy tratando de usar el tutorial de AdaFruit y mientras tengo todas las conexiones realizadas correctamente pines gpio conectados (los leds de la placa del controlador se iluminan correctamente, el motor no hace nada).
¿Alguien sabe dónde podría buscar más información sobre cómo conectar la frambuesa pi a un motor paso a paso?
Actualización: 15 de noviembre de 2013 Mi código de programa es este
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
#enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24
#GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
#GPIO.output(enable_pin, 1)
def forward(delay, steps):
for i in range(0, steps):
setStep(1, 0, 1, 0)
setStep(0, 1, 1, 0)
setStep(0, 1, 0, 1)
setStep(1, 0, 0, 1)
def backwards(delay, steps):
for i in range(0, steps):
setStep(1, 0, 0, 1)
setStep(0, 1, 0, 1)
setStep(0, 1, 1, 0)
setStep(1, 0, 1, 0)
def setStep(w1, w2, w3, w4):
GPIO.output(coil_A_1_pin, w1)
GPIO.output(coil_A_2_pin, w2)
GPIO.output(coil_B_1_pin, w3)
GPIO.output(coil_B_2_pin, w4)
while True:
delay = raw_input("Delay between steps (milliseconds)?")
steps = raw_input("How many steps forward? ")
forward(int(delay) / 1000.0, int(steps))
steps = raw_input("How many steps backwards? ")
backwards(int(delay) / 1000.0, int(steps))
Mi tablero se ve así
Mi tablero de conductor se ve así
yo tengo
IN1 => GPIO 4
IN2 => GPIO 17
IN3 => GPIO 23
IN4 => GPIO 24
Respuestas:
Necesita conductores de bus de 3,3 voltios a 5 voltios. El kit de motor que compró fue para Arduino que usa 5 voltios gpio, el rpi usa 3.3 voltios, lo suficiente para disparar los leds, pero no funciona. También puede obtener un controlador de motor que acepte líneas de control de 3.3 voltios.
Recuerde siempre verifique sus clasificaciones de voltios !!
fuente
El artículo de adafruit dice
Si los LED están encendidos y ha verificado que tiene 5V en el cable rojo, es hora de sospechar que el motor está defectuoso.
Con el motor desconectado, use un multímetro para verificar la resistencia entre cada cable y el cable rojo. Todos deberían ser casi iguales
fuente
Primero, ¿qué fuente de alimentación estás usando? En la configuración que veo, se usa el mismo Vcc para conducir el RPi, el motor y la placa (puente en corto). Me sorprende que no restablezca la Raspberry (el consumo excesivo de + 5V tiende a hacer eso) pero realmente no conozco las características del motor, ¿entonces quizás?
¿Puede hacer que el paso a paso se mueva (mínimamente, pasos individuales) conectando + 5V de la fuente de alimentación a Red desde el motor y GND a los 4 terminales restantes en secuencia?
Si los LED se iluminan y el motor no se mueve, realmente parece que no está recibiendo suficiente corriente. Si este es el caso, obtenga una fuente de alimentación más fuerte o (recomendado) agregue una fuente de alimentación separada para alimentar el motor: retire el puente y, en su lugar, conecte Vcc al pin más externo y conecte GND a la misma línea en el tablero como el cable "-" (tierra común, no desconecte el que ya está allí).
(existe una pequeña posibilidad de que haya algo mal con la placa también. ¿Podría proporcionar una buena foto del reverso de la placa? (lado de la soldadura)?
fuente
Mirando el código AdaFruit y el suyo, parecería que la secuencia de pasos es incorrecta, en particular parece que necesita manejar dos pines al mismo tiempo, no solo uno.
Creo que la siguiente secuencia debería funcionar según el código AdaFruit:
fuente
He estado siguiendo la guía aquí http://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/ , buena agrupación de los pines GPIO, pero terminé en stackexchange porque el El motor no estaba haciendo nada. Excepto que lo fue. Cuando lo recogí, pude sentir un pequeño "latido" cada vez que cambiaba el LED, cambié el parámetro WaitTime de 0.5 a valores cada vez más pequeños hasta que 0.001 permitió una rotación completa en 8.5 segundos.
Pero sí cambié el tipo de secuencia a 2 (fabricantes) ya que el tipo 1 parecía detener ocasionalmente el motor incluso con un "latido" que funcionaba.
Modifiqué el código para poder probar la cantidad de pasos que tomó una rotación completa y construí un interruptor de línea de comando para rotar en sentido horario o antihorario.
Con WaitTime a 0.001 ejecutando un CW de prueba y luego usando el mismo número de pasos, CCW produjo una pequeña cantidad de error, es decir, no se alineó donde había comenzado.
Establecer WaitTime en 0.01 me permitió mostrar la ejecución repetida de 4100 pasos, ya sea CW o CCW siempre terminaba en el mismo punto.
fuente