Hola gente de este foro, espero y todo esten bien, bueno es hora de hacer otra entrada a este foro, en esta ocasión les traigo un "sistema" de control para el motor a pasos bipolar (dos bobinas sin un comun), busque en la red muchos ejemplos pero ninguno me decia de manera explicita la secuencia qeu se tenia que tener estos motores, unos decian que polarizar los dos devanados(bobinas,solenoides) al mismo tiempo pero eso no funciona, bueno esa fue la odisea en encontrar como funcionaban pero gracias a un miembro de esta foro,llamado Marcelo, pude dar con ella, pueden checar la teoria detras de esto en:
https://www.forosdeelectronica.com/f19/introduccion-motores-paso-paso-289/
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 AVR
bueno espero que les haya sido de ayuda cualquier cosa me lo hacen saber y gracias por todo. este es mi correo por si la dudas: g_mirandac@hotmail.com
https://www.forosdeelectronica.com/f19/introduccion-motores-paso-paso-289/
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 AVR
Có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
Adjuntos
Última edición: