Tabla de contenido:
Video: Control de posición angular del motor paso a paso 28BYJ-48 con joystick analógico y Arduino: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Este es un esquema de control para el motor paso a paso 28BYJ-48 que he desarrollado para usar como parte de mi proyecto de tesis de último año. No había visto esto antes, así que pensé en subir lo que descubrí. ¡Espero que esto ayude a alguien más!
El código básicamente permite que un motor paso a paso "copie" la posición angular de un joystick analógico, es decir, si empuja el joystick hacia adelante, el motor apunta hacia el "norte". empuje el joystick hacia el oeste, el motor gira para apuntar en la misma dirección.
Para mi implementación, requiero que si se suelta el joystick, es decir, no tiene una posición angular, el motor regresa a la dirección "inicial". La dirección de inicio está orientada hacia el este, y el motor (o al menos cualquier puntero / dispositivo que haya conectado al eje de salida) también debe estar orientado en esta dirección cuando se enciende.
Suministros
Arduino Uno o similar
tablero y selección de cables de puente (macho a macho, macho a hembra)
Fuente de alimentación 5V
Módulo de joystick analógico (idealmente con una función de botón pulsador momentáneo, esto facilita el descanso de la posición "inicial"
Motor paso a paso 28BYJ-48 y controlador paso a paso ULN2003
Bolígrafo, papel y blu-tac (¡o cualquier otro dispositivo puntero para conectar al motor!)
Paso 1: Paso 1: Configuración
Conecte el motor paso a paso al controlador paso a paso y conecte los pines de la siguiente manera:
IN1 - Pin 8 de Arduino
IN2 - Pin 9 de Arduino
IN3 - Pin 10 de Arduino
IN4 - Pin 11 de Arduino
Conecte su fuente de alimentación de 5v a los rieles de suministro en su tablero y conecte las entradas ULN2003 5v a los rieles de suministro. conecte el riel de tierra al suelo en su Arduino.
para el joystick, conéctelo de la siguiente manera:
Pin de interruptor - Pin 2 de Arduino
Eje X - Arduino A0 (Analógico en 0)
Eje Y - Arduino A1
+ 5V - Salida Arduino 5V
GND - Arduino GND
Finalmente, conecte la tierra de su placa de pruebas al otro pin Arduino GND
Paso 2: Paso 2: Explicación del código
He incluido el código completo de Arduino para que lo descargues y utilices. Pero haré todo lo posible para explicar las partes pertinentes aquí.
La teoría detrás de este código es que el espacio ocupado por el joystick se divide en un gráfico, con 0, 0 en el centro. sin embargo, las entradas del joystick descansan en (aproximadamente) 512 en el centro, por lo que para superar esto, se utilizan dos funciones para "poner a cero" el valor leído en los ejes X e Y. Dependiendo de la fuente de alimentación que utilice, es posible que deba modificar los valores en las funciones ZeroX y ZeroY para que su joystick dé una lectura confiable de 0 en reposo.
Cuando se leen los valores X, Y, primero se convierten a radianes usando la función atan2 () en la biblioteca math.h. Explicar esta función está fuera del alcance de este instructivo, pero por favor, búsquelo, ¡es un truco de geometría bastante simple!
Finalmente, para hacer la vida más fácil para aquellos de nosotros que solíamos trabajar en grados en lugar de rads, el valor de rad calculado por atan2 () se convierte en grados.
En la parte superior del bucle hay un pequeño fragmento de código que le permite hacer clic en el botón momentáneo del joystick para mover la ubicación "casa". Esto fue increíblemente útil mientras probaba el código, pero lo dejé porque puedo ver cómo podría ser útil en algunos casos.
¡Ahora a la mayor parte del código! Comenzamos leyendo las coordenadas X, Y del joystick dos veces separadas por un retraso de 10 ms y luego verificamos si son iguales: descubrí que el joystick ocasionalmente emitía lecturas esporádicas, y este ligero retraso fue suficiente para detener el motor en función de estos. También es un retraso lo suficientemente corto como para que no parezca interferir con las entradas intencionales.
El resto del código se explica por sí mismo y he hecho todo lo posible por documentarlo; Una serie de declaraciones IF comparan el ángulo actual del joystick con el ángulo del motor y mueven el motor a ese ángulo. El 28BYJ-48 tiene 5.689 pasos por grado, por eso multiplicamos el movimiento requerido por este número aparentemente impar.
La única parte del código que requiere más explicación es lo que he denominado "caso envolvente". Incluso en el caso de que el joystick y el motor estuvieran en p. Ej. + 175 °, y el joystick se movió posteriormente a -175 ° (un movimiento de solo 10 ° en el joystick, desde el norte del oeste hasta el sur del oeste), el motor se movería EN LA DIRECCIÓN INCORRECTA 350 °. para dar cuenta de esto, se escribió el caso especial.
La carcasa envolvente comienza verificando que el motor y el joystick tengan signos opuestos, es decir, el motor es positivo y el joystick negativo, o viceversa. También comprueba que la suma de los valores absolutos (es decir, positivos) del joystick y el motor sea superior a 180 °.
Si ambas afirmaciones son verdaderas, la función comprueba si el motor debe moverse en el sentido de las agujas del reloj (el valor del motor es negativo) o en sentido contrario (si el valor del motor es positivo).
Los valores absolutos del ángulo del motor y el ángulo del joystick se suman y se restan de 360 ° para determinar la distancia a mover. Finalmente, el ángulo del motor (que ahora refleja el ángulo del joystick) se actualiza como tal.
Paso 3: ¡TERMINADO
Entonces, ¡todo lo que queda por hacer es cargar el código en su Arduino y ejecutarlo! Vea el video de arriba para tener una buena idea de cómo funciona el proyecto. ¡Esto sería útil para cardanes de cámara, brazos robóticos y muchas otras aplicaciones!
Si usa el código, hágamelo saber y, si ve algún lugar en el que se pueda mejorar el código, me encantaría escuchar sus comentarios.
Recomendado:
Cómo utilizar el motor paso a paso 28BYJ-48 con 3 botones: 5 pasos
Cómo utilizar el motor paso a paso 28BYJ-48 con 3 botones: ¿Quiere controlar su motor paso a paso con botones? ¿Eso puede hacer en sentido horario, antihorario y luego función de parada? ¡Entonces este video es para tí
Motor paso a paso controlado por motor paso a paso sin microcontrolador: 6 pasos
¡Motor paso a paso controlado por motor paso a paso sin microcontrolador !: En este Instructable rápido, haremos un controlador de motor paso a paso simple usando un motor paso a paso. Este proyecto no requiere circuitos complejos ni un microcontrolador. Así que sin más preámbulos, ¡comencemos
Motor paso a paso controlado por motor paso a paso sin microcontrolador (V2): 9 pasos (con imágenes)
Motor paso a paso controlado por motor paso a paso sin microcontrolador (V2): En uno de mis Instructables anteriores, le mostré cómo controlar un motor paso a paso usando un motor paso a paso sin un microcontrolador. Fue un proyecto rápido y divertido, pero vino con dos problemas que se resolverán en este Instructable. Entonces, ingenio
Modelo de locomotora controlada por motor paso a paso - Motor paso a paso como codificador rotatorio: 11 pasos (con imágenes)
Locomotora modelo controlada por motor paso a paso | Motor paso a paso como codificador rotatorio: en uno de los Instructables anteriores, aprendimos cómo usar un motor paso a paso como codificador rotatorio. En este proyecto, ahora usaremos ese motor paso a paso convertido en codificador rotatorio para controlar un modelo de locomotora usando un microcontrolador Arduino. Entonces, sin fu
Motor paso a paso controlado por motor - Motor paso a paso como codificador rotatorio: 11 pasos (con imágenes)
Motor paso a paso controlado por motor paso a paso | Motor paso a paso como codificador rotatorio: ¿Tiene un par de motores paso a paso por ahí y quiere hacer algo? En este Instructable, usemos un motor paso a paso como codificador rotatorio para controlar la posición de otro motor paso a paso usando un microcontrolador Arduino. Así que sin más preámbulos, vamos a