Problema para manejar paso a paso

Hola, que tal. vengo a pedir socorro porque la verdad que me estoy volviendo loco.. quiero controlar un motor paso a paso de la linea automotriz, es un paso a paso bipolar de 4 cables y mi idea es controlarlo con un 16f628a y un l298. En proteus anda bien, no tengo problema, pero cuando lo paso a la realidad es como si el motor hiciera un pasito para adelante y otro para atras. Osea, queda clavado ahi haciendo tac, tac, tac, jajaja. Espero que me puedan ayudar y gracias de ante mano. Les dejo el programa y las conecciones en proteus para ver si me estoy equivocando en algo.

Código:
cmcon=7
trisb=0
portb=0
pul1 var porta.1
pul2 var porta.2

inicio:
gosub avanza
gosub reversa
portb=0
goto inicio
end

avanza:
if pul1=0 then
portb=%00011001
pause 100
portb=%00011010
pause 100 
portb=%00010110
pause 100 
portb=%00010101
pause 100
goto avanza
endif
return

reversa:
if pul2=0 then
portb=%00101010
pause 100
portb=%00101001
pause 100
portb=%00100101
pause 100
portb=%00100110
pause 100
goto reversa
endif
return
 

Adjuntos

  • paso a paso.rar
    16.5 KB · Visitas: 4
prueba este codigo:
Código:
@ DEVICE Pic16F628A,XT_Osc, WDT_Off , PWRT_Off,BOD_Off, MCLR_On, LVP_Off, CPD_Off , PROTECT_Off                
                                                                                                                
cmcon=7                                                                                                         
trisb=0                                                                                                         
portb=0                                                                                                         
pul1 var porta.1                                                                                                
pul2 var porta.2                                                                                                
                                                                                                                
inicio:                                                                                                         
if !pul1 then gosub avanza                                                                                      
if !pul2 then gosub reversa                                                                                     
if pul1 or pul2 then portb=0                                                                                    
goto inicio                                                                                                     
end                                                                                                             
                                                                                                                
avanza:                                                                                                         
 portb=%00011001                                                                                                
 pause 500                                                                                                      
 portb=%00011010                                                                                                
 pause 500                                                                                                      
 portb=%00010110                                                                                                
 pause 500                                                                                                      
 portb=%00010101                                                                                                
 pause 500                                                                                                      
return                                                                                                          
                                                                                                                
reversa:                                                                                                        
 portb=%00101010                                                                                                
 pause 500                                                                                                      
 portb=%00101001                                                                                                
 pause 500                                                                                                      
 portb=%00100101                                                                                                
 pause 500                                                                                                      
 portb=%00100110                                                                                                
 pause 500                                                                                                      
return

e intercambia bobinas.
 
Última edición:
Por fin!!! nuevamente muchas gracias.. Obviamente el error era mio. Cuando hice el diseño lo hice en base a uno que tenia en el taller que la congifuracion de bobina era A-B y C-D. Cuando ayer agarre el motorcito no me di cuenta de que era otro pero con la configuracion A-D y B-C. Me di cuenta, leyendo el tema que me dejo Fogonza y me puse con la fuente a probar si podia hacerlo funcionar " a mano ". jajaja.. Igualmente algo tengo que retocar porque para un lado va bien y para el otro parece que galopa. GRACIAS POR LA PACIENCIA!! soy muy nuevo en esto, llevo 2 meses con la programacion. Espero poder ayudar en algo, si necesitan algo aca estoy..
 
Atrás
Arriba