Introducción a los motores Paso a Paso
Bueno manos a la obra, para entender un motor a pasos bipolar hay que olvidarnos que se
polarizan asi:

Eso no funciona por mas que lo intenten, solo haran que el motor tambale y no avance
la secuencia correcta es:
+------+---+-+---+---+
|paso | A | B | C | D |
+------+--+---+---+--+
| 1 |v+ | v- | v-| v-
| 2 | v-| v- | v+ | v-
| 3 |v- | v+ | v-| v-
| 4 |v- | v- | v- | v+
+------+---+---+----+--+
(disculpa la tabla)
Esa secuencia si enciende al motor con la direccion hacia la izquierda, para la derecha basta con invertir la secuencia y listo , para lo medios pasos hay que colocar una secuencia intermediaentre paso y paso como se muestra en la imagen primera y ready.
Bueno para ya no hacercelas tan larga les dejo un esquematico hecho en proteus para que lo simulen y si estan apurados les dejo la simulacion, el circuito no porque tendrian que venir a mi casa
. El codigo recuerden que es para los avr( es un plus++) por que casi todo estan para pic's, que es casi lo mismo pero hay quienes quieren aprender a usar la familia de AVRCódigo:
.INCLUDE"M8535DEF.INC"
.CSEG
.ORG $000
RJMP INICIO
.ORG $015
INICIO:
LDI R16,LOW(RAMEND)
OUT SPL,R16
LDI R16,HIGH(RAMEND)
OUT SPH,R16
SER R16
;****************
;configuracion de puertos
;********************
OUT DDRC, R16
OUT PORTA, R16 //CONFIGURA ENTRADA EN PULL-UP Y 0'S EN DDR
OUT DDRB,R16 //CONFIGURA SALIDA CON 1'S EN DDR'S
OUT PORTD,R16
PREDETERMINADO: ;rutina que hace por default
LDI R16,$00
OUT PORTC,R16
LDI R17,$80
IN R23,PIND
SBRS R23,0
RJMP PREDETERMINADO
;************************************
; esta encendido el motor a paso pero espera una secuencia de bits
;************************************
HABILITADO:
IN R24,PIND
SBRC R24,1
RCALL GIRO_IZQ
IN R25,PIND
SBRC R25,2
RCALL GIRO_DER
SBRS R25,0
RJMP PREDETERMINADO
RJMP HABILITADO
;***************************************
;rutina para hacerlo girar hacia la izquierda si quieren hacerlo girar
;con medio pasos solo descomenten las lineas
;************************************++
GIRO_IZQ:
LDI R16,0B10000000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B10100000
; RCALL SALIDA
; RCALL TIEMPO
LDI R16,0B00100000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B01100000
; RCALL SALIDA
; RCALL TIEMPO
LDI R16,0B01000000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B01010000
; RCALL SALIDA
; RCALL TIEMPO
LDI R16,0B00010000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B10010000
; RCALL SALIDA
; RCALL TIEMPO
RCALL CHECA_ST
;***************************************
;rutina para hacerlo girar hacia la derecha si quieren hacerlo girar
;con medio pasos solo descomenten las lineas
;************************************++
RJMP GIRO_IZQ
GIRO_DER:
LDI R16,0B00010000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B01010000
; RCALL SALIDA
; RCALL TIEMPO
LDI R16,0B01000000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B01100000
; RCALL SALIDA
; RCALL TIEMPO
LDI R16,0B00100000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B10100000
; RCALL SALIDA
; RCALL TIEMPO
LDI R16,0B10000000
RCALL SALIDA
RCALL TIEMPO
; LDI R16,0B10010000
; RCALL SALIDA
; RCALL TIEMPO
RCALL CHECA_ST
RJMP GIRO_DER
;************************
;rutina que checa el estado de los switch de control
;(ref. el circuito en proteus)
;**************************
CHECA_ST:
SBIS PIND,0
RJMP PREDETERMINADO
SBIS PIND,3
RCALL VEL
SBIC PIND,1
RJMP GIRO_IZQ
SBIC PIND,2
RJMP GIRO_DER
RET
;**********
;Control de velocidad, se restan 128 a todo el numero ingresado
;en el puerto A para reducir el tiempo entre paso y paso
;*********************************
VEL: IN R17,PINA
SUBI R17,$80
RET
;*******
;salida por el puerto C
;************************
SALIDA:
OUT PORTB,R16
OUT PORTC,R16
RET
;*******************
;tiempo entre paso y paso
;********************
TIEMPO:
DEC R18
BRNE TIEMPO
DEC R17
BRNE TIEMPO
RCALL VEL
RET
este es mi correo por si la dudas: g_mirandac@hotmail.com 