Programa asm o c para pic16f84a para control motor pap

no te preocupes. si no es prisa. es que me habéis acostumbrado a responder enseguida, a las tantas de la mañana y demás y claro. de repente parecía que te habías ido. jaja.
que yo conteste a las 4 de la mañana era asta normal. prueba de que estaba estudiando. mi mujer y yo estudiamos lo mismo y nos turnamos. yo trasnocho y ella madruga.
bueno, gracias de nuevo. hare una prueba rara con el texto, a ver que sale de ello. piensa que no requiere precision cuando va rapido. solo no pasarse de velocidad no sea que pierda pasos a esa frecuencia. con 20 o 40 rpm hacemos.
el motor es un minebea creo que de 2v y de 7,5º. creo que pone 2,5 ohmn por fase. se recuperaron hace mucho no recuerdo de que.
una pregunta, el montaje de diodos que tiene uno de los circuitos porque yo lo implemente es necesario en estas bajas corrientes? es decir, el zener en la alimentacion y los diodos protectores en los motores. lo saque de la web de esteca55 que es de cnc. pero en este driver se usan motores de asta 4A.
 
Hola de nuevo.
He estado estudiando los pulsos de cuando va rapido, adelante y atras, y veo que los pulsos tienen la secuencia bien ordenada, pero tienen un instante de 0000 en cada cambio de paso. es decir, pasa de 1010 a 0000 y luego a 1001. el tiempo total de paso, creo que esta bien, pero se interrumpe y se queda todo a 0 en medio. sera suficiente motivo para que vaya mal?
 
bueno, he estado haciendo pruebas y me empieza a salir compilar archivos. pero ahora me abordan dudas. yo como hice un cursillo de C, pues ahora lo exprapolo con el y pienso que el .INC, es la libreria que controla las instrucciones del pic en cuestion. pero si esto es asi, porque no estan ya en un direcciorio comun junto a toda la familia pic. que se pueden mudificar los .INC?, no son estandares fijos?
otra duda revisando el codigo. los pulsos veo que tienen 8 digitos, no recuerdo si son 8 bits. pero los primeros 4 son ceros. seran estos los ceros de los pulsos malos de la secuencia de cuando va rapido y hace el caballito?
 
Pues ya los he encontrado. he estado mirando el linc y era demasiado logico como para que se me ocurriera a mi antes que a ellos. jiji.
el tema es que al no conocer el mplab seguro que nolo tengo bien configurado.
 
bueno. yo lo habia visto antes, pero pense que se controlaria todo directamente con el cristal externo y no hera necesario indicar cual se usaria.
por otro lado, estaria bien que el 16f88 no necesitara cuarzo externo. en fin. todo se andara.
 

Adjuntos

  • planos.rar
    312.9 KB · Visitas: 31
  • maderografo tipo 3.jpg
    maderografo tipo 3.jpg
    74 KB · Visitas: 5
Los archivos .INC tienen parte de un codigo que se puede utilizar dependiendo de lo que quieres hacer
Son modificables a tu gusto y necesidades, pero si los modificas son mas bien personales, con lo que tendras que ofreceselo a otra persona para que pueda trabajar con tu programa
Yo ofreci el 16f84A.INC pues esta personalizado ya que me gusta mas el manejo del castellano que los anglicismos (ESTADO=STATUS)
Tambien te encontraras con mas archivos .INC como LCD16x1.INC, LCD16X2.INC LCD4bits.INC, TECLADO.INC
Los puedes modificar a las necesidades que tengas ya que tendran una parte del codigo que programes

Puedes modificar el motor PaP para que solo tenga cuatro pasos por revolucion y asi saber poque hace el caballito
yo no tengo simulador

Un saludo

El codigo fuente que pides Meta
;********************************************************
;
; Movimiento de un motor de pasos,
; MOTOR DE 48 PASOS POR VUELTA
; 1 PASO CADA 1.25SEG A 32768KHz
;
; RB3 RB2 RB1 RB0
;
; 1 0 1 0
; 1 0 0 1 AVANCE, LOS 1 SON ON
; 0 1 0 1 SE SUPONE A TRAVÉS DE ULN2003
; 0 1 1 0
;
;*******************************************************
LIST P=16F84A

INCLUDE "16F84A.INC" ;Archivo donde se les da el valor a los registros de caracter ;especifico de cada PIC. Para el 16f88 es el mismo tipo de archivo pero con valores diferentes

;*******************************
; DEFINICIÓN DE REGISTROS
;********************************
POS EQU 0X0C ;Aquí va el número de paso de 1 a 4
CUENTA EQU 0X0D ;Cuenta cada interrupción de 0.25 segundos, a las 5 dá un paso
RETARDO EQU 0X0E



ORG 0X0000
GOTO SETEOS ;


ORG 0X0004
GOTO INTERR


ORG 0X0008


SETEOS BSF ESTADO, RP0 ;TRABAJO BANCO 1
MOVLW B'11110000' ;BITS BAJOS = SALIDA
MOVWF TRISB
MOVLW B'11111111'
MOVWF TRISA
movlw b'00000010'
movwf OPTIO ;Temporizador TMR0 a 1/8 preescala
BCF ESTADO,RP0 ;Banco 0
movlw b'00100000'
movwf INTCON ;Interrupcion por TMR0
MOVLW .1
MOVWF POS
CLRF CUENTA

;**************************************ESPERA 1 BOTÓN************************
ESPERA BTFSS PUERTAA,RA0
call ADEL
BTFSS PUERTAA,RA1
call ATRAS
BTFSS PUERTAA,RA2
call AVANCE
CLRF PUERTAB ;APAGA TODO PUES ESTÁ EN REPOSO
GOTO ESPERA

;****************************************ADELANTE****************************
; MUEVE UN PASO Y VUELVE
;****************************************************************************
ADEL CALL TIEMPO ;Tiempo para el antirrebote
BTFSC PUERTAA,RA0
return ;RUIDO
INCF POS,F
MOVLW .5
SUBWF POS,W
BTFSS ESTADO, Z
GOTO NA
MOVLW .1
MOVWF POS
NA CALL PULSOS
CALL TIEMPO ;Tiempo para escitar las bobinas del motor
CALL TIEMPO ;ESPERA ESTABILIZARSE
return
;****************************************ATRAS****************************
; MUEVE UN PASO Y VUELVE
;****************************************************************************
ATRAS CALL TIEMPO ;Tiempo para el antirrebote
BTFSC PUERTAA,RA1
return ;RUIDO
DECF POS,F
movlw .0
subwf POS,W
BTFSS ESTADO, Z ;controlo no baje de 1, si es 0 va a 4
GOTO NT
MOVLW .4
MOVWF POS
NT CALL PULSOS
CALL TIEMPO ;ESPERA ESTABILIZARSE
CALL TIEMPO ;Tiempo para escitar las bobinas del motor
return
;****************************************AVANCE********************************
; SOLO SE SALE CON STOP
;******************************************************************************
AVANCE CLRF TMR0
NOP
NOP
BCF INTCON, TOIF ;Bandera TMR0
BSF INTCON, GIE ;Interrupcion general
BSF INTCON, TOIE ;Interrupcion por TMR0
QUEDA BTFSS PUERTAA,RA3
GOTO PARA
GOTO QUEDA

;****************************************PARA**********************************
PARA CALL TIEMPO ;Tiempo para el antirrebote
BTFSC PUERTAA,RA3
GOTO QUEDA ;SI FUE UN RUIDO VUELVO
CLRF PUERTAB
BCF INTCON, GIE
BCF INTCON, TOIF
return

;**************************************TIEMPO RETARDO REBOTES*****************************
TIEMPO MOVLW .50 ;Aumentar el tiempo pues no escita las ;bobinas
MOVWF RETARDO
TI DECFSZ RETARDO,F ;RETARDO PARA REBOTES
GOTO TI

RETURN

;***************************************PULSOS*************************************

PULSOS MOVLW .1
SUBWF POS, 0
BTFSS ESTADO, Z
GOTO SEG
MOVLW B'00001010' ;1 CODIGO
MOVWF PUERTAB
RETURN

SEG MOVLW .2
SUBWF POS, 0
BTFSS ESTADO, Z
GOTO TER
MOVLW B'00001001' ;2 CODIGO
MOVWF PUERTAB
RETURN

TER MOVLW .3
SUBWF POS, 0
BTFSS ESTADO, Z
GOTO CUAT
MOVLW B'00000101' ;3 CODIGO
MOVWF PUERTAB
return

CUAT MOVLW .4
SUBWF POS, 0
BTFSS ESTADO, Z
return
MOVLW B'00000110' ;4 CODIGO
MOVWF PUERTAB

FINAL RETURN

;************************************INTERR***********************************
; CADA .25 DE SEGUNDO VIENE AQUÍ
;*****************************************************************************
INTERR INCF CUENTA,F
MOVLW .5
SUBWF CUENTA,W
BTFSS ESTADO, Z
GOTO VOLVER ; SI NO LLEGÓ A 5
CLRF CUENTA ; SI LLEGÓ A 5/4 AVANZO
INCF POS,F
MOVLW .5
SUBWF POS,W
BTFSS ESTADO, Z
GOTO NIN
MOVLW .1
MOVWF POS
NIN CALL PULSOS
CALL TIEMPO
VOLVER BCF INTCON, TOIF ;BOORO BANDERA
RETFIE


END
 
Última edición:
Hola:

Se puede configurar el 16F88 con el cristal interno a 32768 Hz si quieres. Esa velocidad parece muy lento.

Pues pon el código fuente aquí del 16F84A.

Saludo.
 
espera Meta, que el codigo tal como estaba ayer todavia tiene la gripe y a velocidad de avance rapido y retroceso tose. he estado adelantando el mequinado y montage del instrumento. esta casi terminado mecanicamente.

juan. como puedo transmitirte la prueba, si tienes iphone, podemos hacer videoconferencia y te lo muestro, o te grabo un video. o lo hago funcionar paso a paso y hago capturas de pantalla con numero de orden y rar y te lo mando. tu mandas ideas y medios no me faltan.
 
Todavia navego con un 600, no tengo mercedes
Descarga un video
En el simulador el motor bipolar configuralo que en cuatro pasos da una revolucion para ver si en algun paso va al reves

Meta te puse el codigo (no difiere en nada del original madero )
Un saludo
 
Hola:

Me llevé su tiempo adap`tarlo porque estaba al español y otros registros que son diferentes del 16F84A al 16F88 aunque en el fondo haga lo mismo.

Código:
;********************************************************
;
;    Movimiento de un motor de pasos, 
;    MOTOR DE 48 PASOS POR VUELTA
;    1 PASO CADA 1.25SEG  A 32768KHz
;
;        RB3    RB2    RB1    RB0
;        
;        1    0    1    0
;        1    0    0    1    AVANCE, LOS 1 SON ON        
;        0    1    0    1    SE SUPONE A TRAVÉS DE ULN2003
;        0    1    1    0
;
;*******************************************************

;ZONA DE DATOS *****************************************

    LIST     P=16F88
    INCLUDE    <P16F88.INC>
    __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
    __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

;   Oscilador cristal externo 4 MHz, con dos condensadores de 22 pF.

; _CP_OFF: Protección de código DESACTIVADO.
; _DEBUG_OFF: Debug en circuito DESACTIVADO.
; _WRT_PROTECT_OFF: Protección a escritura en memoria de programa DESACTIVADO.
; _CPD_OFF: Protección de código de datos DESACTIVADO.
; _LVP_OFF: Programación en baja tensión DESACTIVADO.
; _BODEN_OFF: Reset por Brown-out DESACTIVADO.
; _MCLRE_ON: Reset por pin externo ACTIVADO.
; _PWRTE_ON: Retraso al reset ACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _XT_OSC: Oscilador externo del tipo XT.

; _IESO_OFF: Modo de intercambio de externo a interno DESACTIVADO.
; _FCMEN_OFF: Monitor de CLK DESACTIVADO.

;*******************************
;    DEFINICIÓN DE REGISTROS
;********************************
    CBLOCK 0x20
    POS    ;Aquí va el número de paso de 1 a 4
    CUENTA ;Cuenta cada interrupción de 0.25 segundos, a las 5 dá un paso
    RETARDO
    ENDC



    ORG 0X0000
    GOTO SETEOS ;


    ORG 0X0004
    GOTO INTERR


    ORG 0X0008


SETEOS
    BSF STATUS, RP0 ;TRABAJO BANCO 1
    MOVLW B'11110000' ;BITS BAJOS = SALIDA
    MOVWF TRISB
    MOVLW B'11111111'
    MOVWF TRISA
    movlw b'00000010'
    movwf OPTION_REG ;Temporizador TMR0 a 1/8 preescala
    BCF STATUS,RP0 ;Banco 0
    movlw b'00100000'
    movwf INTCON ;Interrupcion por TMR0
    MOVLW .1
    MOVWF POS
    CLRF CUENTA

;**************************************ESPERA 1 BOTÓN************************
ESPERA
    BTFSS PORTA,RA0
    call ADEL
    BTFSS PORTA,RA1
    call ATRAS
    BTFSS PORTA,RA2
    call AVANCE
    CLRF PORTB ;APAGA TODO PUES ESTÁ EN REPOSO
    GOTO ESPERA

;****************************************ADELANTE* ***************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ADEL 
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,RA0
    return ;RUIDO
    INCF POS,F
    MOVLW .5
    SUBWF POS,W
    BTFSS STATUS, Z
    GOTO NA
    MOVLW .1
    MOVWF POS
NA 
    CALL PULSOS
    CALL TIEMPO ;Tiempo para escitar las bobinas del motor
    CALL TIEMPO ;ESPERA ESTABILIZARSE
    return
;****************************************ATRAS**** ************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ATRAS
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,RA1
    return ;RUIDO
    DECF POS,F
    movlw .0
    subwf POS,W
    BTFSS STATUS, Z ;controlo no baje de 1, si es 0 va a 4
    GOTO NT
    MOVLW .4
    MOVWF POS
NT 
    CALL PULSOS
    CALL TIEMPO ;ESPERA ESTABILIZARSE
    CALL TIEMPO ;Tiempo para escitar las bobinas del motor
    return
;****************************************AVANCE*** *****************************
; SOLO SE SALE CON STOP
;************************************************* *****************************
AVANCE
    CLRF TMR0
    NOP
    NOP
    BCF INTCON, INT0IF ;Bandera TMR0
    BSF INTCON, GIE ;Interrupcion general
    BSF INTCON, INT0IE ;Interrupcion por TMR0
QUEDA
    BTFSS PORTA,RA3
    GOTO PARA    
    GOTO QUEDA

;****************************************PARA***** *****************************
PARA
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,RA3
    GOTO QUEDA ;SI FUE UN RUIDO VUELVO
    CLRF PORTB
    BCF INTCON, GIE
    BCF INTCON, INT0IF
    return

;**************************************TIEMPO RETARDO REBOTES*****************************
TIEMPO 
    MOVLW .50 ;Aumentar el tiempo pues no escita las ;bobinas
    MOVWF RETARDO
TI 
    DECFSZ RETARDO,F ;RETARDO PARA REBOTES
    GOTO TI

    RETURN

;***************************************PULSOS**** *********************************

PULSOS 
    MOVLW .1
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO SEG
    MOVLW B'00001010' ;1 CODIGO
    MOVWF PORTB
    RETURN

SEG 
    MOVLW .2
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO TER
    MOVLW B'00001001' ;2 CODIGO
    MOVWF PORTB
    RETURN

TER 
    MOVLW .3
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO CUAT
    MOVLW B'00000101' ;3 CODIGO
    MOVWF PORTB
    return

CUAT 
    MOVLW .4
    SUBWF POS, 0
    BTFSS STATUS, Z
    return
    MOVLW B'00000110' ;4 CODIGO
    MOVWF PORTB

FINAL 
    RETURN

;************************************INTERR******* ****************************
; CADA .25 DE SEGUNDO VIENE AQUÍ
;************************************************* ****************************
INTERR 
    INCF CUENTA,F
    MOVLW .5
    SUBWF CUENTA,W
    BTFSS STATUS, Z
    GOTO VOLVER ; SI NO LLEGÓ A 5
    CLRF CUENTA ; SI LLEGÓ A 5/4 AVANZO
    INCF POS,F
    MOVLW .5
    SUBWF POS,W
    BTFSS STATUS, Z
    GOTO NIN
    MOVLW .1
    MOVWF POS
NIN 
    CALL PULSOS
    CALL TIEMPO
VOLVER 
    BCF INTCON, INT0IF ;BOORO BANDERA
    RETFIE


    END

Saludo.
 

Adjuntos

  • PAP_16F88_probando.rar
    2.1 KB · Visitas: 15
Hola. perdonad por la desconecxion. he estado adelantando los mecanizados de todo y poniendo las cosas en casa un poco al dia. tanto dedicarme a estudiar y a la electronica tenia aqui todo manga por hombro.
respecto al original madero.txt. yo siempre pense que este era para unipolares. por esto que si no se ha adaptado a bipolares algo no me cuadra. a ver si al final le ba a pasar el camion por encima de la bici...
acabo de descargar el archivo que has puesto Meta. lo pruevo y comento.
lo del video, como quedara si te lo grabo directo con un mobil a la pantalla? graba en hd.

Edito:
Meta, el grafico del osciloscopio es un poco raro, la señal hace rampa y no es cuadrada. el motor no llega a moverse, pero lo malo es que esta señal la hace de principio a fin y no puedo ni pararlo ni responde a ningun boton.

Edito de nuevo:
he subido un vide aqui:
tengo otro preparado mas largo por si no te fuera suficiente este por ser corto.
 

Adjuntos

  • 16f88-probando-osciloscopio.jpg
    16f88-probando-osciloscopio.jpg
    136 KB · Visitas: 4
Última edición:
Buenas:

Me olvidé de una cosa, lo compilé a 4MHz, jajajajajajajaja. Me acabo de dar cuenta, error mio. Ahora te lo compilo a 32768 Hz o lo que es lo mismo, a 32.768 KHz. Espero que una vez por tdas funciona bien.

Saludo.

Edito:
Vuelvo a actualizar el archivo, ahora cambié el oscilador externo XT por el LP que es de 32768 Hz.

Por culpa de estos detalles no te funionaba bien el motor. Estoy husmeando el oscilador interno.

Espero que uses el oscilador externo 32768 Hz, son tipo cilíndrico.
78XTL32K768.jpg


Saludo.

Edito 2:

Otro error del despiste, no para de cometer errores, ajajjajjaja, no se que me pasa hoy. No te funciona también, porque dejé las salidas analógicas, ahora están en digitales. Es lo que tiene el PIC16F88.

Cambios que he hecho en todo el archivo o hex.


  1. Cambiar el conteo de la RAM de 0x0C a 0x20.
  2. Adaptarlo al osiclador externo del XT 4MHZ a LP por 32768 Hz en la configuración.
  3. Pasar de entrada analógico del registro ANSEL a digital.
  4. Desactiva el ORG 0x08 que no se para que pusieron eso a un 16F84A, y en el 16F88 no se usa.

Código completo abajo. Si sale todo bien así, me molesto pasarlo sin oscilador externo, lo dejo interno a 32768 Hz que se puede hacer. Dejar claro que el externo tiene más precisión que el interno.

Código:
;********************************************************
;
;    Movimiento de un motor de pasos, 
;    MOTOR DE 48 PASOS POR VUELTA
;    1 PASO CADA 1.25SEG  A 32768KHz
;
;        RB3    RB2    RB1    RB0
;        
;        1    0    1    0
;        1    0    0    1    AVANCE, LOS 1 SON ON        
;        0    1    0    1    SE SUPONE A TRAVÉS DE ULN2003
;        0    1    1    0
;
;*******************************************************

;ZONA DE DATOS *****************************************

    LIST     P=16F88
    INCLUDE    <P16F88.INC>
    __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _LP_OSC
    __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

;   Oscilador cristal externo 4 MHz, con dos condensadores de 22 pF.

; _CP_OFF: Protección de código DESACTIVADO.
; _DEBUG_OFF: Debug en circuito DESACTIVADO.
; _WRT_PROTECT_OFF: Protección a escritura en memoria de programa DESACTIVADO.
; _CPD_OFF: Protección de código de datos DESACTIVADO.
; _LVP_OFF: Programación en baja tensión DESACTIVADO.
; _BODEN_OFF: Reset por Brown-out DESACTIVADO.
; _MCLRE_ON: Reset por pin externo ACTIVADO.
; _PWRTE_ON: Retraso al reset ACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _LP_OSC: Oscilador externo del tipo LP.

; _IESO_OFF: Modo de intercambio de externo a interno DESACTIVADO.
; _FCMEN_OFF: Monitor de CLK DESACTIVADO.

;*******************************
;    DEFINICIÓN DE REGISTROS
;********************************
    CBLOCK 0x20
    POS    ;Aquí va el número de paso de 1 a 4
    CUENTA ;Cuenta cada interrupción de 0.25 segundos, a las 5 dá un paso
    RETARDO
    ENDC



    ORG 0X0000
    GOTO SETEOS ;


    ORG 0X0004
    GOTO INTERR


;    ORG 0X0008


SETEOS
    BSF STATUS, RP0 ;TRABAJO BANCO 1
    clrf    ANSEL        ;Puerta A digital
    MOVLW B'11110000' ;BITS BAJOS = SALIDA
    MOVWF TRISB
    MOVLW B'11111111'
    MOVWF TRISA
    movlw b'00000010'
    movwf OPTION_REG ;Temporizador TMR0 a 1/8 preescala
    BCF STATUS,RP0 ;Banco 0
    movlw b'00100000'
    movwf INTCON ;Interrupcion por TMR0
    MOVLW .1
    MOVWF POS
    CLRF CUENTA

;**************************************ESPERA 1 BOTÓN************************
ESPERA
    BTFSS PORTA,RA0
    call ADEL
    BTFSS PORTA,RA1
    call ATRAS
    BTFSS PORTA,RA2
    call AVANCE
    CLRF PORTB ;APAGA TODO PUES ESTÁ EN REPOSO
    GOTO ESPERA

;****************************************ADELANTE* ***************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ADEL 
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,RA0
    return ;RUIDO
    INCF POS,F
    MOVLW .5
    SUBWF POS,W
    BTFSS STATUS, Z
    GOTO NA
    MOVLW .1
    MOVWF POS
NA 
    CALL PULSOS
    CALL TIEMPO ;Tiempo para escitar las bobinas del motor
    CALL TIEMPO ;ESPERA ESTABILIZARSE
    return
;****************************************ATRAS**** ************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ATRAS
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,RA1
    return ;RUIDO
    DECF POS,F
    movlw .0
    subwf POS,W
    BTFSS STATUS, Z ;controlo no baje de 1, si es 0 va a 4
    GOTO NT
    MOVLW .4
    MOVWF POS
NT 
    CALL PULSOS
    CALL TIEMPO ;ESPERA ESTABILIZARSE
    CALL TIEMPO ;Tiempo para escitar las bobinas del motor
    return
;****************************************AVANCE*** *****************************
; SOLO SE SALE CON STOP
;************************************************* *****************************
AVANCE
    CLRF TMR0
    NOP
    NOP
    BCF INTCON, INT0IF ;Bandera TMR0
    BSF INTCON, GIE ;Interrupcion general
    BSF INTCON, INT0IE ;Interrupcion por TMR0
QUEDA
    BTFSS PORTA,RA3
    GOTO PARA    
    GOTO QUEDA

;****************************************PARA***** *****************************
PARA
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,RA3
    GOTO QUEDA ;SI FUE UN RUIDO VUELVO
    CLRF PORTB
    BCF INTCON, GIE
    BCF INTCON, INT0IF
    return

;**************************************TIEMPO RETARDO REBOTES*****************************
TIEMPO 
    MOVLW .50 ;Aumentar el tiempo pues no escita las ;bobinas
    MOVWF RETARDO
TI 
    DECFSZ RETARDO,F ;RETARDO PARA REBOTES
    GOTO TI

    RETURN

;***************************************PULSOS**** *********************************

PULSOS 
    MOVLW .1
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO SEG
    MOVLW B'00001010' ;1 CODIGO
    MOVWF PORTB
    RETURN

SEG 
    MOVLW .2
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO TER
    MOVLW B'00001001' ;2 CODIGO
    MOVWF PORTB
    RETURN

TER 
    MOVLW .3
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO CUAT
    MOVLW B'00000101' ;3 CODIGO
    MOVWF PORTB
    return

CUAT 
    MOVLW .4
    SUBWF POS, 0
    BTFSS STATUS, Z
    return
    MOVLW B'00000110' ;4 CODIGO
    MOVWF PORTB

FINAL 
    RETURN

;************************************INTERR******* ****************************
; CADA .25 DE SEGUNDO VIENE AQUÍ
;************************************************* ****************************
INTERR 
    INCF CUENTA,F
    MOVLW .5
    SUBWF CUENTA,W
    BTFSS STATUS, Z
    GOTO VOLVER ; SI NO LLEGÓ A 5
    CLRF CUENTA ; SI LLEGÓ A 5/4 AVANZO
    INCF POS,F
    MOVLW .5
    SUBWF POS,W
    BTFSS STATUS, Z
    GOTO NIN
    MOVLW .1
    MOVWF POS
NIN 
    CALL PULSOS
    CALL TIEMPO
VOLVER 
    BCF INTCON, INT0IF ;BOORO BANDERA
    RETFIE


    END
Saludo.
 

Adjuntos

  • PAP_16F88_32768Hz.rar
    366 bytes · Visitas: 17
Última edición:
Buff. Que mogollon de curro que te has pegado.
Voy a probarlo ahora mismo.
Nota: si hacia el caballito cuando iba rapido el motor, seria logico pensar que siguiera haciendolo.
 
Última edición:
Sobre las señales del osciloscopio probaria lo siguiente

Conectar los canales A y B entre los puertos RB0-RB1 y las entradas del l293 INT1-INT2
Conectar los canales C y D entre las salidas del l293 OUT1-OUT2 y el motor
Si en los canales A y B no sale el osciligrama de la señal dividida (que sale plana ) y en los canales C y D
si salen divididas es que PROTEUS realmente hace una simulacion real
Fisicamente, cuando tienes el circuito montado, las alimentaciones del PIC y el MOTOR tienen que ser independientes, pues al activar el motor se produce una caida de tension reseteando la PIC

En cuanto al caballito, he estado mirando secuencias del motor bipolar y son diferentes en su secuencia
por ello me referia a que hicieras mas lento la revolucion del motor
Ves provando con el codigo de meta y haver si encuentro la secuencia y la paso

En cuanto a la diferancia de los motores unipolar y bipolar hay gran variedad de tema en la red, pero la diferencia,que te intresa, esta en la secuencia

Un saludo

P.D. La secuencia que prove fisicamente, pues no tengo simulador, y el motor iva mas acorde, mas suave es:

1001
1010
0110
0101
 
Última edición:
Si. esa frecuencia es la que creo venia inicialmente en unipolar. pero como desconozco por completo la secuencia bipolar no puedo aportar mucho.

espero ser capaz de hacer la prueba que me pones correctamente, parece un trabalenguas. si lo leo deprisa seguro que me muerdo la lengua. jaja.

voy a ello.

por otro lado, he revisado a ver como hacia la onda con el original en unipolar y veo una señal cuadrada muy bien definida. lo puse a 48 pasos por vuelta, el procesador a 32768hz y es un reloj suizo. es perfecto con todos los botones.
pena que no tengo motor unipolar.

el problema creo puede venir de alguna modificacion pues la doble cresta de la señal la hace solo a partir de una de las modificaciones para mantener el pulso o algo asi.

Meta. no te preocupes. sera que no se ha intentado. si no encuentro otra solucion, me ire a comprar un motoret y listo. me hacia ilusion aprobechando que tenia el motor y el chip de usarlos y asi dar un poco de variedad al tema de la motorizacion de las planchetas ecuatoriales. artilugio muy difundido entre aficionados a la astronomia.

Edito: meta. lo siento, a la que le doy a avance para que de vuelta lenta se pone rapido y no hay manera de pararlo.
es como si en lugar de llamar a una rutina se llamara a la otra, de manera que luego no sabe como salir.

Resultado prueba osciloscopio. releyendo y mirando el esquema resultó más facil de hacer la prueba de lo que me parecia. pero el resultado es inocuo. me parace. porque lo ponga en las salidas del l293 o en las entradas marca la misma señal. pero resulta que me confundi primero de circuito y lo probe en unipolar. asi que aqui pongo los dos resultados.
 

Adjuntos

  • prueba bipolar.jpg
    prueba bipolar.jpg
    130.1 KB · Visitas: 2
  • prueba unipolar.jpg
    prueba unipolar.jpg
    137.5 KB · Visitas: 1
Última edición:
Atrás
Arriba