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 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 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 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 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 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. Pseudocódigo
- 2. Diagrama de flujo
- 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)
Describe tu diagrama de flujo
En papel o aquí: lista cada símbolo en orden. Tu informe necesita óvalos, rectángulos, rombos y el bucle principal.
0 caracteres (mínimo 60)
Mi borrador de pseudocódigo
Mi borrador de diagrama de flujo
Pseudocódigo de referencia
INICIO
Configurar 4 salidas → ULN2003
Configurar Timer0 para retardo entre pasos
fase ← 0, sentido ← horario
tabla ← {1000, 0100, 0010, 0001}
REPITIR SIEMPRE
SI boton_paso ENTONCES avanzar_fase()
SI boton_dir ENTONCES sentido ← invertir
escribir tabla[fase] en puerto motor
esperar retardo_timer
FIN REPITIR Diagrama de flujo de referencia
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.
Elementos típicos
Sección titulada «Elementos típicos»- Driver (ULN2003 o similar)
- 4 salidas del PIC a las bobinas
- Botones para dirección y velocidad
- Timer para retardo entre pasos
Código fuente de referencia
Sección titulada «Código fuente de referencia»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
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASIntermedio Nivel intermedio — Secuencia y velocidad 3 preguntas
Tabla de fases, timer y dirección.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASUNEXPO Nivel UNEXPO — Oral laboratorio 2 preguntas
Secuencias, driver y control con botones.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS