Ir al contenido

Tutorial — Práctica 6: Motor paso a paso

Aprende programando: sigue cada paso, escribe tu propio codigo y valida con las preguntas y el examen del laboratorio. Adapta pines y rutinas a tu placa cuando haga falta.

Lo que vas a construir

Girar un motor paso a paso con secuencia full-step, driver ULN2003 y control de direccion.

  1. 1

    Salidas RC0–RC3 al ULN2003

    Configura PORTC bits 0–3 como salidas. Cada línea va a una bobina del motor paso a paso vía ULN2003 (corriente mayor que el PIC). RA0 como entrada para invertir sentido.
    
    								        CLRF    TRISC
            BSF     TRISA, 0
            CLRF    LATC
    							
  2. 2

    Tabla de secuencia full-step

    Secuencia unipolar típica: `0x01, 0x02, 0x04, 0x08` (una bobina a la vez). Guarda la tabla en flash con `DB` y léela con TBLRD* o indexa en RAM. Aplica el patrón a LATC.
    
    								secuencia:
            DB      0x01, 0x02, 0x04, 0x08
    
    aplicar_fase:
            ; fase = 0..3 -> LATC = secuencia[fase]
            RETURN
    							
  3. 3

    Avanza fase y controla sentido

    Variable `fase` (0–3). Cada paso: incrementa o decrementa según `sentido` (toggle con RA0). Enlaza con `aplicar_fase` y un retardo entre pasos — ese retardo define RPM.
  4. 4

    Retardo entre pasos con Timer

    Evita retardo busy-wait largo si también usas interrupciones. Opción simple: bucle `retardo_paso` calibrado; opción mejor: Timer0 overflow cada N ms. Ajusta velocidad hasta giro continuo sin vibración excesiva.
  5. 5

    Prueba giro CW/CCW en Proteus

    Verifica secuencia en LEDs o motor virtual. Pulsa RA0: debe invertir sentido sin perder pasos. Documenta diagrama y tabla de fases en el informe.

Antes de programar — pre-laboratorio

Pre-laboratorio — investigación de referencia

Investigación previa para la Práctica 6 (Motor paso a paso, UNEXPO).

P 1 ¿Qué es un motor paso a paso y cómo gira?

Un motor paso a paso convierte pulsos eléctricos en rotación angular discreta (pasos). Cada paso gira el eje un ángulo fijo (p. ej. 5.625°/paso en motores pequeños con reductora).

Se energizan las bobinas en secuencia (full step o half step). El PIC no entrega suficiente corriente: se usa un driver (ULN2003) entre el PIC y las bobinas.

P 2 Secuencias full step y half step

Full step (4 fases): una bobina activa a la vez — 4 estados por ciclo eléctrico, más torque, menos resolución.

Half step: combina dos bobinas intermedias — el doble de pasos por revolución, movimiento más suave.

Ejemplo secuencia unipolar (4 bobinas A–D):
`1000 → 0100 → 0010 → 0001 → 1000`

En el programa guardas la secuencia en una tabla y avanzas un índice con cada paso.

P 3 Función del ULN2003

El ULN2003 es un arreglo de darlington con diodos de protección. Amplifica la corriente de las salidas del PIC (~20 mA) hasta la corriente de bobina del motor (~hundreds of mA). Las entradas del ULN2003 vienen del PIC; las salidas van a los comunes de las bobinas del motor paso a paso unipolar.

Revisa el datasheet del motor y del driver ULN2003 del montaje.

Disena tu solucion

Diseño antes del código

La guía oficial pide pseudocódigo y diagrama de flujo antes del .ASM. Escribe los tuyos primero; después desbloqueas la guía de referencia.

  1. 1. Pseudocódigo
  2. 2. Diagrama de flujo
  3. 3. Guía de referencia

Escribe tu pseudocódigo

Incluye: tabla de secuencia, índice de fase, retardo con timer, botones de dirección/velocidad y driver ULN2003.

0 caracteres (mínimo 80)

Construye y adapta el codigo

Practica · UNEXPO

Práctica 6 de Laboratorio

Controlar un motor paso a paso mediante secuencia de energización de bobinas. Puede combinarse con PWM o salidas digitales temporizadas.

  • Driver (ULN2003 o similar)
  • 4 salidas del PIC a las bobinas
  • Botones para dirección y velocidad
  • Timer para retardo entre pasos

Despues de programar — post-laboratorio

Post-laboratorio — investigación de referencia

Análisis posterior a controlar el motor en simulación o hardware.

P 1 ¿Cómo controlas la velocidad del motor paso a paso?

La velocidad depende del tiempo entre pasos (periodo). Usa un Timer o retardo por software entre cada cambio de secuencia. Menor retardo → más pasos por segundo → mayor velocidad angular. Cuidado: si el retardo es muy corto el motor pierde pasos (no sigue el campo magnético).

P 2 ¿Cómo inviertes el sentido de giro?

Invierte el orden de la secuencia de energización: en lugar de avanzar el índice (`incf`), retrocede (`decf`) o recorre la tabla en sentido contrario. Un pulsador puede alternar la variable `sentido` y elegir incremento o decremento del índice de fase.

Documenta la secuencia exacta de bits que enviaste a cada bobina.

Comprueba lo aprendido

Exámenes por nivel de dificultad

Abre cada nivel cuando estés listo. El básico es público; intermedio y UNEXPO requieren cuenta CALETAS para calificar respuestas.

Básico Nivel básico — Motor y driver 3 preguntas

Conceptos del motor paso a paso y ULN2003.

0 de 0 respondidas

Un motor paso a paso gira en incrementos…
El driver ULN2003 se usa para…
Full step energiza típicamente…
Intermedio Nivel intermedio — Secuencia y velocidad 3 preguntas

Tabla de fases, timer y dirección.

0 de 0 respondidas

La velocidad del motor paso a paso depende del…
Para invertir el sentido de giro se…
Si el retardo entre pasos es demasiado corto…
UNEXPO Nivel UNEXPO — Oral laboratorio 2 preguntas

Secuencias, driver y control con botones.

0 de 0 respondidas

En oral: ¿por qué el PIC no conecta las bobinas directamente?
Half step frente a full step ofrece…

Panel de tutoriales · Ejercicios