Motor paso a paso 28BYJ-48 con controlador ULN2003 y tutorial de Arduino

Motor paso a paso 28BYJ-48 con controlador ULN2003 y tutorial de Arduino

Este artículo incluye todo lo que necesitas saber sobre el control de un motor paso a paso 28BYJ-48 con la placa de controladores ULN2003 y Arduino. ¡He incluido hojas de datos, un diagrama de cableado, y muchos códigos de ejemplo!

Primero echamos un vistazo a la biblioteca Arduino Stepper, que es muy fácil de usar. Esta librería es estupenda cuando se está empezando, pero no tiene muchas características adicionales.

Recomiendo encarecidamente echar un vistazo a los códigos de ejemplo para la biblioteca AccelStepper al final de este tutorial. Esta biblioteca es bastante fácil de usar y puede mejorar en gran medida el rendimiento de su hardware.

Después de cada ejemplo, desgloso y explico cómo funciona el código, por lo que no deberías tener problemas para modificarlo y adaptarlo a tus necesidades.

Si quieres aprender más sobre el control de motores paso a paso más grandes, con más par y más velocidad, echa un vistazo a los artículos siguientes. En estos artículos te enseño a controlar motores paso a paso NEMA 17, con drivers como el A4988.

Otros tutoriales sobre motores paso a paso:

Si tiene alguna pregunta, deje un comentario a continuación.


Suministros

Componentes de hardware

28byj-48-stepper-motorMotor paso a paso 28BYJ-48× 1Amazon
Placa de controladores ULN2003× 1Amazon
Arduino Uno Rev 3Arduino Uno Rev3× 1Amazon
Cables de puente (macho a hembra)× 10Amazon
Tablero de pruebas (opcional, facilita el cableado)× 1Amazon
Cable USB tipo A/B× 1Amazon
Fuente de alimentación de 5V (alimentar el motor paso a paso directamente desde el Arduino puede dañarlo)× 1Amazon

Software

Arduino IDEArduino IDE

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.


Información sobre el motor paso a paso 28BYJ-48 y la placa de controladores ULN2003

El 28BYJ-48 es uno de los motores paso a paso más baratos que puedes encontrar. Aunque no es súper preciso o potente, es un gran motor para usar en proyectos pequeños o si sólo quieres aprender sobre los motores paso a paso.

Este motor suele utilizarse para ajustar automáticamente las paletas de un aparato de aire acondicionado. Lleva incorporada una caja de engranajes, que le da un par adicional y reduce la velocidad drásticamente.

A continuación puedes encontrar las especificaciones tanto del motor paso a paso como del driver que se utilizan en este tutorial.

Especificaciones del motor paso a paso 28BYJ-48

Tensión nominal5 V
Resistencia de la bobina50 ohmios
Tipo de bobinaUnipolar
Diámetro - eje0,197″ (5,00 mm)
Longitud - eje y cojinete0,394″ (10 mm)
CaracterísticasEje plano
Tamaño/dimensiónRedondo - 1,100″ de diámetro (28,00 mm)
Distancia de los agujeros de montajeEje plano
Reducción de engranajes1/64(ver nota)
Ángulo de pasoModo de medio paso (recomendado): 0,0879°
Modo de paso completo: 0.176°
Pasos por revoluciónModo de medio paso: 4096(ver nota)
Modo de paso completo: 2048
Estilo de terminaciónCables con conector
Tipo de motorMotorreductor de imanes permanentes
Número de fases4
CosteComprobar el precio

Para más información, puede consultar la hoja de datos aquí.

Nota importante: Los fabricantes suelen especificar que los motores tienen una reducción de engranajes de 64:1. Algunos miembros de los foros de Arduino se dieron cuenta de que esto no era correcto y por eso desmontaron algunos motores para comprobar la relación de transmisión real. Determinaron que la relación de engranaje exacta es, de hecho, 63,68395:1, lo que resulta en aproximadamente 4076 pasos por revolución completa (en modo de medio paso).

No estoy seguro de que todos los fabricantes utilicen exactamente la misma caja de cambios, pero puedes simplemente ajustar los pasos por revolución en el código, para que coincida con tu modelo.

El motor paso a paso de reducción pequeña de Adafruit Industries utiliza el mismo factor de forma que el 28BYJ-48, pero tiene una relación de engranaje diferente. Tiene un conjunto de engranajes de reducción de aproximadamente 1/16, lo que resulta en 513 pasos por revolución (en modo de paso completo). Puedes descargar la hoja de datos aquí.

Para obtener más información sobre el controlador, puede consultar la hoja de datos que aparece a continuación.


Cableado - Conexión del motor paso a paso 28BYJ-48 y la placa de controladores ULN2003 a Arduino UNO

El diagrama/esquema de cableado que aparece a continuación muestra cómo conectar la placa del controlador ULN2003 al motor paso a paso 28BYJ-48 y al Arduino. Las conexiones también se dan en la tabla de abajo.

28BYJ-48-Motor de paso-ULN2003-Driagrama de cableado-Distribución esquemática
Diagrama de cableado para el controlador ULN2003 con motor paso a paso 28BYJ-48 y Arduino.

Utilicé una protoboard y algunos cables de puente para conectar la placa del controlador a una fuente de alimentación externa.

Conexiones de ULN2003 y 28BYJ-48 a Arduino

Placa de controladores ULN2003Conexión
IN1Pin 8 Arduino
IN2Pin 9 Arduino
IN3Pin 10 Arduino
IN4Pin 11 Arduino
-Lógica GND Arduino
-Fuente de alimentación GND
+Alimentación de 5 V

Nota: Es posible alimentar directamente el motor paso a paso desde la salida de 5 V del Arduino. Sin embargo, esto no se recomienda. Si el motor paso a paso consume demasiada corriente puede dañar el Arduino. También encontré que cuando se alimenta el Arduino con la energía USB solamente, obtendría un comportamiento inconsistente y un mal rendimiento del motor paso a paso.

Recomiendo alimentar la placa del driver/motor paso a paso con una fuente de alimentación externa de 5 V, como esta. Debería venir con un conector DC hembra, así que puedes conectarlo fácilmente con algunos cables (de puente). Ten en cuenta que también tienes que conectar el GND del Arduino al pin - de la placa del driver ULN2003.

Después de cargar el código también hay que alimentar el Arduino, ya sea con un cable USB tipo B o a través del conector de alimentación de 5,5 mm.

El puente situado junto a las conexiones de alimentación en la placa del controlador puede utilizarse para desconectar la alimentación del motor paso a paso.


Código básico de ejemplo de Arduino para controlar un motor paso a paso 28BYJ-48

Puedes cargar el siguiente código de ejemplo en tu Arduino utilizando el IDE de Arduino.

Este ejemplo utiliza la biblioteca Stepper.h, que debería venir preinstalada con el IDE de Arduino. Este sketch hace girar el motor paso a paso 1 revolución en una dirección, hace una pausa, y luego gira 1 revolución en la otra dirección.

/* Example sketch to control a 28BYJ-48 stepper motor with ULN2003 driver board and Arduino UNO. More info: https://www.makerguides.com */

// Include the Arduino Stepper.h library:
#include <Stepper.h>

// Define number of steps per rotation:
const int stepsPerRevolution = 2048;

// Wiring:
// Pin 8 to IN1 on the ULN2003 driver
// Pin 9 to IN2 on the ULN2003 driver
// Pin 10 to IN3 on the ULN2003 driver
// Pin 11 to IN4 on the ULN2003 driver

// Create stepper object called 'myStepper', note the pin order:
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);

void setup() {
  // Set the speed to 5 rpm:
  myStepper.setSpeed(5);
  
  // Begin Serial communication at a baud rate of 9600:
  Serial.begin(9600);
}

void loop() {
  // Step one revolution in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);
  
  // Step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Explicación del código:

El sketch comienza incluyendo la librería Arduino Stepper.h. Puedes encontrar más información sobre esta librería en la web de Arduino.

// Include the Arduino Stepper.h library:
#include <Stepper.h>

A continuación, definí cuántos pasos necesita el motor para girar 1 revolución. En este ejemplo vamos a utilizar el motor en modo de paso completo. Esto significa que tarda 2048 pasos en girar 360 grados (ver las especificaciones del motor más arriba).

// Define number of steps per rotation:
const int stepsPerRevolution = 2048;

A continuación, hay que crear una nueva instancia de la clase Stepper, que representa un determinado motor paso a paso conectado al Arduino. Para ello utilizamos la función Stepper(steps, pin1, pin2, pin3, pin4) donde pasos es el número de pasos por revolución y pin1 a pin4 son los pines a los que se conecta el motor. Para obtener la secuencia correcta de pasos, tenemos que ajustar los pines en el siguiente orden: 8, 10, 9, 11.

// Create stepper object called 'myStepper', note the pin order:
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);

En este caso he llamado al motor paso a paso 'myStepper', pero también puedes utilizar otros nombres, como 'z_motor' o 'liftmotor', etc. Stepper liftmotor = Stepper(stepsPerRevolution, 8, 10, 9, 11);. Puedes crear múltiples objetos de motor paso a paso con diferentes nombres y pines. Esto le permite controlar fácilmente 2 o más motores paso a paso al mismo tiempo.

En la configuración, se puede ajustar la velocidad en rpm con la función setSpeed(rpm). El velocidad máxima para un motor paso a paso 28byj-48 es aproximadamente 10-15 rpm a 5 V.

void setup() {
  // Set the speed to 5 rpm:
  myStepper.setSpeed(5);
  
  // Begin Serial communication at a baud rate of 9600:
  Serial.begin(9600);
}

En la sección de código del bucle, simplemente llamamos al step(steps) que hace girar el motor un número específico de pasos a una velocidad determinada por el setSpeed(rpm) función. Pasando un número negativo a esta función se invierte el sentido de giro del motor.

void loop() {
  // Step one revolution in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);
  
  // Step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Códigos de ejemplo para el motor paso a paso 28BYJ-48 con Arduino y la biblioteca AccelStepper

En los siguientes tres ejemplos te mostraré cómo puedes controlar tanto la velocidad como la dirección y el número de pasos que debe dar el motor paso a paso. En estos ejemplos utilizaré la librería AccelStepper.

La librería AccelStepper escrita por Mike McCauley es una librería impresionante para usar en tu proyecto. Una de las ventajas es que soporta la aceleración y la desaceleración, pero tiene un montón de otras funciones agradables también.

Puede descargar la última versión de esta biblioteca aquí o hacer clic en el botón de abajo.

Puedes instalar la librería yendo a Sketch > Incluir librería > Añadir librería .ZIP ... en el IDE de Arduino.

Otra opción es ir a Herramientas > Administrar Bibliotecas... o teclear Ctrl + Shift + I en Windows. El Administrador de Bibliotecas se abrirá y actualizará la lista de bibliotecas instaladas.

Instalar una librería Arduino paso 1 abrir Library Manager

Puedes buscar 'accelstepper' y buscar la biblioteca de Mike McCauley. Seleccione la última versión y luego haga clic en Instalar.

Instalación de una biblioteca Arduino paso 2 AccelStepper

1. Código de ejemplo de rotación continua

El siguiente esquema se puede utilizar para hacer funcionar uno o más motores paso a paso de forma continua a una velocidad constante. (No se utiliza ninguna aceleración o desaceleración).

Puede copiar el código haciendo clic en el botón de la esquina superior derecha del campo de código.

/* Example sketch to control a 28BYJ-48 stepper motor with ULN2003 driver board, AccelStepper and Arduino UNO: continuous rotation. More info: https://www.makerguides.com */

// Include the AccelStepper library:
#include <AccelStepper.h>

// Motor pin definitions:
#define motorPin1  8      // IN1 on the ULN2003 driver
#define motorPin2  9      // IN2 on the ULN2003 driver
#define motorPin3  10     // IN3 on the ULN2003 driver
#define motorPin4  11     // IN4 on the ULN2003 driver

// Define the AccelStepper interface type; 4 wire motor in half step mode:
#define MotorInterfaceType 8

// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper library with 28BYJ-48 stepper motor:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
  // Set the maximum steps per second:
  stepper.setMaxSpeed(1000);
}

void loop() {
  // Set the speed of the motor in steps per second:
  stepper.setSpeed(500);
  // Step the motor with constant speed as set by setSpeed():
  stepper.runSpeed();
}

Cómo funciona el código:

De nuevo, el primer paso es incluir la biblioteca con #include <AccelStepper.h>.

// Include the AccelStepper library:
#include <AccelStepper.h>

El siguiente paso es definir las conexiones del ULN2003 con el Arduino.

La declaración #define se utiliza para dar un nombre a un valor constante. El compilador sustituirá cualquier referencia a esta constante por el valor definido cuando se compile el programa. Por lo tanto, en todos los casos en los que se menciona motorPin1el compilador lo sustituirá por el valor 8 al compilar el programa.

// Motor pin definitions:
#define motorPin1  8      // IN1 on the ULN2003 driver
#define motorPin2  9      // IN2 on the ULN2003 driver
#define motorPin3  10     // IN3 on the ULN2003 driver
#define motorPin4  11     // IN4 on the ULN2003 driver

El siguiente paso es especificar el tipo de interfaz del motor para la biblioteca AccelStepper. En este caso vamos a conducir un motor paso a paso de 4 hilos en modo de medio paso, por lo que establecemos el tipo de interfaz a '8'. Puedes encontrar los otros tipos de interfaz aquí. Si quieres hacer funcionar el motor en modo de paso completo (menos pasos por revolución), simplemente cambia el 8 por el 4.

// Define the AccelStepper interface type; 4 wire motor in half step mode:
#define MotorInterfaceType 8

A continuación, es necesario crear una nueva instancia de la clase AccelStepper con el tipo de interfaz del motor y las conexiones adecuadas. Para obtener la secuencia de pasos correcta, necesitamos establecer los pines en el siguiente orden: motorPin1, motorPin3, motorPin2, motorPin4.

En este caso he llamado al motor paso a paso 'stepper', pero también puedes utilizar otros nombres, como 'z_motor' o 'liftmotor', etc. AccelStepper liftmotor = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);. Puedes crear múltiples objetos de motor paso a paso con diferentes nombres y pines. Esto le permite controlar fácilmente 2 o más motores paso a paso al mismo tiempo.

// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper library with 28BYJ-48 stepper motor:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);

En la sección de configuración del código, definimos la velocidad máxima en pasos/segundo con la función setMaxSpeed(). Las velocidades de más de 1000 pasos por segundo pueden ser poco fiables, así que establezco esto como el máximo. Tenga en cuenta que especifico el nombre del motor paso a paso ('stepper'), para el que quiero definir la velocidad máxima. Si tienes varios motores paso a paso conectados, puedes especificar una velocidad diferente para cada motor: stepper2.setMaxSpeed(500);.

void setup() {
  // Set the maximum steps per second:
  stepper.setMaxSpeed(1000);
}

En el bucle, primero establecemos la velocidad a la que queremos que funcione el motor con la función setSpeed(). (también puede colocar esto en la sección de configuración del código).

stepper.runSpeed() sondea el motor y cuando se debe dar un paso ejecuta 1 paso. Esto depende de la velocidad ajustada y del tiempo transcurrido desde el último paso. Si quieres cambiar la dirección del motor, puedes establecer una velocidad negativa: stepper.setSpeed(-400); gira el motor hacia el otro lado.

void loop() {
  // Set the speed of the motor in steps per second:
  stepper.setSpeed(500);
  // Step the motor with constant speed as set by setSpeed():
  stepper.runSpeed();
}

En el modo de medio paso, una revolución requiere 4096 pasos, por lo que 500 pasos/seg resulta en aproximadamente 7 rpm.


2. Croquis para controlar el número de pasos o revoluciones

Con el siguiente esquema puedes controlar tanto la velocidad, como la dirección y el número de pasos/revoluciones.

En este caso, el motor paso a paso gira 1 revolución en el sentido de las agujas del reloj con 500 pasos/seg, luego gira 1 revolución en sentido contrario a las agujas del reloj con 1000 pasos/seg, y por último gira 2 revoluciones en el sentido de las agujas del reloj con 1000 pasos/seg.

/* Example sketch to control a 28BYJ-48 stepper motor with ULN2003 driver board, AccelStepper and Arduino UNO: number of steps/revolutions. More info: https://www.makerguides.com */

// Include the AccelStepper library:
#include <AccelStepper.h>

// Motor pin definitions:
#define motorPin1  8      // IN1 on the ULN2003 driver
#define motorPin2  9      // IN2 on the ULN2003 driver
#define motorPin3  10     // IN3 on the ULN2003 driver
#define motorPin4  11     // IN4 on the ULN2003 driver

// Define the AccelStepper interface type; 4 wire motor in half step mode:
#define MotorInterfaceType 8

// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper library with 28BYJ-48 stepper motor:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
  // Set the maximum steps per second:
  stepper.setMaxSpeed(1000);
}

void loop() {
  // Set the current position to 0:
  stepper.setCurrentPosition(0);

  // Run the motor forward at 500 steps/second until the motor reaches 4096 steps (1 revolution):
  while (stepper.currentPosition() != 4096) {
    stepper.setSpeed(500);
    stepper.runSpeed();
  }
  delay(1000);

  // Reset the position to 0:
  stepper.setCurrentPosition(0);

  // Run the motor backwards at 1000 steps/second until the motor reaches -4096 steps (1 revolution):
  while (stepper.currentPosition() != -4096) {
    stepper.setSpeed(-1000);
    stepper.runSpeed();
  }

  delay(1000);

  // Reset the position to 0:
  stepper.setCurrentPosition(0);
  // Run the motor forward at 1000 steps/second until the motor reaches 8192 steps (2 revolutions):
  while (stepper.currentPosition() != 8192) {
    stepper.setSpeed(1000);
    stepper.runSpeed();
  }

  delay(3000);
}

Explicación del código:

La primera parte del código hasta la sección loop() es exactamente la misma que en el ejemplo anterior.

En el bucle hago uso de un bucle while en combinación con el currentPosition() función. En primer lugar, puse a cero la posición actual del motor paso a paso con stepper.setCurrentPosition(0).

  // Set the current position to 0:
  stepper.setCurrentPosition(0);

A continuación, utilizamos el bucle while. Un bucle while hará un bucle continuo, e infinito, hasta que la expresión dentro del paréntesis, () se vuelva falsa. Así que en este caso compruebo si la posición actual del motor paso a paso no es igual a 4096 pasos (!= significa: no es igual a). Mientras no sea así, hacemos funcionar el motor paso a paso a una velocidad constante, tal y como se establece en setSpeed().

  // Run the motor forward at 500 steps/second until the motor reaches 4096 steps (1 revolution):
  while (stepper.currentPosition() != 4096) {
    stepper.setSpeed(500);
    stepper.runSpeed();
  }

En el resto del bucle, hacemos exactamente lo mismo, sólo que con una velocidad y una posición de destino diferentes.


3. Código de ejemplo de aceleración y desaceleración

Con el siguiente sketch puedes añadir aceleración y desaceleración a los movimientos del motor paso a paso, sin ninguna codificación complicada. La primera sección de este sketch es la misma que en el ejemplo 1, pero la configuración y el bucle son diferentes.

El motor funcionará a dos revoluciones de ida y vuelta con una velocidad de 1000 pasos por segundo y una aceleración de 200 pasos/segundo2.

/* Example sketch to control a 28BYJ-48 stepper motor with ULN2003 driver board, AccelStepper and Arduino UNO: acceleration and deceleration. More info: https://www.makerguides.com */

// Include the AccelStepper library:
#include <AccelStepper.h>

// Motor pin definitions:
#define motorPin1  8      // IN1 on the ULN2003 driver
#define motorPin2  9      // IN2 on the ULN2003 driver
#define motorPin3  10     // IN3 on the ULN2003 driver
#define motorPin4  11     // IN4 on the ULN2003 driver

// Define the AccelStepper interface type; 4 wire motor in half step mode:
#define MotorInterfaceType 8

// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper library with 28BYJ-48 stepper motor:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
  // Set the maximum steps per second:
  stepper.setMaxSpeed(1000);
  // Set the maximum acceleration in steps per second^2:
  stepper.setAcceleration(200);
}

void loop() {
  // Set target position:
  stepper.moveTo(8192);
  // Run to position with set speed and acceleration:
  stepper.runToPosition();
  
  delay(1000);
  
  // Move back to original position:
  stepper.moveTo(0);
  // Run to position with set speed and acceleration:
  stepper.runToPosition();
  
  delay(1000);
}

Cómo funciona el código:

En la configuración, además de la velocidad máxima, también tenemos que definir la aceleración/desaceleración. Para ello, utilizamos la función setAcceleration().

void setup() {
  // Set the maximum steps per second:
  stepper.setMaxSpeed(1000);
  // Set the maximum acceleration in steps per second^2:
  stepper.setAcceleration(200);
}

En la sección de bucle del código, utilicé una forma diferente de dejar que el motor gire un número predefinido de pasos. Primero establecí la posición objetivo con la función moveTo(). A continuación, simplemente utilizamos la función runToPosition() para que el motor funcione hasta la posición objetivo con la velocidad y la aceleración establecidas. El motor se desacelerará antes de alcanzar la posición objetivo.

void loop() {
  // Set target position:
  stepper.moveTo(8192);
  // Run to position with set speed and acceleration:
  stepper.runToPosition();
  
  delay(1000);
  
  // Move back to original position:
  stepper.moveTo(0);
  // Run to position with set speed and acceleration:
  stepper.runToPosition();
  
  delay(1000);
}

Por último, volvemos a poner la nueva posición de destino en el 0, de forma que volvemos al origen.


Conclusión

En este artículo te he mostrado cómo puedes controlar un motor paso a paso 28BYJ-48 con un driver ULN2003 y Arduino. Hemos visto 4 ejemplos, utilizando las librerías Stepper y AccelStepper. Espero que lo hayas encontrado útil e informativo. Si lo has hecho, ¡compártelo con un amigo al que también le guste la electrónica!

Me encantaría saber qué proyectos planeas construir (o ya has construido) con este motor paso a paso.Si tienes alguna pregunta, sugerencia, o si crees que faltan cosas en este tutorial, por favor deja un comentario abajo.

Tenga en cuenta que los comentarios son retenidos por la moderación para evitar el spam.

Burbujas

Sábado 29 de octubre de 2022

AYUDA. Lo he intentado todo....

Estoy usando el motor y el controlador especificado aquí con un arduino nano y no puede obtener ninguna codificación para mover el motor. Las luces LED están en plena en el conductor, pero theres ningún movimiento como su ciclo a través de las fases. He intercambiado dos drivers y dos motores para asegurarme de que los componentes no están fritos. Cuando conecto el motor directamente al Nano puedo sentir que vibra como si tratara de moverse, pero es evidente que tiene poca potencia (que sé que es). Cuando lo tengo conectado de nuevo al driver lo estoy alimentando con una fuente de alimentación externa de 5V y 2,1A.

¿Qué me falta aquí? Siento que he pasado por todos los temas que tienen que ver con este motor en el sitio de la comunidad de arduino y todavía estoy tan, tan, tan atascado.

r4Y

Martes 30 de marzo de 2021

Hola, funciona un poco, pero el motor paso a paso no gira. ot vibra littlebit tho. ¿cómo puedo arreglar esto?

Travis

Viernes 6 de mayo de 2022

@r4Y, esto creo que sería debido a una posibilidad de un par de cosas. uno) podría ser la velocidad se establece demasiado alto y el par no se está produciendo, o el número de pasos definidos en el código está fuera, o incluso cuántos pasos se llaman en el bucle o lo que sea no son enteros reales después de la conversión a hex / binario por el compilador, tres) las señales que van al motor en una fase o secuencia incorrecta. si miras el modulo breakout UN2003, los LEDs de salida se ven esencialmente como un contador binario, y cuando el motor esta pisando bien sigue la secuencia de conteo binario para la que ha sido configurado. sin embargo, cuando los cables se colocan en pines mal ordenados el campo magnético no está siendo girado de una manera lógica o suave y al azar produce una fuerza de rotación aparentemente al azar, pero es sólo cualquier fase que está conectada, y los LEDs de salida muestran este patrón secuencial feo. sé que esto es tarde así que lo siento.

r4Y

Martes 30 de marzo de 2021

estoy usando arduino mega 2560 BTW

Dave Preston

Martes 17 de noviembre de 2020

Yo utilizo esta configuración con 1 driver/motor para girar mi cámara Sony en un soporte montado en un trípode. Utilizo otro controlador/motor para inclinar el soporte mediante una correa dentada y poleas. Esto reduce el par en el motor y me da un movimiento muy suave. Estos están conectados tom una placa UNO3 y escribí una aplicación de Android para controlar de forma remota a través de Bluetooth, y todo funciona bien, pero con la lente en el zoom completo el motor no es lo suficientemente potente como para inclinar el soporte hacia arriba, así que a veces tengo que alejar un poco. ¿Sería posible/aconsejable conectar otro motor al controlador que controla la inclinación? Espero que esto me dé el doble de par. Si es factible, ¿se trata simplemente de empalmar los cables o hay una forma más ordenada?

Benne de Bakker

Sábado 21 de noviembre de 2020

Hola Dave, ¡Suena como un proyecto impresionante! Yo no recomendaría la conexión de dos motores paso a paso al mismo conductor. Podrías simplemente añadir otro motor paso a paso 28BYJ-48 y un driver ULN2003 o actualizarlo a un motor paso a paso NEMA 17 con engranaje con un A4988 o DRV8825. Ten en cuenta que también puedes utilizar los pines analógicos del Arduino como salidas digitales si no tienes suficientes pines disponibles.

Benne

Max

Lunes 26 de octubre de 2020

Puedes explicar o dar alguna información de cómo configuraste la fuente de alimentación de 5V. Al final me gustaría enchufar un solo cable y alimentar tanto la placa como el motor, pero primero voy a empezar sólo con el cableado de la fuente de alimentación.

jjff

Domingo 11 de octubre de 2020

Una de las guías sobre el 28BYJ-48 que he podido leer hasta ahora. Y estoy siguiendo esto desde algunas veces. Ojalá hubiera podido empezar con esta documentación. ???? Los enlaces importantes (para consultar la información de fondo) están presentes, principalmente los temas bien descritos.

Benne de Bakker

Domingo 11 de octubre de 2020

Gracias.