# Programa asm o c para pic16f84a para control motor pap



## handyss (Abr 5, 2012)

Tengo una necesidad de un programa en concreto para controlar una plancheta ecuatorial con motor pap pequeñito 100mA o asi. el mots2 con unos 2040 pasos por vuelta unipolar. a controlar con el pic16f84A y sus amigo el uln2003. pero puede usarse el 16f88 ya que tambien lo tengo. este es el esquema que tengo:
http://imageshack.us/photo/my-images/36/circuitocontrolplanchet.jpg/



lo que necesito es que el motor pueda estar en 4 estados diferentes al pulsar uno de los 4 botones del mando de control.
1-play= el motor gira a 1 rpm asta que se pulse el boton 4-stop . no es necesario mantener pulsado.
2-avance rapido-el motor gina a aproximadamente 1 vuelta por segundo en la misma direccion que play. que es el sentido horario ya que apretara un tornillo. solo girara si esta pulsado y al soltar se parara.
3-lo mismo que el 2 pero en sentido contrario.
4 el stop que lo detiene todo y queda a la espera de una pulsación.
yo soy amigo de hacer favores. pero si es necesario, que me cobraría alguno por hacemelo?
me gustaria que fuese con el mplab ya que tengo el pickit2 ya venia, y con anotaciones y comentarios para poder adaptarlo a otras cosas y aprender algo.


----------



## Meta (Abr 5, 2012)

Hola:






Fuente:
http://www.pic16f84a.org/proteus.html#Proteus_Capitulo_30


----------



## handyss (Abr 5, 2012)

Hey. que buena pinta tiene esto. ademas tengo dos bipolares iguales que cumplirian de marabilla.

yo estoy haciendo el acceso a grado superior, asi que estamos casi apunto de empezar los examenes. seguro que si al final hago D.P.E. me gustara mucho.


----------



## handyss (Abr 5, 2012)

Hola de nuevo. no lo estaba mirando bien. si estan los .hex pero miraba en la practica de servomotores.
ahora tengo los hex. pero no esta el esquematico que pusiste para el isis. me lo podrias pasar?
gracias.


----------



## Meta (Abr 5, 2012)

Hola:

Motor continua, PAP y servomotor.

Saludo.


----------



## handyss (Abr 5, 2012)

gracias. a jugar un rato. jeje


----------



## Meta (Abr 5, 2012)

Ya puedes jugar a los tres tipos de motores.

Descargar

Saludo.


----------



## handyss (Abr 5, 2012)

el motorpap04.hex es mas que muy interesante. pero que sea exacto es como sentarse en un pajar y....
el caso es que si se tubiera el programa sin compilar podria practicar a retocarlo para cuadrar las velocidades y demas. pocos cambios porque no se nada. solo hice un curso de 6 meses de lenguaje c cuando los pcs que habian eran los 386 jeje. y ahora el es que biene cumplo 40. lo que me gusta es que no noto los años porque decian mis mayores que la inquietud se pierde con los años y yo no se que es eso aun.


----------



## Meta (Abr 5, 2012)

JEjeejejejej, disculpe usted, no te he dado el código fuente. El que tengo es escrito en ensamblador.

Todos los ASM del libro.

El primero del PAP que hay varios, es este de abajo.


```
;************************************* MotorPAP_01.asm *********************************
;
;    ===================================================================
;      Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;      E. Palacios, F. Remiro y L. López.            [url]www.pic16f84a.com[/url]
;       Editorial Ra-Ma.  [url]www.ra-ma.es[/url]
;    ===================================================================
;
; Programa de control para un motor paso a paso (PAP) en funcionamiento y sentido de
; giro. Con RA0 a "0" el motor se pone en marcha y su sentido de giro dependerá del valor
; que tenga RA4.
;
; ZONA DE DATOS **********************************************************************

    LIST        P=16F84A
    INCLUDE        <P16F84A.INC>
    __CONFIG    _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

    CBLOCK    0x0C
    ENDC

#DEFINE EntradaMarcha    PORTA,0        ; Interruptor de puesta en marcha.
#DEFINE EntradaSentido    PORTA,4        ; Interruptor de sentido de giro.

; ZONA DE CÓDIGOS ********************************************************************

    ORG     0
Inicio
    bsf        STATUS,RP0
    bsf        EntradaMarcha            ; Estas líneas se configuran como entrada.
    bsf        EntradaSentido
    clrf    PORTB                    ; Las líneas del Puerto B configuradas como salidas.
    bcf        STATUS,RP0
Principal
    btfss    EntradaMarcha            ; ¿Puesta en marcha?
    goto    Gira                    ; Sí.
    clrf    PORTB                    ; No, para el motor, poniendo a cero la línea
    goto    Fin                        ; de habilitación.
Gira
    btfsc    EntradaSentido            ; Comprueba el sentido de giro deseado.
    goto    A_Izquierda
    call    GiroDerecha                ; Gira en un sentido.
    goto    Fin
A_Izquierda
    call    GiroIzquierda            ; Gira en sentido contrario.
Fin    goto    Principal

; Subrutina "GiroIzquierda" -------------------------------------------------------------

GiroIzquierda
    movlw    b'00110101'                ; Primer paso.
    call    ActivaSalida            ; Lo envía a la salida donde está conectado el motor PAP.
    movlw    b'00110110'                ; Segundo paso.
    call    ActivaSalida
    movlw    b'00111010'                ; Tercer paso.
    call    ActivaSalida
    movlw    b'00111001'                ; Cuarto y último paso
    call    ActivaSalida
    return

; Subrutina "GiroDerecha" ---------------------------------------------------------------

GiroDerecha
    movlw    b'00111001'                ; Primer paso.
    call    ActivaSalida    
    movlw    b'00111010'             ; Segundo paso.
    call    ActivaSalida
    movlw    b'00110110'                ; Tercer paso.
    call    ActivaSalida
    movlw    b'00110101'                ; Último paso.
    call    ActivaSalida
    return

; Subrutina "ActivaSalida" --------------------------------------------------------------

ActivaSalida
    movwf    PORTB
    call    Retardo_10ms            ; Temporización antes del siguiente paso.
    return

    INCLUDE  <RETARDOS.INC>
    END

;    ===================================================================
;      Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;      E. Palacios, F. Remiro y L. López.            [url]www.pic16f84a.com[/url]
;       Editorial Ra-Ma.  [url]www.ra-ma.es[/url]
;    ===================================================================
```


----------



## handyss (Abr 5, 2012)

edito: este mensaje se ha puesto sin haber visto el anterior.

Le he puesto un osciloscopio para ver que velocidad tendria con un motor de 48 pasos bipolar a 7.5º/paso.
pero no acabo de entender como funciona el osciloscopio ni si seran reales las lecturas que yo pueda dar.
he visto que tiene configuracion para por lo menos 4 o 5 velocidades y cambio de direccion.
ahora me tengo que poner las pilas para acabar los deberes que se acabara la quincena y no los tendre hechos y despues seguire con el programa mplab a ver si me entero de algo para configurar algunos cambios en un soft que venia con el esquema que pase y que no soy capaz de compilar. creo que debe tener fallos pero no lo se.
lo añado tal cual a continuacion para ver si pudiese hacer algo. ese me funcionaria bien con los motores unipolares.


```
;********************************************************

;

;	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

;

;*******************************************************



IND0    EQU 0X00

RTCC    EQU 0X01

PCL     EQU 0X02

STATUS  EQU 0X03 ;LOS 8 BITS DE STATUS

IRP     EQU 7

RP1     EQU 6

RP0     EQU 5

TO      EQU 4

PD      EQU 3

Z       EQU 2

DC      EQU 1

C       EQU 0

FSR     EQU 0X04

PORTA   EQU 0X05

PORTB   EQU 0X06

EEDATA  EQU 0X08

EEADR   EQU 0X09

PCLATCH EQU 0X0A

INTCON  EQU 0X0B

GIE     EQU 7

EEIE    EQU 6

T0IE    EQU 5

INTE    EQU 4

RBIE    EQU 3

T0IF    EQU 2

INTF    EQU 1

RBIF    EQU 0

OPT     EQU 0X81

RBPU    EQU 7

INTEDG  EQU 6

T0CS    EQU 5

T0SE    EQU 4

PSA     EQU 3

PS2     EQU 2

PS1     EQU 1

PS0     EQU 0

TRIA    EQU 0X85

TRIB    EQU 0X86

EECON1  EQU 0X88

EEIF    EQU 4

WRERR   EQU 3

WREN    EQU 2

WR      EQU 1

RD      EQU 0

;*******************************

;	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	STATUS, RP0	;TRABAJO BANCO 1

	MOVLW	B'11110000'	;BITS BAJOS = SALIDA

	MOVWF	TRIB

	MOVLW	B'11111111'

	MOVWF	TRIA

	BCF	OPT, T0CS

	BCF	OPT, PSA

	BCF	OPT, PS2

	BSF	OPT, PS1	; PREESCALER DIVIDE POR 8

	BCF	OPT, PS0

	BCF	STATUS, RP0

	

	BCF	INTCON, GIE

	BSF	INTCON, T0IE

	BCF	INTCON, T0IF

	MOVLW	.1

	MOVWF	POS

	CLRF	CUENTA



;**************************************ESPERA 1 BOTÓN************************

ESPERA	BTFSS	PORTA, 0	

	GOTO	ADEL

	BTFSS	PORTA, 1

	GOTO	ATRAS

	BTFSS	PORTA, 2

	GOTO 	AVANCE			

	CLRF	PORTB		;APAGA TODO PUES ESTÁ EN REPOSO

	GOTO	ESPERA





;****************************************ADELANTE****************************

;			           MUEVE UN PASO Y VUELVE

;****************************************************************************

ADEL	CALL	TIEMPO

	BTFSC	PORTA, 0

	GOTO	ESPERA		;RUIDO	

	INCF	POS

	MOVLW	.5

	SUBWF	POS,0

	BTFSS	STATUS, Z

	GOTO	NA

	MOVLW	.1

	MOVWF	POS

NA	CALL 	PULSOS

	CALL	TIEMPO

	CALL	TIEMPO		;ESPERA ESTABILIZARSE

	GOTO	ESPERA

		

;****************************************ATRAS****************************

;			           MUEVE UN PASO Y VUELVE

;****************************************************************************

ATRAS	CALL	TIEMPO

	BTFSC	PORTA, 1

	GOTO	ESPERA		;RUIDO	

	DECF	POS

	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

	GOTO	ESPERA





;****************************************AVANCE********************************

;			       SOLO SE SALE CON STOP

;******************************************************************************



AVANCE	CLRF	RTCC

	NOP	

	NOP

	BCF	INTCON, T0IF

	BSF	INTCON,	GIE

	BSF	INTCON, T0IE

	

QUEDA	BTFSS	PORTA, 3

	GOTO	PARA

	GOTO	QUEDA



;****************************************PARA**********************************



PARA	CALL	TIEMPO

	BTFSC	PORTA, 3

	GOTO 	QUEDA		;SI FUE UN RUIDO VUELVO

	CLRF	PORTB

	BCF	INTCON, GIE

	BCF	INTCON, T0IF

	GOTO	ESPERA

;********************************************************************************







;**************************************TIEMPO RETARDO REBOTES*****************************

TIEMPO	MOVLW	.50

	MOVWF	RETARDO

TI	DECFSZ	RETARDO		;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

CUAT	MOVLW	.4

	SUBWF	POS, 0

	BTFSS	STATUS, Z

	GOTO	FINAL

	MOVLW 	B'00000110'	;4 CODIGO

	MOVWF	PORTB

FINAL	RETURN



;************************************INTERR***********************************

;                                CADA .25 DE SEGUNDO VIENE AQUÍ

;*****************************************************************************

INTERR	INCF	CUENTA

	MOVLW	.5

	SUBWF	CUENTA, 0

	BTFSS	STATUS, Z

	GOTO 	VOLVER		; SI NO LLEGÓ A 5

	CLRF	CUENTA		; SI LLEGÓ A 5/4 AVANZO

	INCF	POS

	MOVLW	.5

	SUBWF	POS,0

	BTFSS	STATUS, Z

	GOTO	NIN

	MOVLW	.1

	MOVWF	POS

NIN	CALL 	PULSOS

	CALL	TIEMPO

VOLVER	BCF	INTCON, T0IF	;BOORO BANDERA

	RETFIE



	END
```


----------



## Meta (Abr 5, 2012)

Si no eres capaz de compilar. Puedes poner los errores indicado en el MPLAB al compilar.


----------



## handyss (Abr 5, 2012)

acavo de entender que el fallo que me da el programa del compilador, no es porque haya algun error en el texto anterior. sino que es por no saber usarlo ya que me pasa lo mismo con los que hay en tu ultimo mensaje. hay algun tuto pot youtube o algo para compilar archivos con el mplab o otro?


----------



## Meta (Abr 5, 2012)

Hola:

Hace un tiempo hice uno muy sencillo. Espero que te ayude algo.

Ver tutorial MPLAB inicio rápido.

Suerte...

Ya nos contará como te ha ido.


----------



## handyss (Abr 5, 2012)

Muchas gracias por todo. cuando lo tenga, intentare colgarlo donde me digais para que quede por aqui si alguien lo necesita.


----------



## handyss (Abr 6, 2012)

Bueno. de momento lo tengo tal cual lo encontre en la web: http://www.cielosur.com/plataforma_ecuatorial.php
el caso es que no era capaz ce compilarlo para usarlo. os dejo la info para que el que quiera lo use. a mi me quema mucho porque ahora tengo que hacer la plancheta y la electronica fisicamente y luego a probar de hacerle cambios al asm para conseguir la velocidad y funcionamiento deseado.
muchas gracias de nuevo.

Hola, subo de nuevo pues al usar un esquema ya hecho y adaptarlo no lo he hecho bien y da un error en la simulacion. aqui esta solucionado.


----------



## handyss (Abr 8, 2012)

Hola de nuevo. He probado asta la saciedad en protoboard y no funcionan o ninguno de los dos 16f84a que tengo o ninguno de los dos uln2003. Así que en lugar de comprar los chips. Quisiera comenzar a aprender con el 16f88 por dos razones. Una que tengo 3 en casa y la otra es que a la que sea algo complejo y no me sirva el 16f84a tendré que hacerlo obligado y volvemos al principio. 
Tengo un par de dudas. Es muy complicado adaptar el codigo de uno al otro?
Y además se puede adaptar el codigo que yo puse a motores bipolares para usar mi circuito modificando lo?
Si adapto el codigo al 16f88 y además a bipolares estará listo para usar. Si me pueden ayudar les agradezco pues mi nivel roza el suelo.


----------



## Meta (Abr 8, 2012)

No es muy complicado, se puede adaptar.  Primero la configuración de palabras.


----------



## handyss (Abr 8, 2012)

Donde encuentro la informacion para hacerlo?
Seria algo como adaptar los comandos, las direcciones de memoria y los pines de entrada y salida. tambien tendria que evitar el clock interno para usar el indicado en el esquema no? luego seria cambiar las rutinas de los pasos por las de los bipolares y que funciones a la misma velocidad y por los mismos pines? cuando se acabe con el programa toca en esquema para sustituir el iln2003 por el l293, no? y a esto le dices no muy complicado? jajaja. de verdad que los que teneis experiencia como programadores y/o diseñadores de aplicaciones estais hechos de una pasta insufrible. tengo algo de teoria pues la logica se me da bien. pero no tengo ni idea de asm y a estas alturas tampoco de C y eso que de este hice un curso de 6 meses.
por donde empiezo?


----------



## Meta (Abr 9, 2012)

Hola:

Puedes enseñarme el código fuente cualquieres adaptar. Se mira la organización de la memoria de la hoja de datos del 16F84A y del 16F88. No te creas que se mucho de PIC tampoco, poco a poco estoy aprendiendo.

Los pines son los mismos, es lo bueno que hace Microchip, para que sean compatibles de entrada al menos la mayoría. Usarás el oscilador externo de 4 MHz. también se puede hacer interno hasta 8 MHz, con temas de retardos preparados a 4 MHz, mejor dejarlo como está. 4 MHz y oscilador XT.

Dependiendo del ASM que desas portar o com lo has programado, tardas un tiempo.

Un cordial saludo.


----------



## handyss (Abr 9, 2012)

Hola. te paso el texto por aquí y te lo añado como texto plano tal como lo encontré para que lo puedas modificar y compilar.


```
;********************************************************

;

;    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

;

;*******************************************************



IND0    EQU 0X00

RTCC    EQU 0X01

PCL     EQU 0X02

STATUS  EQU 0X03 ;LOS 8 BITS DE STATUS

IRP     EQU 7

RP1     EQU 6

RP0     EQU 5

TO      EQU 4

PD      EQU 3

Z       EQU 2

DC      EQU 1

C       EQU 0

FSR     EQU 0X04

PORTA   EQU 0X05

PORTB   EQU 0X06

EEDATA  EQU 0X08

EEADR   EQU 0X09

PCLATCH EQU 0X0A

INTCON  EQU 0X0B

GIE     EQU 7

EEIE    EQU 6

T0IE    EQU 5

INTE    EQU 4

RBIE    EQU 3

T0IF    EQU 2

INTF    EQU 1

RBIF    EQU 0

OPT     EQU 0X81

RBPU    EQU 7

INTEDG  EQU 6

T0CS    EQU 5

T0SE    EQU 4

PSA     EQU 3

PS2     EQU 2

PS1     EQU 1

PS0     EQU 0

TRIA    EQU 0X85

TRIB    EQU 0X86

EECON1  EQU 0X88

EEIF    EQU 4

WRERR   EQU 3

WREN    EQU 2

WR      EQU 1

RD      EQU 0

;*******************************

;    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    STATUS, RP0    ;TRABAJO BANCO 1

    MOVLW    B'11110000'    ;BITS BAJOS = SALIDA

    MOVWF    TRIB

    MOVLW    B'11111111'

    MOVWF    TRIA

    BCF    OPT, T0CS

    BCF    OPT, PSA

    BCF    OPT, PS2

    BSF    OPT, PS1    ; PREESCALER DIVIDE POR 8

    BCF    OPT, PS0

    BCF    STATUS, RP0

    

    BCF    INTCON, GIE

    BSF    INTCON, T0IE

    BCF    INTCON, T0IF

    MOVLW    .1

    MOVWF    POS

    CLRF    CUENTA



;**************************************ESPERA 1 BOTÓN************************

ESPERA    BTFSS    PORTA, 0    

    GOTO    ADEL

    BTFSS    PORTA, 1

    GOTO    ATRAS

    BTFSS    PORTA, 2

    GOTO     AVANCE            

    CLRF    PORTB        ;APAGA TODO PUES ESTÁ EN REPOSO

    GOTO    ESPERA





;****************************************ADELANTE****************************

;                       MUEVE UN PASO Y VUELVE

;****************************************************************************

ADEL    CALL    TIEMPO

    BTFSC    PORTA, 0

    GOTO    ESPERA        ;RUIDO    

    INCF    POS

    MOVLW    .5

    SUBWF    POS,0

    BTFSS    STATUS, Z

    GOTO    NA

    MOVLW    .1

    MOVWF    POS

NA    CALL     PULSOS

    CALL    TIEMPO

    CALL    TIEMPO        ;ESPERA ESTABILIZARSE

    GOTO    ESPERA

        

;****************************************ATRAS****************************

;                       MUEVE UN PASO Y VUELVE

;****************************************************************************

ATRAS    CALL    TIEMPO

    BTFSC    PORTA, 1

    GOTO    ESPERA        ;RUIDO    

    DECF    POS

    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

    GOTO    ESPERA





;****************************************AVANCE********************************

;                   SOLO SE SALE CON STOP

;******************************************************************************



AVANCE    CLRF    RTCC

    NOP    

    NOP

    BCF    INTCON, T0IF

    BSF    INTCON,    GIE

    BSF    INTCON, T0IE

    

QUEDA    BTFSS    PORTA, 3

    GOTO    PARA

    GOTO    QUEDA



;****************************************PARA**********************************



PARA    CALL    TIEMPO

    BTFSC    PORTA, 3

    GOTO     QUEDA        ;SI FUE UN RUIDO VUELVO

    CLRF    PORTB

    BCF    INTCON, GIE

    BCF    INTCON, T0IF

    GOTO    ESPERA

;********************************************************************************







;**************************************TIEMPO RETARDO REBOTES*****************************

TIEMPO    MOVLW    .50

    MOVWF    RETARDO

TI    DECFSZ    RETARDO        ;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

CUAT    MOVLW    .4

    SUBWF    POS, 0

    BTFSS    STATUS, Z

    GOTO    FINAL

    MOVLW     B'00000110'    ;4 CODIGO

    MOVWF    PORTB

FINAL    RETURN



;************************************INTERR***********************************

;                                CADA .25 DE SEGUNDO VIENE AQUÍ

;*****************************************************************************

INTERR    INCF    CUENTA

    MOVLW    .5

    SUBWF    CUENTA, 0

    BTFSS    STATUS, Z

    GOTO     VOLVER        ; SI NO LLEGÓ A 5

    CLRF    CUENTA        ; SI LLEGÓ A 5/4 AVANZO

    INCF    POS

    MOVLW    .5

    SUBWF    POS,0

    BTFSS    STATUS, Z

    GOTO    NIN

    MOVLW    .1

    MOVWF    POS

NIN    CALL     PULSOS

    CALL    TIEMPO

VOLVER    BCF    INTCON, T0IF    ;BOORO BANDERA

    RETFIE



    END
```

este el el que venia con este esquema:
http://imageshack.us/photo/my-images/36/circuitocontrolplanchet.jpg/


----------



## Meta (Abr 9, 2012)

Hola:

Me costó lo suyo porque usas técnicas muy obsoletas.

```
;********************************************************
;
;    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    
    BANKSEL    ANSEL    ;TRABAJO BANCO 1
    clrf    ANSEL    ; Puertos digitales.
    MOVLW    B'11110000'    ;BITS BAJOS = SALIDA
    MOVWF    TRISB
    MOVLW    B'11111111'
    MOVWF    TRISA
    BANKSEL INTCON
    BCF    INTCON, GIE
    BSF    INTCON, INT0IE
    BCF    INTCON, INT0IF
    BANKSEL PORTA
    MOVLW    .1
    MOVWF    POS
    CLRF    CUENTA

;**************************************ESPERA 1 BOTÓN************************
ESPERA    
    BTFSS    PORTA, 0    
    GOTO    ADEL
    BTFSS    PORTA, 1
    GOTO    ATRAS
    BTFSS    PORTA, 2
    GOTO     AVANCE            
    CLRF    PORTB        ;APAGA TODO PUES ESTÁ EN REPOSO
    GOTO    ESPERA


;****************************************ADELANTE****************************
;                       MUEVE UN PASO Y VUELVE
;****************************************************************************
ADEL    
    CALL    TIEMPO
    BTFSC    PORTA, 0
    GOTO    ESPERA        ;RUIDO    
    INCF    POS
    MOVLW    .5
    SUBWF    POS,0
    BTFSS    STATUS, Z
    GOTO    NA
    MOVLW    .1
    MOVWF    POS
NA    CALL     PULSOS
    CALL    TIEMPO
    CALL    TIEMPO        ;ESPERA ESTABILIZARSE
    GOTO    ESPERA
        
;****************************************ATRAS****************************
;                       MUEVE UN PASO Y VUELVE
;****************************************************************************
ATRAS    
    CALL    TIEMPO
    BTFSC    PORTA, 1
    GOTO    ESPERA        ;RUIDO    
    DECF    POS
    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
    GOTO    ESPERA


;****************************************AVANCE********************************
;                   SOLO SE SALE CON STOP
;******************************************************************************

AVANCE    
;    CLRF    RTCC ¿Qué es RTCC? Si lo djo, da error.
    NOP    
    NOP
    BCF    INTCON, INT0IF
    BSF    INTCON,    GIE
    BSF    INTCON, INT0IE
    
QUEDA    
    BTFSS    PORTA, 3
    GOTO    PARA
    GOTO    QUEDA

;****************************************PARA**********************************

PARA    
    CALL    TIEMPO
    BTFSC    PORTA, 3
    GOTO     QUEDA        ;SI FUE UN RUIDO VUELVO
    CLRF    PORTB
    BCF    INTCON, GIE
    BCF    INTCON, INT0IF
    GOTO    ESPERA
;********************************************************************************



;**************************************TIEMPO RETARDO REBOTES*****************************
TIEMPO    
    MOVLW    .50
    MOVWF    RETARDO
TI    DECFSZ    RETARDO        ;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
CUAT    MOVLW    .4
    SUBWF    POS, 0
    BTFSS    STATUS, Z
    GOTO    FINAL
    MOVLW     B'00000110'    ;4 CODIGO
    MOVWF    PORTB
FINAL    RETURN

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

    END
```
Compila bien, no quiere decir que funcione como desees, puede hacer cosas raras.

Un saludo.


----------



## handyss (Abr 9, 2012)

Es para unipolar es o bipolares?


----------



## Meta (Abr 9, 2012)

Si es como muestra en el esquema, es bipolar.


----------



## handyss (Abr 9, 2012)

el esquema que puse yo es unipolar, pero como los motores que me interesa usar son bipolares decia de cambiarlo. ahora me he liado. te refieres al esquema bipolar que pusiste tu. no?


----------



## Meta (Abr 9, 2012)

El que digo es bipolar, el esquema que puse. El tuyo es unipolar de 5 hilos.


----------



## handyss (Abr 9, 2012)

ok. es que por un momento me pareció que te referías al que puse yo. en fin. perdona la duda.
mañana lo compilo y pruebo con el proteus. cualquier cosa te comento.


----------



## handyss (Abr 9, 2012)

Mirate esta pagina que explican cosas sobre el RTCC:
http://www.embeddedcodesource.com/developer/microchip_technology_58/ce345_rtcc
yo no entiendo como se usa, pero aqui dicen que la usan para optener algo en tiempo real.

Por otro lado, he intentado compilarlo yo y me da este error:
Error[113]   C:\USERS\PEDRO PAVO\DOCUMENTS\PIC-PRUEBAS\16F84A\MADERO ASEMBLER BIPOLAR.ASM 209 : Symbol not previously defined (INT0IF)

si tu has podido compilarlo, pasame el Hex para ver como trabaja en proteus porfa.


----------



## Meta (Abr 9, 2012)

Hola:

Ya se que se refiere al RTC. Reloj Calendario Tiempo Real. Se usan en los PIC que lo llevan incorporado ya en el mismo en capsulado, para el 16F84A o el 16F88 es externo.






http://www.pic16f84a.org/proteus.html#Proteus_Capitulo_24

En este caso no te hace falta. El ejemplo del libro viene bien hecho. El ejemplo que me pusiste es para un PIC de 16 bits, nosotros estamos con el de 8 bits.

Uso la versión MPLAB v8.84.

Al compilar me da estos valores de salida.


> ----------------------------------------------------------------------
> Debug build of project `D:\PAP_PIC16F88\PAP_16F88.mcp' started.
> Language tool versions: MPASMWIN.exe v5.44, mplink.exe v4.42, mplib.exe v4.42
> Preprocessor symbol `__DEBUG' is defined.
> ...


Compilado, también puedes descargarlo en zip.

```
:020000040000FA
:020000000828CE
:020008006A2864
:10001000831603139B01F0308600FF3085008312A6
:1000200003138B130B168B10831203130130A000E4
:10003000A101051C2128851C2F28051D3B288601B0
:1000400019284A2005181928A00A05302002031D86
:100050002B280130A0004F204A204A2019284A208E
:1000600085181928A003031D37280430A0004F204D
:100070004A204A201928000000008B108B170B160D
:10008000851D432840284A208519402886018B1366
:100090008B1019283230A200A20B4C280800013026
:1000A0002002031D56280A30860008000230200274
:1000B000031D5D2809308600080003302002031D5F
:1000C00063280530860004302002031D69280630AD
:1000D00086000800A10A05302102031D7928A1012C
:1000E000A00A05302002031D77280130A0004F2010
:0600F0004A208B100900FC
:02400E00213F50
:02401000FC3F73
:00000001FF
```

En cuanto al INT0IF, así se llama para el 16F88. Para el 16F84A se llama T0IF. No me da error al compilar.

Suerte.


----------



## handyss (Abr 10, 2012)

hola de nuevo. segun el isis del proteus, los botones funcionan algo diferente de lo esperado. el "play" o avance, pin 2, hace que quede armado a la espera de que se toque un boton pero no hace avance a 48 pasos por minuto que se esperan. cuando se le da al "avance rapido" pin 18, si esta en espera avanza rapido y si no no. lo mismo que el retroceso rapido, pin 17, que solo lo hace si esta en espera. y el stop, pin 1, hace que quede inactivo y no responde a nada, solo al play, pin 2, que lo pone en espera para poder empezar de nuevo. 

deberia ir de la siguiente manera: al darle play, quedar en play asta darle al stop. y al darle al avance rapido o retroceso rapido, realizar la funcion de avance o retroceso asta que se suelte el boton. seria complicado de cambiar? 
tambien he visto que tiene oscilador interno:
• Internal oscillator block:
- 8 user selectable frequencies: 31 kHz,
125 kHz, 250 kHz, 500 kHz, 1 MHz, 2 MHz,
4 MHz, 8 MHz
seria interesante no tener que ponerlo en la placa ademas de saber como controlar las funciones de tiempo para que de una vuelta por minuto a 48 pasos por vuelta.
tambien por otro lado se de un sitio donde ponen unas cervezas fresquitas y no voy porque no me gusta ir solo, te bienes .
mi rabia es que llego a entender la teorica, pero no he tocado nunca la practica y sin alguien al lado no lo acabaria. no imaginas cuanto te lo agradezco.

me ha gustado mucho ver que se mobia, es un gran avance para el exito. eres un crack. que ganas tengo de sacarme esta espinita y saber hacerlo yo.


----------



## Meta (Abr 10, 2012)

Hola:

Me alegro que te haya funcionado algo, por algo se empieza. Me imagino que usas el esquema es justo abajo.






No se si haz pensado poner el de abajo. Tiene su código fuente que puse arriba.







En tu esquema pone UNL2003, el de abajo L293.
¿Cuál estás usando?



handyss dijo:


> hola de nuevo. segun el isis del proteus, los  botones funcionan algo diferente de lo esperado. el "play" o avance, pin  2, hace que quede armado a la espera de que se toque un boton pero no  hace avance a 48 pasos por minuto que se esperan. cuando se le da al  "avance rapido" pin 18, si esta en espera avanza rapido y si no no. lo  mismo que el retroceso rapido, pin 17, que solo lo hace si esta en  espera. y el stop, pin 1, hace que quede inactivo y no responde a nada,  solo al play, pin 2, que lo pone en espera para poder empezar de nuevo.
> 
> *Si pasa estas cosas, si actúa así, es que se ha programado así aunque no seas consciente de ello. Por ejemplo. Quiero pulsar el botón A que significa Play, poner en marcha el motor PAP, si al pulsarlo, sólo retrocede dos pasos hacia atrás...
> 
> ...




Suerte.


----------



## handyss (Abr 10, 2012)

Edito: ha abido cruce de mensajes, este lo escribi sin ver el anterior tuyo.
para las pruebas con el compilado bipolar use su esquema, el bipolar. y antes use el unipolar en proteus y el programa hacia lo que digo. 
mirare de seguir este consejo que creo que la unica manera de aprender es tirandome a la piscina, jeje.
mil gracias que me haas adelantado mucho.

Hola. he estado ntentando usar el componente l293 de las lbreras de proteus, para saber cual es cada patilla. el caso es que no se seguir pero no va con mi modificacion, es decir que o he puesto algo mal en el esquema o algo de menos.
te adjunto los archivos del proteus a ver si te valen y una imagen del esquema a ver si le ves mis fallos.


----------



## Meta (Abr 10, 2012)

Hola:

Sobre el L293, aquí hay información:





http://www.iesleonardo.info/ele/pro...edro Ramos/control de motores paso a paso.htm

Se que este no es el procedimiento que quieres, con ello es bueno hacer un esquema a mano o a paint de lo que quieres hacer com indica abajo.






Aquí hay dos ejemplos para el 16F886 del oscilador interno tanto en asm como en C.

```
;
;                                EJEMPLO 4-1
;                        Autor: Mikel Etxebarria
;                        Orozko-Bizkaia, Septiembre 2010
;
;El oscilador interno
;
;Al seleccionar el oscilador interno, la frecuencia de trabajo se puede modificar dinámicamente
;ajustando los bits IRCF2:IRCF0 del registro OSCCON (postcaler de INTOSC). En este ejemplo el
;valor binario de las entradas RA2:RA0 se emplea para actualizar el OSCCON y seleccionar así
;diferentes frecuencias de trabajo.
;
;RB0 cambia de estado cada cierto tiempo mediante el empleo de una rutina de temporización que 
;consume unos 500000 ciclos (Tc). Al variar la frecuencia de trabajo, se varía la duración de cada
;cilco (TC) y por tanto el tiempo en el que RB0 cambia de estado y que se puede apreciar claramente
;Los tiempos se resumen en la siguiente tabla
;
;RA2:RA0    F            Tc            Tiempo
;------        --------    -------        ----
;000        31 KHz        129 uS        64.5 s
;001        125 KHz        32 uS        16 s
;010        250 KHz        16 uS        8 s
;011        500 KHz        8 uS        4 s
;100        1 MHz        4 uS        2 s
;101        2 MHz        2 uS        1 s
;110        4 MHz        1 uS        0.5 s
;111        8 MHz        0.5 uS        0.25 s

        
        List    p=16F886        ;Tipo de procesador
        include    "P16F886.INC"    ;Definiciones de registros internos
        #define Fosc 4000000    ;Velocidad de trabajo

;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades

        __config    _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF    ;Palabra 1 de configuración
        __config    _CONFIG2, _WRT_OFF&_BOR40V                                    ;Palabra 2 de configuración

Temp_1    equ    0x20
Temp_2    equ    0x21                
Temp_3    equ    0x22                ;Variables para los bucles de temporización

        org    0x00
        goto    Inicio            ;Vector de reset
        org    0x05            

;Rutina de temporización de unos 500000 ciclos de instrucción (Tc). Se realiza con tres bucles anidados.
;En función de la velocidad seleccionada según el valor de OSCCON, se consiguen temporizaciones
;diferentes.
Delay        movlw    .2
            movwf    Temp_1
Delay_3        movlw    .243
            movwf    Temp_2
Delay_2        clrf    Temp_3
Delay_1        nop
            decfsz    Temp_3,f    
            goto    Delay_1        ;Delay_1=256*4=1024 ciclos
            decfsz    Temp_2,F
            goto    Delay_2        ;Delay_2=(Delay_1*243)+(243*4)=249804 ciclos
            decfsz    Temp_1,F
            goto    Delay_3        ;Delay_3=(Delay_2*2)+(2*4)=499616 ciclos
            return

;Programa principal        
Inicio        clrf    PORTB        ;Desconecta salidas
            bsf        STATUS,RP0
            bsf        STATUS,RP1    ;Selecciona banco 3
            clrf    ANSEL        ;Puerta A digital
            clrf    ANSELH        ;Puerta B digital
            bcf        STATUS,RP1    ;Selecciona banco 1
            movlw    b'00111111'
            movwf    TRISA        ;RA5-RA0 entradas
            movlw    b'11111110'
            movwf    TRISB        ;RB0 se configura como salida

            bsf        OSCCON,SCS    ;Oscilador interno como fuente prinipal de reloj

            bcf        STATUS,RP0    ;Selecciona banco 0

Loop        movlw    0x01
            xorwf    PORTB,F        ;RB0 cambia de estado
            call    Delay        ;Temporiza 500000 ciclos de instrucción.
            movf    PORTA,W        
            andlw    b'00000111'
            movwf    Temp_1        ;Lee las entradas RA2:RA0
            rlf        Temp_1,F
            rlf        Temp_1,F
            rlf        Temp_1,F
            rlf        Temp_1,w    ;Ajusta a la posición de los bits IRCF2:IRCF0
            iorlw    0x01
            bsf        STATUS,RP0    ;Banco 1
            movwf    OSCCON        ;Actualiza el nuevo valor del postcaler de INTOSC
            bcf        STATUS,RP0    ;Banco 0
            goto    Loop

            end                    ;Fin del programa fuente
```


```
/*
                                EJEMPLO 4-1
                        Autor: Mikel Etxebarria
                        Orozko-Bizkaia, Septiembre 2010

El oscilador interno

Al seleccionar el oscilador interno, la frecuencia de trabajo se puede modificar dinámicamente
ajustando los bits IRCF2:IRCF0 del registro OSCCON (postcaler de INTOSC). En este ejemplo el
valor binario de las entradas RA2:RA0 se emplea para actualizar el OSCCON y seleccionar así
diferentes frecuencias de trabajo.

RB0 cambia de estado cada cierto tiempo mediante el empleo de una rutina de temporización que 
consume unos 500000 ciclos (Tc). Al variar la frecuencia de trabajo, se varía la duración de cada
cilco (TC) y por tanto el tiempo en el que RB0 cambia de estado y que se puede apreciar claramente
Los tiempos se resumen en la siguiente tabla

RA2:RA0    F            Tc            Tiempo
------        --------    -------        ----
000        31 KHz        129 uS        64.5 s
001        125 KHz        32 uS        16 s
010        250 KHz        16 uS        8 s
011        500 KHz        8 uS        4 s
100        1 MHz        4 uS        2 s
101        2 MHz        2 uS        1 s
110        4 MHz        1 uS        0.5 s
111        8 MHz        0.5 uS        0.25 s 
*/

#include <16f886.h>

/* Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades */

#fuses     NOLVP,PUT,NOWDT,EC_IO,NOFCMEN,NOBROWNOUT    //Palabra 1 de configuración
#fuses    NOWRT,BORV40                                //Palabra 2 de configuración

/* Con estas directivas las funciones "input" y "output_bit" no reprograman
el pin de la puerta cada vez que son utilizadas. Si no se indica el
modo fast_io se asume por defecto standard_io el cual reprograma el pin
siempre antes de ser utilizadas estas funciones.*/

#use fast_io (A)
#use fast_io (B)

int Temp_0;
int16 i;

main()
{
      output_b(0x0);                    // Borra las salidas
     setup_adc_ports(NO_ANALOGS);    //Puertas A y B Digitales
      set_tris_a(0b01111111);          // RA0-RA6 se configuran como entradas
    set_tris_b(0b11111110);          // Puerta B se configura como salida

//Oscilador interno a 4MHz como fuente prinipal de reloj inicialmente
    setup_oscillator(OSC_INTRC|OSC_4MHZ);

     while(1) 
    {
    output_toggle(PIN_B0);            //RB0 Cambia de estado
    for(i=1;i<2000;i++)
        delay_cycles(250);            //Temporiza el equivalente a 500000 ciclos de instrucción aprox.
                
    Temp_0=input_a()&0x07;            //Lee las entradas RA2:RA0
    rotate_left(&Temp_0,1);
    rotate_left(&Temp_0,1);
    rotate_left(&Temp_0,1);
    rotate_left(&Temp_0,1);            //Ajusta a la posición de los bitas IRCF2:IRCF0
    setup_oscillator(Temp_0|0x01);
    }      
}
```

Si quieres más precisión, usas el Timer o te fijas en el 16F88. El 16F886, 16F887 y el 16F88 son muy similares, pero de distinto cantidad de pines.

Un saludo.


----------



## handyss (Abr 11, 2012)

bueno, la verdad es que me das informacion muy buena. la voy a imprimir y me la estudio un poco. pero ahora tengo que hacer una pausa en este camino ya que el lunes tengo los examenes del IOC de acceso a grado superior y quisiera aprovarlos. 
dentro de unos dias te comento como lo llevo.
de nuevo gracias.


----------



## Meta (Abr 11, 2012)

Entendido, suerte con los exámenes.


----------



## handyss (Abr 12, 2012)

Hola, no me había dado cuenta de un fallo que veo. en el esquema unipolar, la persona que lo dibujo he hizo el programa para el pic16f84a, puso en el programa que el crystal era a 32768Hz y en el esquema a 32768KHz. se sabe cual es el correcto? yo creo que el del programa, pues el error de la placa es de texto mientras que el del programa haría que no funcione. es correcto?


----------



## Kalamarus (Abr 12, 2012)

Buenas Handyss. Si lo que quieres es un oscilador para contar segundos, el que debes usar es el de 32768Hz. Hz! no KHz!

Por cierto, suerte con los examenes, yo ya los hice hace tiempo, y no me arrepiento en nada! Que CFGS vas a hacer? Saludos y suerte!


----------



## handyss (Abr 12, 2012)

Pues casi que no me queda presupuesto para seguir estudiando. Pero estoy casi decidido a diseño de componentes electrónicos. De siempre me ha gustado investigar hacer halgo y me desintereso mucho cuando funciona. Seria ideal estar siempre con prototipos. 
Si sabes o puedes. Necesito una mano con un programa. Meta me ha ayudado mucho pero no entiendo ni la mitad del programa para terminarlo pues aunque me gusta no se hacerlo. 
te adjunto el codigo original y el esque ma original. y tambien el esquema nuevo y la adaptacion que me paso meta. si simulas el original en proteus, veras que avance = motor avanza 48 pasos por minuto y se para dandole al stop, adelante= avance rapido y atras= retroceso rapido.
la idea es que el original usa motores unipolares pero yo tengo dos bipolares y queria aprobecharlos.
expongo esquemas y programas.
se me olvidaba, el original es para 16f84a y quiero usar el 16f88 ya que lo tengo en casa.

originales para pic 16f84a:
madero original.txt y circuitocontrolplanchet.jpg

y los resultados aportados por meta al cual estoy muy agradecido:
para pic16f88 son los otros dos archivos para bipolares


----------



## juan47 (Abr 15, 2012)

META a tu pregunta en el codigo de que significa RTCC, simplemente decirte que la linea es clrf RTCC y se esta en el banco 0, y tiene EQU 0x01 con lo cual es que se carga el valor 0 en TMR0 para asi efectuar los tiempos en la interrupcion
handyss solo comentarte que META te ha hecho toda la faena, en los esquemas que te ha puesto él con motor bipolar tienes que cambiar el 16f84 por el 16f88 que es el que tienes y compilar el programa que, me repito , META te adjunto con el 16f88
Buena suete con tu proyecto  IOC y tambien con este
Un saludo


----------



## handyss (Abr 15, 2012)

Quizas he hecho algo mal al compilar. me gusta el tema pero estoy verdisimo. al probar la compilacion en hex que meta me paso. lo probe en proteus con el esquema del bipolar y creo, que con el 16f88, pero lo repetire a ver si hice algo mal. el caso es que funciono pero no exactamente como la prueba en el original con el unipolar. tenia alguna funcion de botones que no hacia lo esperado. repito prueba a ver. y sobre todo, mil perdones a Meta por no haber sabido aprovechar su esfuerzo a la primera. tengo algun minimo conocimiento general pero a base de que como me gusta he ido construyendo algunas cosas pero nunca lo he estudiado.


----------



## Meta (Abr 15, 2012)

Es verdad, ahora que lo dices, el RTCC estaba a 1.

Sólo corrige esa parte haber que tal.


----------



## handyss (Abr 15, 2012)

Hola, he copiado la seccion avance del programa donde esta la unica instruccion del tema rtcc:

;****************************************AVANCE********************************
;                   SOLO SE SALE CON STOP
;******************************************************************************

AVANCE    
    ;CLRF    RTCC ¿Qué es RTCC? Si lo djo, da error.
    NOP    
    NOP
    BCF    INTCON, INT0IF
    BSF    INTCON,    GIE
    BSF    INTCON, INT0IE

QUEDA    
    BTFSS    PORTA, 3
    GOTO    PARA
    GOTO    QUEDA
asi es como la tengo en texto y solo sale en esta ocasion, que yo haya visto. como se sabe si esta en 0 o 1? como se cambia si no veo como esta? 
por otro lado editando el original, veo que tiene esta linea: 

RTCC    EQU 0X01
por lo que voy pillando. creo que es la asignacion de direccion de memoria que se le da a rtcc. pero no veo cual es el equivalente en el del 16f88. 

otra cosilla. sabeis si el curso de Diseño de componentes electronicos se puede hacer online? si el lunes aruevo, me gustaria entrar en materia al fin.


----------



## juan47 (Abr 15, 2012)

Revisa este Hilo https://www.forosdeelectronica.com/f24/asm-desde-0-asm-desde-cero-16898/ te ayudara a entender todo sobre PIC
Y si tienes dudas comentalas

Un saludo


----------



## handyss (Abr 15, 2012)

ok gracias. seguro que las habra. pero si puedo no las hago. me encanta resolver las dudas solo. es como hacer crucigramas sin mirar las soluciones de la ultima pagina. lo unico que cuando no sale pues...ya me entendeis, seguro que no se os ha olvidado cuando enpezais en algo desde cero. de la misma manera si puedo ayudaros en algo. astronomia, photoshop, algo de solidworks. etc. solo teneis que pedirlo.


----------



## Meta (Abr 15, 2012)

Hola:

Si miras la hoja de datos del PIC16F84A y el PIC16F88. En el 16F84A no aparece nada del RTCC ni el realmente llamado RTC. En el 16F88 aparecen varias páginas del RTC, no RTCC.

En el 16F88, página 73.


> 7.0 TIMER1 MODULE
> The Timer1 module is a 16-bit timer/counter consisting
> of two 8-bit registers (TMR1H and TMR1L) which are
> readable and writable. The TMR1 register pair
> ...


Página 78.


> 7.11 Using Timer1 as a Real-Time
> Clock
> Adding an external LP oscillator to Timer1 (such as the
> one described in Section 7.6 “Timer1 Oscillator”)
> ...


Página 79.

```
EXAMPLE 7-3: IMPLEMENTING A REAL-TIME CLOCK USING A TIMER1 INTERRUPT SERVICE
TABLE 7-2: REGISTERS ASSOCIATED WITH TIMER1 AS A TIMER/COUNTER
RTCinit BANKSEL TMR1H
MOVLW 0x80 ; Preload TMR1 register pair
MOVWF TMR1H ; for 1 second overflow
CLRF TMR1L
MOVLW b’00001111’ ; Configure for external clock,
MOVWF T1CON ; Asynchronous operation, external oscillator
CLRF secs ; Initialize timekeeping registers
CLRF mins
MOVLW .12
MOVWF hours
BANKSEL PIE1
BSF PIE1, TMR1IE ; Enable Timer1 interrupt
RETURN
RTCisr BANKSEL TMR1H
BSF TMR1H, 7 ; Preload for 1 sec overflow
BCF PIR1, TMR1IF ; Clear interrupt flag
INCF secs, F ; Increment seconds
MOVF secs, w
SUBLW .60
BTFSS STATUS, Z ; 60 seconds elapsed?
RETURN ; No, done
CLRF seconds ; Clear seconds
INCF mins, f ; Increment minutes
MOVF mins, w
SUBLW .60
BTFSS STATUS, Z ; 60 seconds elapsed?
RETURN ; No, done
CLRF mins ; Clear minutes
INCF hours, f ; Increment hours
MOVF hours, w
SUBLW .24
BTFSS STATUS, Z ; 24 hours elapsed?
RETURN ; No, done
CLRF hours ; Clear hours
RETURN ; Done
```







Puedes llamar en la RAM RTCC 0x01 como me has presentado y me lo salté sin darme cuenta.

Puse el RTCC como lo tenías al principio y me compila ahora, antes no porque borré el EQU sin darme cuenta. Prueba el Hex, que puedes descargar y nos cuentas.

Saludo.


----------



## handyss (Abr 15, 2012)

muchisimas gracias. ahora mismo lo voy a probar.
la verdad es que cuato mas profuncizo mas miedo me da la materia. realmente es tan dificil como parece?
yo hice 6 meses de lenguaje c con 18 años y empece que nunca habia tocado un pc y acabe entre los 5 primeros. pero no recuerdo casi nada. nunca lo use. pero en asm me parece chino. y es tan basico asignando asta las direcciones de memoria donde se ubican los datos que me resulta dificil pensar en acabar algo solo y que funcione. por otro lado. sabeis si existe este posibilidad de cursarlo a distancia. trabajando no podre conbinarlo y he descubierto que a distancia puedo hacer conbinaciones que de otra manera no podria.
asta ahora.


----------



## Meta (Abr 15, 2012)

Hola:

Hay cursos de PIC presencial muy caro. Por experiencias de la gente, no vale la pena. Te enseña lo básico y luego búscate la vida, para eso ser autodidacta.

Estoy aprendiendo ASM gracias al www.pic16f84a.org buenísimo para empezar. Luego con otro que tiene el 16F886 ASM y C del CCS.

No se si te funcionará el invento del RTCC.

Un saludo.


----------



## handyss (Abr 15, 2012)

Hola de nuevo. espero que mis conclusiones no sean erroneas para no hacer confundir a nadie. pero lo que veo es que al darle al estop, todo queda desactivado, pin2. en este estado si se pulsan cualquiera de los botones adelante o atras, pines 17 y 18, funciona a velocidad rapida adelante o atras. pero si se da al boton avance, pin 1, deberia de avabzar pero en su lugar, todo queda congelado y no se mueve nada con ningun botos, excepto claro el de stop que lo libera de la congelacion permitiendo el avance y retroceso.
creo que le falta muy poco y que loque falla debe de estar en la manera de decidir que de el paso siguiente en el estado de avance. al no suceder la condicion de avance, queda esperando bloqueado a que se pulse el boton de stop.
gracias por lo otro tambien. que me recomiendas para estudiar de acceso superior. me gusta la electronica, pero que rama en concreto. decian que se podia estudiar dieño de componentes electronicos. poro no veo ningun curso que explique en que consiste. todos son un lio y por el propio nombre no veo a que puesto de trabajo me orientan. como decidir que hacer?


----------



## Meta (Abr 15, 2012)

Buenas:

Desde que te metas en electrónica general, te van a reventar con electrónica analógica, luego la digital. Tendrás la base. Todo llegará.

Comprueba ahora las cosas.
V3 incluye los registros originales del 16F84 que me diste incluyendo el propio LIST, en cuanto al V4, sin el LIST y con los registros que me diste.

Si no funciona así. Hay que pantear desde 0 ese motor.

Saludo.


----------



## handyss (Abr 15, 2012)

hola, siento dar tantas molestias. el caso es que no veo que hayan diferencias en como funcionan ninguna de las tres versiones. al dar a avance no da pulsos y se bloquea. solo sale con el stop de ese bloqueo y cuando no esta bloqueado funciona el avance y retroceso rapido bien.
he hecho un circuito nuevo solo con los botones y el 16f88 ya que me daba miedo haber hecho algo mal con la electronica. las pruebas las he hecho con esto que te adjunto. nunca fisicamente siempre en proteus.

Edito: se me ocurre que hagas una prueba tu con proteus que si ago algo mal lo veras. mas que nada para que tanto esfuerzo tuyo sirva para algo y no lo desperdicie yo por alguna tonteria.

Edito-2:he vuelto a hacer una prueba que me rondo por la cabeza. he cogido el esquema con el 16f84a donde trabajaba bien con unipolar y le puse el archivo hex ultimo v4 a ver que hacia. y resulta que trabaja con las mismas condiciones que con el 16f88 en bipolar con los mismos fallos. es decir, como si no dependiera de que chip se simula. o como si las instrucciones de movimiento para bipolar no estubieran bien. se me ocurre vaya.


----------



## Meta (Abr 15, 2012)

Hola:

El esquema parece bien.
No me acuerdo que motor usas. ¿Cuántos hilos tienes?
Mejor empezar desde cero. Tienes que saber cuantos pasos son ese motor que tienes.
Así programamos desde cero.
El quema base lo tienes.

Si no son los registros, es la forma de programar que tienes en el botón de avanse. Algo no tienes bien. Revisa de arriba abjao el avanse.

Saludo.


----------



## handyss (Abr 15, 2012)

bueno, si quieres hayudarme te lo agradezco. quizas sea mejor empezar desde cero.
mi motor es bipolar de 48 pasos 4 hilos.
si es mas facil para ti me compro el chip que me digas y pasamos de los 16f88 que tengo en casa y ya le dare salida en otra ocasion.
el planteamiento general es que el motor puede estar parado, de hecho ha de iniciar en parado. avance lento en sentido orario, esto lo hare configurando el montaje de los hilos, a una velocidad de 1 rpm.
si le doy a estop se para y no responde a nada mas.
cuando le he dado a stop y esta parado. puedo elegir avanzar deprisa y si suelto el boton se para, retroceder deprisa y si suelto se para o volver a hacer el avance a 1 rpm que aunque suelte no se para asta que le doy a stop.
velocidad rapida es entre 40 y 100 vueltas por minuto digamos 60 rpm.

me voy a dormir que mañana se me juntaran las letras en el examen.


----------



## Meta (Abr 15, 2012)

Hola:

Entonces te fijas en el esquema que te puse el principio aquí. Luego lo pasamos al 16F88.
https://www.forosdeelectronica.com/...pic16f84a-control-motor-pap-73005/#post638095

Los asm están aquí. Hay que analizar como funcionan estos motores y lo adaptamos al tuyo y con el 16F88.

Ver el archivo adjunto 70387

Saludo.


----------



## juan47 (Abr 16, 2012)

Perdonadme he probado en circuito real , estoy haciendome una bibinadora, con un PIC 16f84A un puente en H y un motor bipolar con el codigo madero%original(1).ASMy funciona bien tanto en adelante como atras y avance con su correspondiente stop. La modificacion que me ha requerido hacer es en la etiqueta TIEMPO pues es tan bajo su valor que no escitaba el suficiente tiempo como para mover los polos del motor 
Dejo los archivos, handyss,  para que asi puedas practicar y decirnos como te va



Adjunto los archivos


----------



## handyss (Abr 16, 2012)

hola juan47. no me fio de como pueda compilar yo pues recien empece a usar el programa y puede compilar algo mal por error de inexperto. El madero original lo he podido probar en unipolar con proteus y no me da mas problemas. lo que no veo como funciona bien con motor bipolar. en principio donde lo encontre decian que era para unipolares.
por mi inexperiencia, lo del puente en h solo lo tengo concebido para rectificar alterna. me gusteria ver el esquema que aplicas. por otro lado, intentare compilar yo mismo pero me gustaria si no consigo el exito que lo pusieras ya compilado tambien, que no tengo muy poca experiencia con el mplab y tengo miedo que no anden los programas por hacer algo mal y no detectarlo.
voy a hacer alguna prueva y os cuento.
por otro lado, el primer asalto con los examenes ha ido mejor de lo que me temia. solo ingles se que no aprobare, pero es que se han pasado de nivel. todos nos quejabamos de lo mismo. pero como lo que cuenta es la media...



he intentado compilar y mira:


```
Debug build of project `C:\Users\pedro pavo\Documents\pic-pruebas\16f84A\madero descargado.mcp' started.
Language tool versions: MPASMWIN.exe v5.33, mplink.exe v4.33
Preprocessor symbol `__DEBUG' is defined.
Mon Apr 16 20:42:10 2012
----------------------------------------------------------------------
Make: The target "C:\Users\pedro pavo\Downloads\madero-descargado.o" is out of date.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "madero-descargado.asm" /l"madero-descargado.lst" /e"madero-descargado.err" /d__DEBUG=1
Error[105]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 17 : Cannot open file (Include File "16F84A.INC" not found)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 39 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 39 : Symbol not previously defined (RP0)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 41 : Symbol not previously defined (TRISB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 43 : Symbol not previously defined (TRISA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 45 : Symbol not previously defined (OPTIO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 46 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 46 : Symbol not previously defined (RP0)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 48 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 54 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 54 : Symbol not previously defined (RA0)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 56 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 56 : Symbol not previously defined (RA1)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 58 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 58 : Symbol not previously defined (RA2)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 60 : Symbol not previously defined (PUERTAB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 67 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 67 : Symbol not previously defined (RA0)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 72 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 72 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 84 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 84 : Symbol not previously defined (RA1)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 89 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 89 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 100 : Symbol not previously defined (TMR0)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 103 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 103 : Symbol not previously defined (TOIF)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 104 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 104 : Symbol not previously defined (GIE)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 105 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 105 : Symbol not previously defined (TOIE)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 106 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 106 : Symbol not previously defined (RA3)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 112 : Symbol not previously defined (PUERTAA)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 112 : Symbol not previously defined (RA3)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 114 : Symbol not previously defined (PUERTAB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 115 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 115 : Symbol not previously defined (GIE)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 116 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 116 : Symbol not previously defined (TOIF)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 131 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 131 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 134 : Symbol not previously defined (PUERTAB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 139 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 139 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 142 : Symbol not previously defined (PUERTAB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 147 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 147 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 150 : Symbol not previously defined (PUERTAB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 155 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 155 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 158 : Symbol not previously defined (PUERTAB)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 168 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 168 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 174 : Symbol not previously defined (ESTADO)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 174 : Symbol not previously defined (Z)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 180 : Symbol not previously defined (INTCON)
Error[113]   C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 180 : Symbol not previously defined (TOIF)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\Users\pedro pavo\Documents\pic-pruebas\16f84A\madero descargado.mcp' failed.
Language tool versions: MPASMWIN.exe v5.33, mplink.exe v4.33
Preprocessor symbol `__DEBUG' is defined.
Mon Apr 16 20:42:11 2012
----------------------------------------------------------------------
BUILD FAILED
```


----------



## Meta (Abr 16, 2012)

El primer archivo me compila a 4MHz y oscilador XT.

El primer error, falta el LIST que nunca les gusta poner a ustedes. Xddddddd.

Ya me dirán si funciona. Se pueden descargar el ASM del amigo de arriba pero con el LIST y el HEX compilado correctamente.

Saludo.


----------



## handyss (Abr 16, 2012)

Hola Meta. el hex que hay en el zip que has puesto, no me mueve nada ni en el 84a con unip. ni con bipo. ni en el 88 en bipol. he observado las salidas de los pics y en el proteus no veo excitacion o cambio de estado en las salidas al uln2003/l293. seria bueno que juan47 nos pusiera el hex compilado para probarlo. si funciona con bipolar en el 16f84a ya estariamos en puertas.


----------



## Meta (Abr 16, 2012)

Este  hex es creado en base del pirmer ejemplo que puso @juan47.

Probando el de MAdero. Me dio los mismos fallos, los he corregido uno a uno, no me queda otra. Ahora compila bien, no por ello debe tener el funcionamiento esperado.



> ---------------------------------------------------------------------
> Debug build of project `D:\PAP_PIC16F84A\PAP_16F84A.mcp' started.
> Language tool versions: MPASMWIN.exe v5.44, mplink.exe v4.42, mplib.exe v4.42
> Preprocessor symbol `__DEBUG' is defined.
> ...




```
;********************************************************
;
;    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        <P16F84A.INC>
    __CONFIG    _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

;*******************************
;    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            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, T0IF                                ;Bandera TMR0            
                BSF            INTCON,    GIE                                    ;Interrupcion general
                BSF            INTCON, T0IE                                ;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, T0IF            
                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, T0IF                                            ;BOORO BANDERA
                RETFIE


                    END
```

Puedes descargar el hex abajo del PIC16F84A a 4 MHz de XT.

Saludo.


----------



## handyss (Abr 17, 2012)

Hola. lo he estado probando con el circuito 16f84a + motor unipolar dando buenos resultados. adjunto las imagenes. las 4 son del 16f84a. tambien adjunto las del 16f84a con motor bipolar y su correspondiente l293.
por las señales que se ven, y no es que entienda yo mucho, yo  me quedo con que estamos al principio. 16f84a para unipolar. pero seguro que se ha corragido lo del tiempo de excitacion que yo no detectaba con el proteus. o no sabia como detectarlo.


----------



## juan47 (Abr 17, 2012)

Los errores de compilacion que muestras es devido a que no tienes el archivo 16F84A.INC  abierto. Te descargue los archivos con extension .TXT pues no tenia mucho tiempo
Una recomendacion que te doy, porque no se si lo haces de esta manera, es de desacargar los dos archivos en una sola carpeta que por ejemplo abras en el escritorio y poner los dos archivos con extension .TXT que puse
Despues abres el MPLAB y abriendo por ejemplo, desde el mismo MPLAB, el archivo madero.txt despues lo guadas en la misma carpeta pero con extension .ASM.Una vez efectuado la anterior operacion abres, en el MPLAB, el archivo 16f84A.txt y lo guardas en la misma carpeta con extension .INC te debera
 constar cuatro archivos en la carpeta deseada, dos con extension .TXT y otros dos que seran madero.ASM y el siguiente 16f84A.INC

Error[105] C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 17 : Cannot open file (Include File "16F84A.INC" not found)Este mensaje suele salir cuando compilas y los archivos se encuentran en diferentes carpetas por eso es aconsejable poner siempre los archivos a compilar esten en la misma carpeta, como te he comentado anteriormente

Error[113] C:\USERS\PEDRO PAVO\DOWNLOADS\MADERO-DESCARGADO.ASM 180 : Symbol not previously defined (INTCON)
Referente a este mensaje es devido a que como no ha encontrado el archivo 16f84A.INC pues el compilador no sabe sustituir letras por numeros binarios, por ello en el archivo 16f84A.INC se le da unos valores a las palabras o letras

Porfavor puedes poner el esquema que utilizas en PROTEUS, para saber si has conectado correctamente los componentes. El que lleva el 16f84, l293 y motor bipolar

Un saludo


----------



## Meta (Abr 17, 2012)

Hola:

@juan47, arriba lo puse bien y compila. Aún así, gracias por la aclaración.

@handyss, si todo anda bien, encontes muestra el código para adaptarlo al 16F88.

Por cierto. ¿Qué código usaste realmente?
No se cual has usado para que luego te funcione de repente, jejejeej.

Saludo y suerte.


----------



## handyss (Abr 17, 2012)

hola. te adjunto comprimido el contenido de lo que me mandaste para hacer las pruebas al principio. esto lo modifique para varias versiones. una es la bipolar con 16f84a que solo rectifique los botones. sobraba uno y nombre el avance para distinguierlos.
el dibujo con el l293 de proteus no me funciona, seguro que no he puesto bien el patillaje, lo hice desde cero. no te lo incluyo. y el montaje para unipolar tampoco lo incluyo, pero esta basado en el original y funciona parece que bien. tampoco lo incluyo. los pondre luego.



Hola de nuevo. pongo este mensaje para dos cosas. la primera es que presteis especial observacion a la frecuencia de trabajo. este programa esta diseñado para 32765HZ, no Khz. si me confundo corregirme, pero en proteus no funciona bien cuando le pongo los valores en KHZ en el pic.
por otro lado, subo un comprimido con las versiones que me funcionan. la original en 16f84a y la ultima que puso Meta que tambien funciona pero es diferente, ver la lectura del osciloscopio. es como si duplicara los pulsos, pero solo cuando va rapido. en velocidad 1rpm esto no pasa. no se que significa.


----------



## Meta (Abr 17, 2012)

Hola:

Me alegro de que te funcione. No puedo probarlo porque no tengo proteus ahora mismo.

Escoge el mejor que se adapte a tus necesidades del 16F84A para adaptarlo al 16F88. Me dices cual es y lo adapto, luego lo pruebas.

Saludo.


----------



## handyss (Abr 17, 2012)

los dos se adaptan bien. pero solo son en motor unipolar. habria que asegurar en bipolar y creo que no va. 
el original decian que tenia el fallo de mantener poco el pulso y parece que con el nuevo esto se arregla, pero sigue siendo unipolar.
el arreglo y adaptacion, seria para el segundo, y despues hacerlo ir en bipolar.
no se si es muy diferente la programacion del pic para bipolar, o la faena la realiza el l293 solito con los pasos del unipolar. aqui juan puede hecharnos una mano a ver si lo sabe convertir a bipolar.
bueno. me voy a comer y a la segunda tanda de examenes. mates, tecnologia y dibujo tecnico.


----------



## Meta (Abr 17, 2012)

Si es diferente como un camión a una moto, aunque los dos tengan ruedas y motores.


----------



## juan47 (Abr 17, 2012)

handyss dejame que amablemente te estire un poco de las orejas

META te dio la hoja de datos del l293 y parece que no la has leido o no la has entendido
Tambien decirte que no todos tenemos proteus, he perdido tiempo en descargarme la demo, para poder ver el esquematico y darme cuenta de porque no te funciona
Otra cosa mas y asi te dejo las orejas, es de que pasar un archivo de HEX a ASM para asi poder leerlo con soltura, es un engorro increible por favor si quieres que se te ayude facilita los archivos siempre en ASM, TXT, WORK que con ello es mas rapido de ponerlo en el programa MPLB
No he podido revisar los programas por el motivo comentado ya que estan en HEX y no se si provienen de los que ya estan o si hay modificaciones

He mirado en el esquematico y en el archivo adjunto te he puesto dos lineas en diferente color
que son las que no te dejan operar bien el programa ellas son las que dejan operativo o no las salidas del l293 revisalo bien y los programas iran de maravilla 
Te digo ello poque en el codigo de madero nunca se trabaja con RB4 y RB5

Me alegro de que los examenes los puedas ir solventando

Un saludo



despues subo archivo


----------



## handyss (Abr 17, 2012)

Hola, aya paz. jaja. bien venido el estiron y bien aceptado.
me explico, lo mire pero lo que no entendi es el ejemplo de bipolar que usaba una adaptacion con 4 74...., el caso es que intente entender este y adaptarlo al L293 segun el datasheet, pero no andaba, y entre examenes y pruebas de proteus, pues...de todas maneras para resolver la duda es lo segundo, no acabe de entender mucha cosa, ya no se si no la entendia o me comian los nervios de los examenes.
perdona con los archivos. pero no contaba con la revision del asm pues ya han estado colgados y ambos asm los compilo Meta, yo los subi con la idea de poder probarlos bien en proteus o bien fisicamente. ni me imagino el calvario de decompilarlos o como se diga, jeje. miro si se cuales eran y no me vaya yo a lias y los subo. o si Meta lo tiene mas claro que suba las versiones de asm que compilo. el 16f84A-1-2.HEX es el segundo que puso meta ya que el primero no me andaba, por eso el 2. y el madero original, fue el primero que me compilo.
espero el archivo. seguir aprendiendo es mi fin.


----------



## juan47 (Abr 17, 2012)

Abre el archivo y he dibujado en otro color las conexiones a RB4 y RB5 
estas conexiones las quitas del integrado y las pones a un positivo del esquema 
Tambien las puedes dejar el esquema como esta  y en el codigo que vallas a utilizar, en la zona de pulsos
;***************************************PULSOS*************************************

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

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

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

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

FINAL			RETURN

pones los unos que he puesto en verde corresponden a la salida RB4 y RB5

Un saludo


----------



## Meta (Abr 17, 2012)

Parece ser que debo corregir la lista List para luego compilarlo.

Donde pone PUERTAB, el que te di es PORTB. Donde pone ESTADO es STATUS, así que no te vuelvas loco.

Mejor súbele el código completo que si no se vuelve loco. 

Ya nos contará, si no puedes, lo compilo yo mismo.

Saludo.


----------



## handyss (Abr 17, 2012)

Veré que puedo hacer cuando llegue a casa que ahora estoy fuera. Pero os adelanto que no se si lo entiendo. Cuando lo pueda abrir que ahora estoy con el relefono cuento.


----------



## handyss (Abr 17, 2012)

Hola. he optado por redibujar el esquema bipolar. asi practico. el tema es que en lugar de mirar el datasheet del l293, he seguido el esquema de ejemplo que puso Meta. no se porque no lo hice antes. ahora hace el caballito o va errante o loco, el caso es que no acabo de conseguir que con el archivo hex. que subio meta funcione. creo que es normal porque creo que es para la bici, digo para el 16f84a , jeje. lo de la modoficacion, no se sobre que tengo que hacerla, ya me he liado un poco. Meta, rescatame y si lo has pillao mandame el hex. 
adjunto el esquema en jpg. cuando acabemos, subire los planos del instrumento para que mi parte se vea por algun lado. son los instrumentos de madera con control de inclinacion a bisagra que permiten seguir las estrellas con este esquema y motorizado. ya sea con unipolares de la pagina original o bipolares cuando se terminen de hacer funcionar. es caso es que el trasto sigue las estrellas con un calculo de 1 segundo de arco de error trar 1h. de seguimiento. bamos, por decir algo, es lo que tiene de angulo 1€ a 100 metros o mas lejos. como ejemplo real, la luna mide unos 30 minutos de arco. es decir 1800 veces mas.





Meta dijo:


> Parece ser que debo corregir la lista List para luego compilarlo.
> 
> Donde pone PUERTAB, el que te di es PORTB. Donde pone ESTADO es STATUS, así que no te vuelvas loco.
> 
> ...



Jajaja. cuando lo lei en el mobil, entendi que el que se volveria loco era el motor. yo despues de los 6 examenes, un nivel de 2º de baxillerato en 6 meses, los calculos y el diseño de la nueva cnc que tengo apunto de empezar a fabricar y los calculos de la plancheta ecuatorial cuasi perfecta (ojala fueran realmente misos) son de una web. yo ya estaba loco cuando llegue. jeje.


----------



## juan47 (Abr 18, 2012)

Con el esquema que as puesto modificado y el achivo maderoJ.HEX que viene adjunto prueva
Un saludo


----------



## handyss (Abr 18, 2012)

que bueeennnoooo. ahora el avance funciona y si, confirmo que la frecuencia del calculo son 32768 hz, no khz. en avance da una vuelta al minuto. pero se me pasaba poner el motor en 7.5º o lo que es lo mismo 48 pasos por vuelta. ahora, las velocidades rapidas tienen dos, cosas. la primera es que correr no corre y la segunda, posible causa de la primera es que hace un poco el caballito. subire en 2 minutos las imagenes del osciloscopio. la de velocidad rapida evidentemente ampliada pues no se distinguen las crestas en detalle sino.
muchas gracias.
una pregunta, si quereis lo dejamos aqui. me compro el 16f84a o lo adaptaremos al 16f88?
ya he causado demasiada molestia y siento que estoy abusando de la voluntad y paciencia de la gente.


----------



## Meta (Abr 18, 2012)

Hola:

Como me alegro que te haya funcionado, felicidades. Si quieres pasarlo al 16F88 encantado. Pon aquí el código fuente completo del 16F84A del que te funciona y listo.

El 32768 es frecuencia de reloj. El 16F88 tiene un oscilador interno que funciona a esa frecuencia, para que lo sepas. Lo que programarlo no la recuerdo, de todas formas está en eldatasheet.

Sólo adapto del 16F84A al 16F88, porque este último cada vez es más usado.

Saludo.


----------



## handyss (Abr 18, 2012)

por mi estupendo. total el cristal ya lo tengo. muchas gracias a vosotros que os lo estais currando. lo que me consuela es saber que cuando terminemos la electronica de aqui saldra la informacion para construir completamente un "maderografo" jaja. estos lo normal es que el motor sea un dedo dando vueltas a un tornillo, pero es un rollo. aqui se motoriza y queda perfecto.

se me olvidaba. el codigo lo tendria que poner juan, pues lo hizo el y lo compilo, solo tengo el hex. por eso funciona. a saber si lo compilo yo si va, jaja.


----------



## Meta (Abr 18, 2012)

Si lo desea, él puede poner el código completo. Así lo adaptamos.
Un saludo.


----------



## juan47 (Abr 18, 2012)

Perdonad pero yo no he hecho el codigo, soy vosotros los que habeis dado vida a este apartado
El unico problema era que en el esquema del bipolar, con el cual handyss hacia las pruebas que descargo
Meta, las patillas del l293 no tenian que estar conectadas (RB4-RB5) pues el codigo no refleja esa posivilidad
El .HEX que descargue es el mimo, de la compilacion de los dos archivos que baje con extension .TXT
Para cambiar al 16f88 solo tienes que hacer dos cosas
Primero en el esquema cambiar el 16f84A por el 16F88 cuidando la circuiteria que ya tienes
Segundo es compilar el codigo que ya facilito Meta del 16f88, pero ojo el archivo .INC no utilices el que ofreci pues yo lo pongo en catellano y dara error en la compilacion, utiliza el otro y si no los diferencias 
los abres en MPLAB y si te pone ESTADO es el mio, si pone STATUS el que tienes que utilizar

UN saludo enorabuena a los dos
P.D. Meta como va el proyecto de la lavadora?


----------



## Meta (Abr 18, 2012)

Hola:

Usaré el LIST del 16F88 y las configuraciones, lo demás es todo igual. Es fácil adaptarlo.

Saludo.

PD: Investigando cada paso día a día. más detalle de la lavadora aquí.


----------



## handyss (Abr 18, 2012)

Gracias por todo. Una duda. Revisando y comparando los resultados del osciloscopio creéis que ira bien a velocidad rápida. Mirar el orden de los pasos y como se producen? Es que lo veo raro


----------



## handyss (Abr 18, 2012)

Hola, juan47, podrias ponernos el codigo fuente de la ultima solucion maderoj. es la que funciona en avance bien y creo que solo la tienes tu. 
por otro lado, tu bobinadora funciona con unipolares o bipolares? si es el segundo caso. te funciona bien a rapida con el adelante y atras? es que en el simulador maderoj.Hex me hace caballitos y no se si es por el orden de los pasos que sea diferente para el avance que para lo demas o por los dobles inpulsos para que tubiese mas fuerza que cambiaste. tu que crees que puede ser?


----------



## juan47 (Abr 18, 2012)

El codigo fuente de maderoJ.HEX son los archivos que puse madero.TXT y 16f84A.TXT
Si creo que es en la secuencia de paso pero aun no he podido descartar nada pues le dedico poco tiempo
la Maria se enfada mucho Je Je!!


----------



## handyss (Abr 18, 2012)

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.


----------



## handyss (Abr 18, 2012)

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?


----------



## handyss (Abr 18, 2012)

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?


----------



## Meta (Abr 18, 2012)

handyss;643817pero si esto es asi dijo:
			
		

> Buenas campeón:
> 
> Los INC son estandar. En tu caso no lo usabas como estandar, de ahí los problemas.
> 
> ...


----------



## handyss (Abr 18, 2012)

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.


----------



## Meta (Abr 18, 2012)

Hola:

Entonces lo compilabas a 20MHz por defecto. Por eso te da resultados de que el motor se vuelve loca.

Mira la página 35 y 36 aquí.

Saludo.


----------



## handyss (Abr 19, 2012)

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.


----------



## juan47 (Abr 19, 2012)

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


----------



## Meta (Abr 19, 2012)

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.


----------



## handyss (Abr 19, 2012)

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.


----------



## juan47 (Abr 20, 2012)

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


----------



## Meta (Abr 20, 2012)

Gracias, voy a investigar.

Lo que no se para que hiciste ir directemente a la dirección 8.

ORG	0X0008

Estoy con el código.

Saludo.


----------



## Meta (Abr 20, 2012)

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.


```
;********************************************************
;
;    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.


----------



## handyss (Abr 20, 2012)

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.


----------



## Meta (Abr 20, 2012)

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.






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.



 *Cambiar el conteo de la RAM de 0x0C a 0x20.*
* Adaptarlo al osiclador externo del XT 4MHZ a LP por 32768 Hz en la configuración.*
* Pasar de entrada analógico del registro ANSEL a digital.*
*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.


```
;********************************************************
;
;    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.


----------



## handyss (Abr 21, 2012)

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.


----------



## juan47 (Abr 21, 2012)

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


----------



## Meta (Abr 21, 2012)

Si al final no te funciona, esta vez no puedo ayudarte.

Saludo.


----------



## handyss (Abr 21, 2012)

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.


----------



## Meta (Abr 21, 2012)

Entonces es cosa de la programación. Habla con Juan47.


----------



## handyss (Abr 21, 2012)

Meta dijo:


> Entonces es cosa de la programación. Habla con Juan47.



Meta. la primera version de madero.txt. la original del mensaje nº 20. se podria facilmente cambiar a 16f88 y que funcionara en unipolar. tengo esa compilacion tuya, pero creo que solo en 16f84a. si recuerdas si ya lo has hecho podrias apuntarme a ella. es para si al final no funciona en bipolar, pues me acabo adaptando a este motor.


----------



## Meta (Abr 21, 2012)

Mira ver si te funciona en el 16F84A y me avisas. Está compilado a 32768 Hz.


----------



## juan47 (Abr 21, 2012)

handyss, has revisado la circuiteria?
Es bastante estraño que con el 16f84A te funcionara, aunque hiciera caballitos y con el 16f88 no,aunque siga haciendo caballitos, en el cual Meta solamente ha cambiado los #fuses y corregido que el puerto A sea digital , raro, raro, raro
Podrias mostrarnos el esquema?
Hiciste la prueba que te recomende con el osciloscopio?

Un saludo


----------



## handyss (Abr 21, 2012)

En un rato pongo los dos esquemas y en el mensaje anterior pose el resultado de la prueba del osciloscopio. Hay dos imágenes.

Edito: he estado haciendo pruebas con el bipolar. creo que las salidas no deben de estar bien, pero las ponga como las ponga no consigo que funcione bien. parece como si la secuencia de salida, fuese igual que la de un unipolar. no hacerme caso pues no entiendo y seguro que se nota. jeje.
bueno juan, ya diras como lo ves cuando puedas. estoy apunto de empezar a plantear la placa y hacer todas las pruebas fisicaente.
podrias pasarme tu diseño. quizas me lo facilite.


----------



## juan47 (Abr 21, 2012)

Perdon tienes razon
Al cambiar el codigo, Meta, no ha puesto los terminos bien para la interrupcion por TMR0 y por ello no funciona el stop en avance 
Mañana te pongo el codigo modificado para la interrupcion por TMR0 y los pasos para que sea mas acorde con la revolucion y no haga el caballito, para el 16f88

En cuanto a los oscilogramas intentare verificarlo con mas tiempo

Un saludo


----------



## handyss (Abr 21, 2012)

juan47 dijo:


> Perdon tienes razon
> Al cambiar el codigo, Meta, no ha puesto los terminos bien para la interrupcion por TMR0 y por ello no funciona el stop en avance
> Mañana te pongo el codigo modificado para la interrupcion por TMR0 y los pasos para que sea mas acorde con la revolucion y no haga el caballito, para el 16f88
> 
> ...



Hola. No te preocupes. Pero razón se tiene cuando se sabe lo que se dice. Y yo mas bien lo intuyo. Estoy muy verde. 
Juan. Tu motor es bipolar no? Podrías poner el esquema para hacer copia en proteus?


----------



## Meta (Abr 21, 2012)

Hola:

Ya puso el esquema. No me digas que el fallo es el mio que no puse bien las interrupciones, ejejjejejje. Ni me he dado cuenta pero algo me imaginaba, por eso dije que mirara el código si hace cosas raras.

Unipolar
Ver el archivo adjunto 71511

Bipolar
Ver el archivo adjunto 71512

Algo pafecido a esto.





Saludo.


----------



## handyss (Abr 22, 2012)

la verdad es que lo que necesito se parece mucho a este video. la velocidad constante y lenta se mantiene sola asta que se le da al stop y el resto es rebobinado y avance rapidos. mas o menos.


----------



## Meta (Abr 22, 2012)

Parece ser que aún no funciona. Sólo falta cambiar las interrupciones que dice Juan47.

Saludo.


----------



## juan47 (Abr 23, 2012)

Aqui te dejo los archivos tanto el ASM como el HEX con las modificaciones 
He corregido la interrupcion por TMR0 y tambien he modificado el tema de los pasos para que no te haga el caballito, el codigo esta como en el madero original, ya que los oscilogramas salian con una division cuando en el tiempo debaria ser uniforme
En el MPLAB, me pase el domigo probando el codigo que descargue y no me hace ningun motivo como en los oscilogramas, por eso modifico el codigo y es igual que el de madero pero para el 16F88 y motor bipolar  

Pruebalo y el tema del tiempo se resueve despues de que des el visto bueno a este codigo

Un saludo


----------



## Meta (Abr 23, 2012)

Buenas:

Espero que te funcone de una vez por todas con el 16F88. Si todo va bien por primera vez, hacemos el truco del oscilador interno a 32768 Hz como quieres.

Saludo.


----------



## handyss (Abr 23, 2012)

Yuuuuuhooooo. siii seññoooorrr. ahora si. mis mas sinceras felicidades y agradecimientos. ahora funciona perfecto en 16f88 y bipolar. 
tengo que reconocer que tenia algo mal configurado el motor. me he dado cuenta porque viendo el tren dde pulos no me cuadraba que no tubiese nervio en el simulador. no vi que estava a 12v. como en unipolar se asignava a 12v la corriente del motor.
ahora , cuando lo haga fisicamente, desde donde se regula el voltage al que trabaja el motor? supongo que en los pines 1 y 9 se debe conectar al voltage que necesite el motor pero no estoy seguro.


----------



## Meta (Abr 23, 2012)

Felicidades campeón, esperamos ver vídeos cuando lo tenga físicamente.


----------



## handyss (Abr 23, 2012)

pues esta casi casi. faltaba la electronica y sera un ratito corto cuando tenga claro como conectar el l293ne que tengo teniendo en cuenta que el motor es 2v. hay alguna diferencia? se quemara algo? vale talcual esta el esquema que mande del 16f88 bipolar?
jo que nervios. que ganas le tengo. 
ademas me gustaria saber si alguien tiene que usar un bipolar de diferentes pasos, que debe cambiar para que siga a 1 rpm.


----------



## Meta (Abr 23, 2012)

Buenas:

JAjaajaj.
L293D
http://www.datasheetcatalog.org/datasheet2/f/0xt5w1akzx8dd88ewqdxi35wa9py.pdf

Usa ese integrado por aquí.

Como entrada funciona a 36V como máximo. Lo dice en la página 4.


> absolute maximum ratings over operating free-air temperature range (unless otherwise noted)†
> Supply voltage, VCC1 (see Note 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 V
> Output supply voltage, VCC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 V
> Input voltage, VI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 V
> ...



Ánimos, que te funcione.

Saludo.


----------



## handyss (Abr 23, 2012)

Pues o no me aclaro como se le asigna el voltaje a un pin. Que creo que es fácil. Solo hay que editar un power y ponerle el voltaje. O no se porque me da error el proteus. Me dice algo como que no se ha asignado el voltaje. No power suplie especify.


----------



## Meta (Abr 23, 2012)

Acabo de instalar Protesu v7.9 SP1. Pásame el esquema y lo miro. En las felchas pon +12V, +5V, no lo dejes sin nada.


----------



## handyss (Abr 23, 2012)

usa el hex que juan a compilado y te adjunto el archivo del esquema


----------



## juan47 (Abr 23, 2012)

Enorabuena lo conseguiste, esperamos videos del resultado, muchos, muchos videos

La conexion del l293D, en el datasheet tienes el esquema, veras que no tiene complicacion
Acuerdate que cuando realices la circuiteria fisica, la tension del motor no la cojas de la del micro, pues al accionar el motor esta, la tension, podria caer lo suficiente como para resetear el micro y no te funcionaria como tu deseas 

Un saludo


----------



## Meta (Abr 23, 2012)

Funciona el simulador. Felicidades. Esperamos ver vídeos motor PAP en acción.



Por fin funciona. Ni más páginas hemos gastado.

Al final no te aburriste.


----------



## handyss (Abr 23, 2012)

hola a los dos. los que lo habeis logrado sois vosotros. pues no me queda camino por andar a mi. 
tengo este viernes los examenes de recuperacion para subir nota y no lo podre poneo lo que se dice hoy. pero que lo hago es seguro.
las dudas del l293, es porque en la simulacion no podia usarlo. tengo que probar porque quizas si que era que al dar valor al power del vs para el motor y no darle valos al power de la logica, este estendia que podria ser o 5v o lo asignado al power del motor pues no estava asignado ninguno. tengo que probarlo, seguro que mas tarde.
cuando me funcione con los 2v del motor y los 2,5 ohmn por bobina le hago el circuito con la cnc que es un plis. los componentes ya los tengo asi como todo el montaje mecanico que esta esperando a la electronica y a hacer videos. jeje



para aprender y debido a que yo hacia mis pinitos con mi zx spectrum en basic y a los 18 hice un curso de 6 meses de C++, que me recomendais para abordar a los pics. ahora lo que hice no lo recuerdo pero seguro que lo recupero relativamente pronto. alguna web, pic16f84.com etc o libros...


----------



## handyss (Abr 24, 2012)

hola. subo esquema acabado para que lo superviseis. no se si poner los diodos de proteccion que he visto en algunos montajes con bipolares.
esta pensado para ajustar con potenciometro a 2v para el motor y fijo a 5v para la logica.
en el l293 he puesto una resistencia de 10k. porque he visto que en algunos ejemplos la usan ya que es solo el enabled y funciona con menor voltage en el datasheet.
adjunto la imagen y el archivo de proteus.


----------



## juan47 (Abr 24, 2012)

Si,pon los diodos de proteccion por seguridad, ellos evitaran la fuerzacontraelectomotriz del motor y descartaran tensiones inversas que puedan dañar el l293

Esperamos los videos 

Un saludo


----------



## handyss (Abr 24, 2012)

Lo dicho. aqui esta el montaje con diodos. si me lo aprobais lo siguiente sera fisico.
al igual que antes, mando la imagen del proteus y el archivo de esquema en el rar. es lo mismo pero el del rar es para poder probarlo. 
por cierto meta. si quieres hacer lo del timer interno ok. si no te apetece tranqui que son dos clics entrar el cristal en el circuito.

Edito: se me olvidaba. he puesto 1N4004 porque los que queria no me salian. BY299. que son los que tengo la intencion de montar. pero si me confundo o es innecesario complicarme por si no los tienen o algo decirmelo. dentro de mis alternativas estan los 1n4004 y 1n4007, pero no veo clara la diferencia aparte de los 1000v del segundo porque siguen siendo de 1A.

otra pregunta. las borneras que encontre creo que son de 0.2" entre pines y no encuentro ninguna en proteus. como hago para definir la distancia entre pines? existen las borneras en proteus?


----------



## handyss (Abr 24, 2012)

Hola de nuevo. meta. tengo un problemilla pequeño pero desglosado 648 partes complicadas exponencialmente. jo que exagerao que soy. el caso es que mi version de proteus es pobretona y no bienen la mitad de packages para pasar al ares y diseñar la placa fisica. como lo soluciono. mi primer problema el el potenciometro. el miedo que tengo es que veo que circuitos anteriores no me funcionan con la version actual y si le pongo la nueva v7.9 no se si tendre que repetir trabajos. que hago. adjunto el esquema acabado para exportar al ares a ver si en el 7.9 da problemas de packages.
un saludo.


----------



## Meta (Abr 25, 2012)

Me pasa lo mismo. Puedes escoger otros encapsulados que sea muy parecido o igual. Antes de hacer lo del Ares, en el ISIS, con cada objeto, allado puedes encontrar los componentes. Es mejor así.

La alternativa que usan mucho es, ISIS para simular, para hacer placas, usan Eagle.

Saludo.


----------



## handyss (Abr 25, 2012)

bueno, no se si me sera facil pues estoy mas acostumbrado al proteus, pero siempre se puede rehacer en eagle. mas curro que os habeis pegado vosotros y ni siquiera es vuestro proyecto.
cuando tenga un rato hoy lo miro de terminar en un lado o en otro.
notas parciales de los examenes 7,03 de media. pero tengo dos notas bajas y una suspendida con 4,5 asi que este viernes recuperacion.


----------



## juan47 (Abr 25, 2012)

Que la fuerza te acompañe :estudiando:

Un saludo


----------



## handyss (Abr 25, 2012)

hola. podria ser una buena configuracion por ner como package del potenciometro el encapsulado o package trimer?
es lo unico que me parece buena idea usar y ademas es el unico conflicto. bueno el unico no. para el esquema tengo que cambiar el encapsulado del 16f88 que smd. a ver si lo hago bien, pero creo que lo que hare sera darle el 16f84a para hacer el esquema que total no se lo diremos que al final monto otro, jeje.


----------



## handyss (Abr 25, 2012)

Bueno. aqui dejo el mogollon de archivos que se han ido generando. buena parte de ellos son generados por el propio proteus y no se si sirven de algo.
he intentado que solo esten los que sirven para algo. es decir, version de los archivos hex para 16f84a unipolar y bipolar. 16f88 bipolar...etc
he adjuntado los esquemas de diversas maneras. estan los pdf para quien quiera usar fotolitos o transferencias, pero tambien estan los archibos del proteus, en gerber para coppercam y en codigo G para maquinado a dos caras. vamos que si alguien no encuentra lo que busca aqui casi es que no existe. jeje.

Nota. ahora si que necesito la version del hex para 16f88 con oscilador interno, pues tenia pensado diseñarlo con oscilador externo y luego si no hacia falta no lo ponia, pero se me olvido y al menos que haga inventos feos no cabe.


----------



## Meta (Abr 26, 2012)

Gracias, voy a hechar un ojo y mirar el famoso oscilador interno.


----------



## handyss (Abr 26, 2012)

meta. he instalado la version 7.9 y hay cosas que no me deja hacer como ver la placa en 3d. te pasa igual o es cosa mia? lo mismo reinstalo la que tenia antes.


----------



## Meta (Abr 26, 2012)

Buenas:

No he hecho nada en 3D con el 7.9 SP1. 

No estoy seguro que lo haya hecho bien, aún así, aquí está el código fuente.

```
;********************************************************
;
;    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 & _INTRC_IO
    __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 0X0005


SETEOS
    BSF STATUS, RP0 ;TRABAJO BANCO 1
    clrf    ANSEL
    MOVLW B'11110000' ;BITS BAJOS = SALIDA
    MOVWF TRISB
    MOVLW B'11111111'
    MOVWF TRISA
    movlw    b'00000000'
    movwf    OSCCON
    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,0
    goto ADEL
    BTFSS PORTA,1
    goto ATRAS
    BTFSS PORTA,2
    goto 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,0
    goto    ESPERA    ;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
    goto    ESPERA    ;return
;****************************************ATRAS**** ************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ATRAS
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,1
    goto    ESPERA    ;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
    goto    ESPERA    ;return
;****************************************AVANCE*** *****************************
; SOLO SE SALE CON STOP
;************************************************* *****************************
AVANCE
    CLRF TMR0
    NOP
    NOP
    BCF INTCON, TMR0IF ;Bandera TMR0
    BSF INTCON, GIE ;Interrupcion general
    BSF INTCON, TMR0IE ;Interrupcion por TMR0
QUEDA
    BTFSS PORTA,3
    GOTO PARA    
    GOTO QUEDA

;****************************************PARA***** *****************************
PARA
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,3
    GOTO QUEDA ;SI FUE UN RUIDO VUELVO
    CLRF PORTB
    BCF INTCON, GIE
    BCF INTCON, TMR0IF
    goto    ESPERA    ;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'00001001' ;1 CODIGO
    MOVWF PORTB
    RETURN

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

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

CUAT 
    MOVLW .4
    SUBWF POS, 0
    BTFSS STATUS, Z
    goto    FINAL    ;return
    MOVLW B'00000101' ;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, TMR0IF ;BOORO BANDERA
    RETFIE


    END
```

Me guié por la hoja de datos 16F88.
http://ww1.microchip.com/downloads/en/DeviceDoc/30487c.pdf

Saludo.


----------



## handyss (Abr 26, 2012)

Muchas gracias de nuevo. dentro de una hora aprox. freso la placa, sueldo y pruevo. cualquier cosa te digo y si me retraso es cosa de los examenes de mañana.
me da que si le hecha un ojo juan nos sacara de dudas. pero no es preocupante, cuando tenga la placa lo pruevo yo.



Que bueno, si asta lo he podido compilar yo, al final no podre batir mi recor de torpe. jeje
bueno, parece que funciona al menos en el proteus. solo queda currarse la placa y montarla.
ya hos cuento.


----------



## Meta (Abr 26, 2012)

Buenas:

¿Te funciona en el proteus?

¿Estás seguro?

A lo mejor hay algún botón que no responda bien.

Saludo.


----------



## handyss (Abr 26, 2012)

Hola. Pues en proteus funciona "todo". Pero si es verdad que el osciloscopio hace un extraño. Al ir rápido la señal es mas cuadrada pero al ir lento la señal hace un pico cuando da el pulso y en vez de mantenerse desciende despacio hasta menos de la mitad. Después el pulso se invierte haciendo lo mismo del revés. 
De Momento no se si es configuración de los parámetros del proteus. Motor etc. O es que le falta algo.


----------



## Meta (Abr 27, 2012)

La mejor manera es probarlo físicamente, ya que simuladores son simuladores, te haces una idea aproximada de la realidad y no siempre funcionan.


----------



## handyss (Abr 28, 2012)

bueno. pues tengo una placa terminada pero no me funciona. creo que tiene algun cruce o algo pero no lo acavo de ver. el tema que es que la parte de alimentacion va, le da corriente a los componentes, las salidas 1 y 2 del pic estan en 5v pero las 17 y 18 estan a 3,4v creo que debe de aver una deriva a masa tras una resistencia o algo asi ya que asta la regulacion a 2v funciona pero no veo que se active el programa al dar a ningun boton. creo que es la placa que tiene un corto pues se calientan al cabo de un minuto o dos el 7805 y el lm317. llegan a quemar pero lo apago antes de que sufran daño.
sogerencias?


----------



## handyss (Abr 28, 2012)

bueno, como el circuito que diseñe quedaba dificil de producir porque tenia vias debajo de los chips y pistas a soldar por la cara top debajo de los chips, suerte que con un soldador mini he conseguido hacer las soldaduras, pero como heran casi a cegas tube un corto y una falsa soldadura ademas de una soldadura fria en un punto comun de las resistencias de las patillas 17 y 18. el caso es que ahora llegan los 5v a todas las partes requeridas y los 2v tambien, pero no da señales al motor.
puede ser que no funcione el tema del oscilador interno? que otra cosa puede ser?
podriais mandarme un programa que no requiera pulsar botones para dar señal a una patilla, no se por ejemplo intermitente para verificar con un led si da señales el chip sin el oscilador.
me vale cualquiera que ya este echo de algun ejemplo. yo adaptare la salida adecuada para que le llegue al led.


----------



## Meta (Abr 29, 2012)

MEjor usa oscilador externo para probarlo. El interno no es seguro lo que hice.


----------



## handyss (Abr 29, 2012)

ya no se que mirar. todas las corrientes llegan a los  pines correctos. el pic esta alimentado, los botones estan a la espera de el 0 logico estando en 1=4.99v le he puenteado el cristal de 32768 a los pines 15 y 16 del 16f88 y le añadi sendos condensadores de 68pf conectados a masa. verifique la masa y verifique los cables del oscilador. pues ni con el programa del oscilador externo ni con el del interno.la sensacion que me da es que el pic no rula. probare con otro a ver si este me lo he cargado o algo.

pues ni cambiandole el l293 ni cambiandole el 16f88 consigo nada. 

se sigue calentando un poqueto el 7805, no deberia calentarse sin cargas no, se supone que lo que alimenta es de consumo pequeño, no deberia estar fresco como una rosa?


----------



## juan47 (Abr 29, 2012)

Perdonad me he perdido
Puedes poner el esquema del circuito y elcodigo, pues en el archivo que pusiste anterior mente hay tanta informacion que me pierdo Gracias

Un saludo


----------



## handyss (Abr 29, 2012)

Hola juan, esque es un laberinto de archivos. 
aqui dejo el esquema en modo grafico a color para poder ver las pistas y seguir el circuito.
pondre tambien una captura del copercam para tener una idea de como quedo despues de ser fresado el circuito. para que no de la sensacion de estar limpio de sobrante ya que al acido quedaria limpio, pero en fresado queda toda la placa sobrante aislada pero no se retira el cobre.

Edito: subo otra imagen por si ayuda.


----------



## juan47 (Abr 30, 2012)

http://imageshack.us/photo/my-images/812/nuevaimagengw.png/

No se para que es este conector, si es para poner el potenciometro? No se
Esplicamelo cuando puedas
Otra cosa seria saber como cargas el HEX en el microcontrolador que utilizas, IC-PROG o WINPIC, el programador 
Cuando descargas el Hex en el micro configuras el programa para XT etc

Espero tus respuestas, El calentamiento del 7805 puede ser normal ya que tiene que disipar 6V
espero que la temperatura no sea muy elevada

Un saludo


----------



## handyss (Abr 30, 2012)

es una salida de 2v, aun no sabia para que la usaria, posiblemente el led de encendido. pero de momento es solo un ponto para regular la corriente del motor. 2v.
el pic lo grabo con pickit2. lo unico que hago es importar el hex con el programa y grabarlo en el pic. si se tiene que configurar algo mas lo desconozco. no lo sabia. asta la fecha he grabado vaias veces un 16f88 y siempre fue con el oscilador interno. quien diseñaba estos lo debio de hacer asi pues la placa no lleva oscilador y funcionaba.

Edito: añado fotos reales del estado actual con la implementación del cuarzo de 32768Hz y los condensadores de 68pf. que deduzco deberían ser de menor capacidad, pero es lo que ponia en el circuito que copié. la implementación se hizo en plan cirujano con la cnc con la máxima precisión. solo esta afectada la cara top.


----------



## Meta (Abr 30, 2012)

Muy buena placa.

Ver el archivo adjunto 71962

En este caso como es 32768 Hz el oscilador es de tipo LP si ex externo.

Saludo.


----------



## handyss (Abr 30, 2012)

gracias. he probado a poner _LP_OSC sustituyendo _XP_OSC. pero el efecto es el mismo. no se si hay que cambiar algo mas.
cada vez estoy mas convencido de que se me pasa algun corto que no encuentro pues el 7805 se calienta bastante y eso solo lo hace si tiene consumo. 
donde puede tener un consumo de cerca de 1A sin que se funda nada en un minuto de funcionamiento y que provoca que se caliente el 7805 pero no se funda, ademas de seguir dando la tension a todas las partes del circuito que asi lo requieren?
en la bottom, la facil, he comprovado todo. en la top, la menos facil, he comprovado todo lo que se ve. pero no se si se me escapa algo que no vea debajo de los componentes o que el propio diseño tenga algo mal. un diodo por ejemplo al reves. la verdad que me guie por el 3d para hacer el montaje. estara bien orientado el map del render en 3d?
bueno. lo que me queda si en dos semanas no lo encuentro, momento en que termino el ultimo asalto del acceso a grado superior, desmontare las partes mas caras y aprovechables del circuito y rehare el diseño a ver si puedo en una cara y con puentes. pero es una pena pues me habia gustado al final el resultado.


----------



## juan47 (May 1, 2012)

Puedes probar a levantar el l293 conectar el circuito a alimentacion y ver si se calienta el 7805
Despues montas el l293 y levantas el Pic compruevas de nuevo si se calienta
Si tampoco desconecta la botonera y haces la misma operacion 
Que continua calentandose, cerciorate de la circuiteria diodos ect
Si ves que esta todo en su sitio, armate de paciencia, coje la lupa y a revisar la placa 

Un saludo


----------



## Meta (May 1, 2012)

El LP es para osiclador externo 32768 Hz.

Si usas el oscilador interno se llama *_INTRC_IO*.

Saludo.


----------



## handyss (May 1, 2012)

Hola. Volveré a probar. Pero sacando los chips ya probe. He mirado si las resistencias tienen alguna deriva pero no. Solo me queda sacar todo y empezar de nuevo. 
La botonera todavía no existe. La simulo puenteando a mano el pin que quiero a masa. 
Pero creo que levantando los chips no será suficiente pues no puedo comprobar debajo de ellos ya que me tapan los zócalos. 
Seguiré probando a ratos. Pero me saldrá y lo publicare. 
Por otro lado el tema del xt o lp. Pensaba que seria declarar como interno con  _intrc_io y además poner el lp osc para la velocidad del oscilador. 
Como se declara que el interno vaya a mas o menos frecuencia.


----------



## handyss (May 2, 2012)

Hola, por fin algo de luz. con el l293 desmontado y sin diodos he conseguido medir los 0 y 1 logicos de funcionamiento del pic. ahora hay que encontrar cual es el fallo. los diodos o el l293? en el caso de los diodos, como los corte antes de funcionar, deduzco que funcionaria igual con ellos puestos. ademas, estos estan conectados a la salida de algo que no esta montado. asi que no hacen nada ni montados ni sin montar si no esta el l293.
por otro lado. veo que el l293 del simulador es el l293D y los que yo tengo son l293ne. que diferencia hay?
voy a ver si puedo comprar los l293D.

Edito: por casualidad, me ha dado por hacer un reset con las pinzas, daldole corriente el pin 4 del 16f88 y de repente todo funcionaba. no se que ha podido pasar pero es como si el pic no entrara en funcionamiento si no se le da al masterclear. lo que no se es si se deberia mantener o si pasaria lago por dejar un puente hecho permanente.
se me escapa el motivo. alguna sujerencia?

Edito de nuevo: me he achicharrado un dedo al intentar ver si se calentaban los l7805 y lm317. este ultimo se pueden asar patatas. tengo un tatuaje tipo marca de las reses en el dedo para demostrarlo. jaja. mas de 100º fijo. lo que no se es porque tanto. asi que medi el consumo de la bobina y me da 160ma en una bobina. y en la alimentacion a 12v con las dos bobinas encendidas 750 ma. sigo sin ver porque se calienta tanto.
por si es culpa mia, en la parte de corriente del lm317, en los esquemas pone algo de porner la resistencia fija a 220 o 240 ohms, pero yo la puse a 470 porque en el proteus vi que me hacia de limitador de maximo en el ajuste. puede ser que este forzando aqui al lm317

por cierto. en el proteus me hacia un pico en el momento de activar la bobina en el osciloscopio que llegaba a la corriente regulada y necesaria para moverse, pero inmediatamente perdia voltage y la cresta no se mantenia arriba a 2v, sino que vajaba algo asi como a 0.5v el resto del tiempo de ese pulso. ahora veo que es correcta la medicion del oscilador, pues la salida medida hace exactamente eso y para que se mueva el motor tengo que darle mas voltage en el regulador. el motor comienza a moverse a 2,8v calentandose un monton el lm317.


----------



## handyss (May 2, 2012)

he modificado el programa y le he puesto el masterclear en off. ahora no hace falta darle a nada. con el oscilador interno y sin hacer nada mas. funciona como se espera. lo unico es que el lm317 achicharra. existe algun sustituto que se caliente menos es decir 2A o mas? es normal? le pongo un disipador y a correr?


----------



## Meta (May 2, 2012)

Felicidades si por fin ya te funciona con el oscilador interno.

Lo del LM317, miraría cuanto corriente aguanta y cuanto consume le circuito, sobre todo las bobinas consumen mñas de lo normal.

Saludo.


----------



## handyss (May 2, 2012)

Hola. Me ha dicho un amigo. Que es normal que se caliente pues tiene mucha caída de voltaje de 12 a 2v. 
He pensado en solucionarlo alimentando el lm317 con el l7805. O poner resistencias cerámicas en serie en el motor de 2w de 20 omns. 
Que me recomendáis.


----------



## handyss (May 2, 2012)

Hola. le he puesto un disipador bien grande y sigue achicharrando. mire el datasheet y vi que tiene proteccion termica. por ello al mirar el consumo en frio, ahora veo que esta en 1.7A funcionando todo y que a medida que se calienta el consumo cae asta 1A. esto creo que lo produce la proteccion termica que hace que vaje la potencia por no estar bien refrigerado. pero es que para refrigerarlo bien necesito un disipador de cpu de ordenador. esto se calienta una pasada. pero aun asi funciona y no parece que vaya a quemarse. se estabiliza en mucha temperatura y 1A y aqui se queda. asi que empece ha hacer mediciones y ruebas. con el osc interno, el motor se retrasa 4 segundos por minuto. supongo que el interno debe de ir, segun leí, a 32khz y el externo a 32.768khz,motivo del retraso. como le tenia montado el cuarzo, he arreglado el tema del LP y del masterclear en el fuente con oscilador externo y todo anda bien. preicion exacta o error humano del que realice la prueba.
para conseguir que el lm317 tenga que disipar menos calor, le he subido el voltaje del motor a 4,5v. esto produce que se puedan contar los ciclos del reloj que hace en cada paso, aproximadamente 5. supongo que deben de ser las interrupciones. no afectan pero si se necesitara menos bibraciones esto llegaria a ser un problemilla pequeño. se vaja el voltaje y arreglado.
ahora me preocupa la tostadora. me gustaria saber si alimento el lm317 del l7805, si este ultimo resistiria bien o si se quemaria o si se calentaria mas o menos. pena que el proteus no simule la temperatura disipada. o si lo hace?
espero consejo pues hay soluciones por probar para mejorar el rendimiento, pero no se cual deberia ser mejor.



hola de nuevo. como me han prestado un termometro laser, paso la lista de temperaturas despues de estar 5 minutos trabajando a 4,8v.
lm317--63º--75º al principio asta que vaja el rendimiento a 1A.
l7805--45º
16f88--35º
l293ne--65º--no esperaba que se calentara tanto.
potenciometro--61º
bornera donde se regula a 2v--70º--tengo que mirar por que si aqui no hay consumo.
en general la pcb por la cara bottom--50º max.
en general la pcb por la cara top--65º
hice una pequeña prueba a regular a menos voltage, calculo que unos 3,5v pues no me dio tiempo a medir. se puso el lm317 a 85º y desconecte. volviendo a regular a 4,8v.
en mi vida habia visto una electronica trabajar tan caliente sin quemarse nada.


----------



## Meta (May 2, 2012)

Hola:

Cuando me pasaba lo de la temperatura muy caliente, por ejemplo, cuando usaba un 7805 a 1A, se calentaba mucho, lo que hice es ponerle un buen disipador de una fuente conmutada del PC. Aún así se calentaba mucho, luego le puso un ventilador de PC. Más frío que otra cosa y tiene rendimiento.

Saludo.


----------



## handyss (May 2, 2012)

bueno. el tema no es que se caliente, es que no lo soporte y se funda. por otro lado, si da 1a me parece suficiente siempre que tenga fuerza el motor. y siempre puedo ir a simplificar las corrientes sacandola la del 317 del 7805. es lo voy a probar en el esquema del proteus a ver si se queja. calcula consumos? o temperatura disipada?


----------



## Meta (May 2, 2012)

Que yo sepa no creo que calcule consumo.


----------



## handyss (May 2, 2012)

Si puedo, intentare probarlo la semana que viene o la otra con la luna nueva a ver que sale.
tengo 2 semanas para acabarlo y ajustarlo. ademas de hacer el segundo porque son dos, uno para mi y otro para un amigo que quiere iniciarse en la astronomia. mañana hare algun video y lo subo. desearme suerte que mañana tengo una entrevista de trabajo.


----------



## handyss (May 3, 2012)

Hola de nuevo. Pues no se como no he caído antes. Pero si el motor es de 0.8A por bobina. Es normal que se caliente pues las dos bobinas trabajando son 1,6A mas 0,1 que debe ser lo que esta gastando la lógica hacen el 1,7A que consume. Ahora biene la pregunta. Se pueden poner en paralelo mas de un lm317 para repartirse la carga ajustando los con un solo potencio metro para que entre ellos no haya diferencia de potencial? Existe otro tipo de regulador de corriente tipo lm317 peo que entregue 2A o mas?


----------



## juan47 (May 3, 2012)

Por norma al lm, se le pone un transistor en "paralelo", para mayor corriente 
Si buscas por el foro, encontraras varias referencias
Para el problema del tiempo, Meta ya te dio referencia, que si ponias un cristal este es mas exacto que el oscilador interno
Me alegro que encontraras, el problema del circuito y este funcione
Seguro que lo que te propongas(trabajo, estudios) saldra a delante

Un saludo


----------



## handyss (May 3, 2012)

la verdad es que este proyecto me ha enseñado muchas cosas. yo tengo un espiritu de superacion de metas muy grande, pero a veces no se puede sin ayuda. es como ir a un colegio a aprender a leer para poder leer los manuales de funcionamiento de las cosas. mientras no se aprende a leer, no no se empieza a superar obstaculos por uno mismo. con el tema de la programacion, me he estado leyendo y releyendo todas las versiones que se han hecho para entender un poquito mas que es cada cosa y como se usa, pero me queda mucho por delante aun. todo esto en medio de los examenes que tengo. estoy a mi propio limite. no podria agradecer mas la ayuda que me habeis proporcionado. aqui teneis un amigo para lo que os pueda ayudar algun dia. si estais cerca de granollers teneis una cervecita pagada cuando querais y aun queda lo proetido que es poner un video del trabajo funcionando y si me salen, fotos astronomicas que demuestren la eficacia del montage.
por otro lado, llevo desde ayer pensando como usar el calor generado para eliminar la condensacion de umedad en las opticas por las noches de invierno. esto sule estropear la noche entera impidiendo que se pueda fotografiar nada pues se deposita el rocio en la camara y se empaña la optica. normalmente se usan calefactores de 1A aproximadamente para las opticas. pero resulta que aqui lo tenemos todo en uno. quizas haga externo a la placa el lm317, usando un parasol de aluminio para que disipe el calor. esto daria una superficie muy grande de disipacion y el parovechamiento de este calor para evitar el rocio. seria genial.
pensare en el transistor a ver si lo entiendo. por otro lado. tenia medio diseñado, que si se usan dos lm317 y dos l293, se pueden hacer trabajar independizando las bobinas del motor, asi cada lm y l293 soportaria 0,8A y se calentaria menos. esto ademas podria dar en que el segundo lm y l293 se adosara al parasol para que no calentara mas de lo necesario ya que en exceso produce turbulencia y se refleja en la calidad de las imagenes. 
os mantendre informados.


----------



## Meta (May 3, 2012)

Hola:

A mi me funciona con un ventilador normal de PC, más fresco que paseando bajo la Luna llena junto el mar. En cuanto a la humedad, la quito con un deshumidificador.







http://www.antaexclusivas.com/antae...dificadores.asp?nombre=3984&cod=3984&sesion=1

Saludo.


----------



## handyss (May 3, 2012)

Jajaja. Muy bueno. Siento haber soltado el rollo. Pero por simplificarlo a la camara en Fotografia astronómica le pasa lo que a los cristales del coche si te quedas dentro 1h con los cristales subidos. 
Tengo ganas de poner alguna imagen astronómica con el inventillo.


----------



## Meta (May 3, 2012)

jajjajajajja, encantado verlo.


----------



## handyss (May 10, 2012)

bueno. ya paso la tanda de examenes. creo que apesar de las cosas que se dominan menos, la media es buena.
retomo el tema que lo tenia aparcado como expliqué. en brebe os dire como van los progresos.


----------



## Meta (May 10, 2012)

Esperando oirte, jejej.


----------



## handyss (May 10, 2012)

Hola de nuevo. nando, un amigo de fatigas al que quise hacer un poco de betatester con un proyecto muy bueno que el tenia/tiene. el nandofocus. me ha aconsejado poner una resistencia en serie para disipar diferencia de potencial en la alimentacion. no se si lo digo bien. seria poner 2,2 ohmios y 10w o mas en la alimentacion. con ello se alimentaria con 8v y la diferencia de calor lo disipara la resistencia de 2,2. pero esto me genera confusion. si tengo un equipo que consume de mas porque se calienta, esta bien redirigir el cunsumo para que no se queme, pero esto ha de funcionar toda la noche de manera autonoma con una bateria de arrancar los coches. creo que es de 19A. si consumo 2A minimo, ya que con la resistencia de 2,2 creo que añadimos consumo pero no estoy seguro de cuanto. no quiero contar a la lijera.
esto no se si da para toda la noche, pero me gustaria poder decir que si el motor consume 1,6A max. deberia de consumir el conjunto unos 1,7 max. el caso es que a calculadora en mano. consume menos no mas. es decir. si aplicamos antes de poner la r de 2,2 tenemos 1,7A "12/1,7= 7,05" pero al añadir 2,2 en serie son "12/9,26=1,3A" si esto es correcto y no se quema la madera con la resistencia de 2,2 ya tengo solucion. pero no me creo que siendo el motor de un consumo de 1,6A añadiendole consumo se tenga menos.


Edito: no me agais mucho caso, pero se me pasa por la cabeza que esto sera que limito la fuerza del motor. es decir ahora si le añado los 2,2 tendria menos par el motor?


----------



## juan47 (May 11, 2012)

Perdoname pero me he perdido, cual de los reguladores se calienta? Los dos?
La resistencia, a la que se refiere tu amigo es para hacer una caida de tension, por ello tienes que calcular su valor para mantener el consumo de corriente al circuito, puesto que si con la resistencia limitas la potencia del circuito, este no funcionara correctamente
Un ejemplo seria como en un circuito con un led, si aumentas la resistencia el led se atenua, si la reduces esta iluminara más

Un saludo


----------



## handyss (May 11, 2012)

bueno, esto es lo que al final me parecia. gracias por aclararmelo.
la que se calienta es la del lm317. pero calentarse supongo que por culpa del lm317 pero se calienta todo. he pensado, que lo suyo seria poder poner 3 lm317 en paralelo. usando solo una regulacion para los tres de forma conjunta. solo me queda las dudas de que pasa si la regulacion no da el mismo voltage de salida para los tres y yo lo estoy juntando. es viable? cual seria el esquema? en el fondo ya tengo el elemento que disipara algo de calor en la optica. encontre una hucha de los chinos que da el mismo diametro que mi parasol del opjetivo y le he cortado la tapa y el fundo y esta como hecho a medida. poniendo en el 1 o 2 de los tres lm317 se calentara lo justo para tener las noches a pedir de boca.
edito: veo siempre en los esquemas que encuentro condensadores de pequeña capacidad en el lm317 y ademas de tantalo. 47uf, 10uf etc. yo le he puesto electroliticos de 100uf en este punto y 1000uf en la alimentacion. ademas hay otro de 1000uf en la salida del l7805. pueden dar problemas de algun modo que yo no conozca?


----------



## juan47 (May 11, 2012)

Se calienta el lm y despues todo ? Que alimentacion utilizas? La Bateria?
Si colocas otro regulador en paralelo, digase otro lm o 7805, siempre hay uno que se pondra muy caliente y el otro estara frio
Realmente deverias hacer que el motor reciviera su corriente, para tener un buen par, como ya te comente en un anterior post se pone un transistor en paralelo, con el lm317, para aumentar la corriente y no coja temperatura el lm317

Un saludo


----------



## Meta (May 11, 2012)

```

```
Si pones un aresistencia 2.2 Ω es muy poquito el valor, si es cierto que es capaz de aguantar 10W. La tensión varía un poco, pero la corriente si lo pone en serie es la misma. No notarás que se enfríe el LM317. Pon un buen disipador.





http://es.wikipedia.org/wiki/LM317

Y si es posible, un buen ventilador.





http://rafaelcastaneda17electronica.blogspot.es/img/imagen4.jpeg


----------



## handyss (May 11, 2012)

bueno. pues primeras pruebas fisicas un fiasco. de hecho es lo que se habia calculado. le falta par al motor y el conjunto consume 1,6A todo al maximo.
mañana le quito la resistencia y comienzo a ver como hago para adaptar el transistor. un amigo ma ha pasado un esquema. pero no lo acabo de entender. es lo que tiene ser autodidacta, las lagunas. nunca he profundizado en los transistores.


----------



## Meta (May 12, 2012)

Hola:

Esos transistores hace de limitador de corriente, solo suelta la que necesites.






Saludo.


----------



## handyss (May 12, 2012)

Muchas gracias meta. lo tendré que ver varias veces para comprender mas cosas. pero no esta mal como introducción. durante mucho tiempo los tome como sustitutos a los relés.

Una cosa, cuanto es normal que se caliente el l293. duele mucho si lo tocas. de hecho se calienta antes de que trabaje el motor. ya lo hacia antes de la resistencia. no es nuevo.


----------



## handyss (May 12, 2012)

Hola. he vuelto a mirar las webs de referencia del poryecto y veo que todas tienen el motor con reductora. ahunque hacen referencias claras a la velocidad en pasos sin reducctora, en las imagenes todas salen con ella. quiere decir que todos encontraron que no se puede atacar directo o no tiene fuerza suficiente. ahora necesito encontrar:

una manera de reducir el mecanismo de arrastre.
una modificacion para la electronica que ya esta hecha para que funcione con el sistema de transistor o rehacer la electronica desde cero.
encontrar si es normal que achicharre el l293.
conseguir ajustar el programa a la reduccion impuesta.
buff. estoy peor que antes de empezar. jaja


----------



## handyss (May 20, 2012)

Hola. sigo vivo. lo que pasa es que estoy haciendo una de las cosas que tenia prevista para dentro de uno o dos meses. es esto.




es un 4th. eje para mi cnc. lo tengo a medio camino o mas adelantado. las cosas que me faltan las tendré para mediados de semana. el motivo de adelantarlo es que como necesito una reducción y no la he encontrado. me dispongo a hacérmela con el 4th eje rotativo. lo único es que necesitare variar el numero de pasos por minuto en el programa. no se yo si lo sabre hacer. por otro lado y viendo que se podía hacer la tuerca desmontable en la madera, he puesto una solapilla para no tener que rebobinar con motor y es muy rápido pero a mano. así que solo es relevante la velocidad de 1 rpm pero aun no tengo determinado que cantidad de pasos tendrá la rueda que interponga. a que velocidad recomendáis que gire el motor, podría ser a 40 vueltas por minuto. asi hago una rueda de 40 dientes y listo. que me decis?


----------



## luis1234567890 (Nov 26, 2013)

como puedo controlar 5 motores pap con el 16f877a pero en determinada secuencia :  que el primer motor se mueve 90 despues se quede apagado despues gire el 2do motor unos 180grados se apague  despues el tercera 90 y se apaguer el 4to 180 grados y se apague  y el 5to 90 .y se apague .   No se mucho de asm por eso la ayuda


----------



## Meta (Nov 26, 2013)

Hola Luis:

Primero indicas al motor 1 que haga los 90º, el motor 2 los 180º y así sucesibamente. El problema que no podrás controlar todos por falta de pines en el PIC. 

O bien, lo pones todos en paralelo si solo usas un motor uno a uno exceptuando un pin del PIC para cada masa del motor, o bien, con más PIC controlado por el maestro que haga de decoficidacor o otras maneras. Primero el hardware tenerlo claro, luego te centras en la programación.

Por cierto, saber que tipos de motores PAP usas, si es polar, unipolar, cantidad de cables, los pasos que da, etc.


----------



## luis1234567890 (Nov 26, 2013)

es unipolar 6 terminalesn .mi intencion es usar el puerto B,C,D ose 24 pines para los 5 motores pap ,pero e estado leyendo un post que con cuatro pines puedo controlar un motor pap utilizando el 2803 entonces  para los cinco motores son 20 pines


----------



## Chico3001 (Nov 29, 2013)

busca en el foro como extender los puertos de un microcontrolador... lo puedes hacer de manera serial o paralela con memorias LATCH tipo D


----------

