Tabla de contenido:
- Paso 1: Conozca los Steppers
- Paso 2: Encuentra puntos en común
- Paso 3: Determine el orden de paso
- Paso 4: Prueba de conducción del motor
- Paso 5: balancea hacia adelante y hacia atrás
- Paso 6: Nunca doy medio paso, porque no soy medio paso a paso …
- Paso 7: agregue un controlador de motor
- Paso 8: el final
Video: Conducir un motor paso a paso con un microprocesador AVR: 8 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
¿Tiene algunos motores paso a paso recuperados de impresoras / unidades de disco / etc.por ahí?
Un poco de sondeo con un ohmetro, seguido de un código de controlador simple en su microprocesador y estará avanzando con estilo.
Paso 1: Conozca los Steppers
Básicamente, tendrá que averiguar dónde van todos los pequeños cables.
El primer paso es averiguar si es un motor unipolar o bipolar. Eche un vistazo a Jones on Steppers para obtener más información, luego al sitio de Ian Harries para obtener un método simple para descubrir un motor desconocido. Lea un poco, luego únase a mí en un tutorial de este motor que obtuve por poco dinero. (Están a la venta por $ 0,99 en este momento. Son pequeños, relativamente livianos, pero no tienen mucho torque. Aún no sé para qué servirá).
Paso 2: Encuentra puntos en común
Entonces tienes cinco (o cuatro, o seis) cables. Su motor tendrá dos mitades, y probablemente incluso pueda saber con solo mirar a qué lado pertenece cada cable.
Si solo está mirando cuatro cables, está de suerte: es un motor bipolar. Todo lo que tienes que hacer es averiguar qué dos pares de cables van juntos. Si tienes un motor unipolar, o más de 4 cables, tendrás que romper tu óhmetro. Lo que está buscando es el cable común (tierra) para cada mitad. Puede saber cuál está conectado a tierra en un motor bipolar porque tiene la mitad de la resistencia a cualquiera de los polos que los polos a través de sí mismos. En la foto están mis notas de conectar cables a cables y notar la resistencia (o si están conectados). Puede ver que el blanco es el suelo para el trío inferior porque tiene la mitad de la resistencia al rojo o al azul que tienen entre sí. (Este motor es extraño y no tiene una toma central en la bobina del imán superior. Es como si fuera mitad bipolar, mitad unipolar. Tal vez puedas usar esto para detectar la rotación en la bobina Rojo-Blanco-Azul cuando el Negro-Amarillo la bobina está siendo impulsada.)
Paso 3: Determine el orden de paso
Iba a conducir este motor como bipolar, así que estoy ignorando el cable de tierra blanco. Solo tengo cuatro cables de los que preocuparme.
Es posible que desee hacer funcionar su motor unipolar como bipolar de todos modos, porque usa toda la bobina en ambas fases en lugar de alternar entre las dos mitades de cada bobina. Más bobina = más torque. Ejecute la corriente a través de un par (teniendo en cuenta la polaridad que eligió) y luego ejecute la corriente a través del otro par al mismo tiempo. Cuando conecte el segundo par, observe en qué dirección gira el motor. Escribe esto. Ahora invierta la polaridad en el primer par que eligió. Luego, vuelva a conectar el segundo par con su polaridad también invertida. Tenga en cuenta la dirección. A partir de esto, debería poder averiguar la secuencia para girar el motor en cualquier dirección. En mi ejemplo, ambos terminaron girando en sentido contrario a las agujas del reloj, por lo que al avanzar por la secuencia de la misma manera que elegí, el motor se moverá en sentido antihorario.
Paso 4: Prueba de conducción del motor
Si aún no está preparado para la programación de microprocesadores, podría hacerlo peor que el Ghetto Development Kit o cualquiera de los diversos programadores PIC. Conecte los cables directamente a su microproc y quémelo con el siguiente código:
/ * Jugando con los pequeños motores paso a paso. * /
/ * Incluye función de retardo * / #define F_CPU 1000000UL #include / * Pin defs para ATTiny2313 * / / * Orden en sentido horario * / #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define AMARILLO _BV (PB3) #define DELAY 200 / * milisegundos entre pasos * / int main (void) {DDRB = 0xff; / * Habilita la salida en todos los pines B * / PORTB = 0x00; / * Establecerlos todos en 0v * / while (1) {/ * bucle principal aquí * / PORTB = BLUE; _delay_ms (DELAY); PORTB = NEGRO; _delay_ms (DELAY); PORTB = ROJO; _delay_ms (DELAY); PORTB = AMARILLO; _delay_ms (DELAY); }} ¿Qué tan simple es ese código? Realmente simple. Todo lo que hace es hacer algunas definiciones agradables para que pueda referirme a los cables por color en lugar de sus nombres de pines, y luego los activa en secuencia con un retraso ajustable en el medio. Para empezar, seleccioné un retraso de medio segundo entre los pasos. Vea el video corto para ver los resultados. Si realmente está en su juego, cuente la cantidad de pasos por ciclo para averiguar la resolución angular de un solo paso del motor. (Oh, sí. PD. Se conduce sin carga a 3.6v fácilmente. Vea la batería en el video).
Paso 5: balancea hacia adelante y hacia atrás
Entonces lo tienes funcionando en el sentido de las agujas del reloj. ¿Algo más interesante? Una pequeña limpieza de código y podemos ejecutarlo de un lado a otro. Puse la secuencia en el sentido de las agujas del reloj en una matriz para que pueda pasar por las fases con un bucle for simple. Ahora puede ejecutar el bucle hacia arriba o hacia abajo para ir en sentido horario o antihorario.
int main (void) {const uint8_t delay = 50; const uint8_t en el sentido de las agujas del reloj = {AZUL, NEGRO, ROJO, AMARILLO}; uint8_t i; DDRB = 0xff; / * Habilita la salida en todos los pines B * / PORTB = 0x00; / * Establecerlos todos en 0v * / while (1) {/ * bucle principal aquí * / para (i = 0; i <= 3; i ++) {/ * paso a través de los colores en el sentido de las agujas del reloj * / PORTB = en el sentido de las agujas del reloj ; _delay_ms (retraso); } for (i = 3; i> = 0; i -) {/ * paso a través de los colores ccw * / PORTB = sentido horario ; _delay_ms (retraso); }}} Vea el video picante para el intercambio.
Paso 6: Nunca doy medio paso, porque no soy medio paso a paso …
Dejando a un lado la letra de la misión, medio paso a paso es donde está. Obtiene más corriente pico, más torque instantáneo y el doble de resolución angular. Medio paso en pocas palabras: en lugar de azul, negro, rojo, amarillo, maneja el motor con azul, azul + negro, negro, negro + rojo, rojo, rojo + amarillo, amarillo, amarillo + azul. El resultado es que durante la mitad del tiempo estás activando ambos imanes a la vez. Y durante los tiempos en que ambos conjuntos están acoplados, el motor apunta a la mitad entre los dos, reduciendo el ángulo entre los "pasos" y haciendo que el motor gire más suavemente. ¿Puedes decirlo por el video? No estoy seguro … Ahora, la parte del código que hace el medio paso se ve así:
void halfStepping (uint16_t retraso, uint8_t dirección ) {uint8_t i; para (i = 0; i <= 3; i ++) {PORTB = dirección ; / * parte de bobina simple * / _delay_ms (retardo); PORTB | = dirección [i + 1]; / * agregar en medio paso * / _delay_ms (delay); }} El primer comando PORTB establece un polo único en positivo y el resto en negativo. Entonces espera. Luego, el segundo comando PORTB establece un segundo polo (en el otro devanado) en positivo, conectando ambos devanados para 1.4 veces el par (y 2x la corriente). A continuación se adjunta una lista completa del programa. Ahora se definen dos matrices (en sentido horario, antihorario) y ambos tienen 5 elementos cada uno para permitir la entrada i + 1 en la función halfStepping.
Paso 7: agregue un controlador de motor
Hasta aquí todo bien.
El único problema es que el motor no parece tener tanto torque, lo que podría deberse al hecho de que el microprocesador solo emitirá ~ 50 mA por pin. El siguiente paso obvio sería conectarlo a un controlador de motor para suministrarle más energía. Pero luego pienso un poco: solo lo estoy conduciendo con 5v, y la resistencia del devanado de la bobina es de ~ 125 ohmios. Lo que significa que el motor solo consume 40 mA por pin, y debería ser impulsado bien por el chip AVR (¡robusto!). Entonces, para obtener más voltaje en el motor, lo conecté a un chip de puente H SN754410. El circuito es bastante simple. Cada pin del AVR va a una entrada y los pines de salida correspondientes van al motor. El chip necesita 5v para la sección lógica y puede tomar mucho más voltaje en la sección del motor. Ejecutarlo con 11.25v (tres baterías de 3.6v) ayudó un poco. Notablemente más torsión en mi dedo, pero todavía no es una central eléctrica. Sin embargo, no está mal para un motor que es más pequeño que una moneda de cinco centavos. Y ahora el circuito se ha convertido en un controlador de motor paso a paso bipolar de propósito general. Agregado el 29 de noviembre: Anoche funcionó el motor a 12v por un tiempo y comenzó a calentarse. No estoy seguro si fue un problema de frecuencia resonante o si fue simplemente demasiada corriente para los devanados. De cualquier manera, tenga un poco de cuidado si está conduciendo este pequeño motor con voltajes mayores.
Paso 8: el final
Entonces, ¿qué aprendí? Conducir un motor paso a paso con un AVR (y un chip de puente H) es bastante fácil, incluso en el modo "elegante" de medio paso.
Sin embargo, todavía no estoy seguro de qué haré con los pequeños motores paso a paso. ¿Alguna sugerencia?
Recomendado:
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
Dispositivo antirrobo 'Solo en casa' / Utilice Attiny13 para conducir un motor paso a paso y un servo: 5 pasos
Disuasión de ladrones 'Solo en casa' / Use Attiny13 para conducir un motor paso a paso y un servo: este podría ser uno de mis proyectos más extraños hasta ahora :-) Pero incluso si no está interesado en mantener alejados a los ladrones, este proyecto puede usarse para cualquier cosa en la que necesita conducir un motor paso a paso o servomotor, o incluso varios motores de CC con un Attiny13.Mo