TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: zetall88 en 04 de Junio de 2014, 06:38:35

Título: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: zetall88 en 04 de Junio de 2014, 06:38:35
Saludos amigos, es la primera vez que publico un tema, espero no pasar por alto ninguna de sus reglas.

Mi problema es el siguiente: tengo un montaje en proteus con un pic 16f877a y unos motores paso a paso, todo funciona a la perfeccion, el problema esta en mi proto, no funciona nada!! Solo los voltajes de entrada llegan a los pines correspondientes y nada mas!!  tengo todo bien montado y he probado las continuidades de los cables mas de una vez y todos estan bien, incluso los voltajes. Creo que el problema radica en el programa o en alguna configuracion.

Aca les dejo parte del programa:

Código: [Seleccionar]
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC & _BODEN_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
;*******************************************************************************

LIST P=16F877A ;MODELO MICROCONTROLADOR
RADIX hex ;POR DEFECTO SE USARÁ LA NUMERACIÓN HEXADECIMAL
INCLUDE P16F877A.INC ;LIBRERIA DEL MICROCONTROLADOR

CBLOCK 0X22
ENDC


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

#DEFINE MUNOI PORTB,6
#DEFINE     MUNOD PORTB,7
#DEFINE MDOSI PORTC,6
#DEFINE MDOSD PORTC,7
#DEFINE MTRESI PORTD,6
#DEFINE MTRESD PORTD,7
#DEFINE MCUATROI PORTE,0
#DEFINE MCUATROD PORTE,1

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

   ORG 0000H
GOTO Inicio
ORG 0X04
NOP

Inicio
  
BCF STATUS,RP0
CLRF        PORTA
CLRF        PORTB
CLRF   PORTC
CLRF        PORTD
CLRF PORTE
BSF STATUS,RP0
BCF STATUS,RP1
MOVLW B'00000110'
MOVWF ADCON0
MOVLW B'000000'
MOVWF TRISA
MOVLW B'11000000'
MOVWF PORTB
MOVLW B'11000000'
MOVWF PORTC
MOVLW B'11000000'
MOVWF PORTD
MOVLW B'011'
MOVWF PORTE
BCF STATUS,RP0
BCF STATUS,RP1

          
  
;SUBRUTINAS**************************

PRINCIPAL
    
BTFSS MUNOI            
   CALL GiroIzquierda1
BTFSS MUNOD
CALL GiroDerecha1
BTFSS MDOSI
CALL GiroIzquierda2
BTFSS MDOSD
CALL GiroDerecha2
BTFSS MTRESI
CALL GiroIzquierda3
BTFSS MTRESD
CALL GiroDerecha3
BTFSS MCUATROI
CALL GiroIzquierda4
BTFSS MCUATROD
CALL GiroDerecha4


FIN
GOTO PRINCIPAL

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

GiroIzquierda1
    MOVLW          b'00110101'                ; Primer paso.
    MOVWF   PORTA            ; Lo envía a la salida donde está conectado el motor PAP.
   CALL              DELAY_10MS
   MOVLW          b'00110110'                ; Segundo paso.
    MOVWF   PORTA
    CALL             DELAY_10MS
    MOVLW          b'00111010'                ; Tercer paso.
    MOVWF     PORTA
    CALL             DELAY_10MS
     MOVLW         b'00111001'                ; Cuarto y último paso
    MOVWF        PORTA
    CALL            DELAY_10MS
     CLRF        PORTA
RETURN


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

GiroDerecha1
  
     MOVLW        b'00111001'                ; Primer paso.
     MOVWF         PORTA    
     CALL            DELAY_10MS
     MOVLW         b'00111010'             ; Segundo paso.
    MOVWF     PORTA
    CALL            DELAY_10MS
     MOVLW        b'00110110'                ; Tercer paso.
    MOVWF       PORTA
    CALL            DELAY_10MS
     MOVLW        b'00110101'                ; Último paso.
    MOVWF        PORTA
    CALL             DELAY_10MS
     CLRF         PORTA
       RETURN
      
    INCLUDE  <delays.INC>
    END
Título: Re: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: jhozate en 04 de Junio de 2014, 12:56:11
Si en proteus va bien, publica el esquematico que tienes en la protoboard, recuerda que el fuse HS es para cristales mayores a 4Mhz, y debes tener el pin de MCLR a estado alto con una resistencia de pull up
Título: Re: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: zetall88 en 04 de Junio de 2014, 13:13:42
Ese es el montaje en proteus, Y estoy usando un cristal de 20mhz por eso lo del fuse HS. El pin de  MCLR lo tengo conectado a una resistencia de 10k y esta a 5v.

Link del montaje en proteus    http://www.filefactory.com/file/1k0gwwp0n089/pap%20cuatro.DSN

Link del codigo asm                http://www.filefactory.com/file/3se4pnnjmvhh/Prgrsr_1.asm
Título: Re: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: seba85 en 04 de Junio de 2014, 19:14:36
Hola!
Una consulta no entiendo los pulsadores, son entradas al pic me imagino, yo siempre coloco una resistencia en serie y otra a masa para que funcione bien (descargar capacidades paracitas y evitar mal funcionamiento)...

También otra cosa siempre que hago un diseño voy probando todo modularmente que valla funcionando no largar todo el código de una y empezar a dar vueltas por donde esta el problema... Por ejemplo probando si funcionan bien los pulsadores con un simple codigo...
Espero haber ayudado en algo
Saludos!
Título: Re: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: jhozate en 05 de Junio de 2014, 14:01:25
te recomiendo que hagas una captura de pantalla y la subas directamente al foro como una imagen.
Ahora, el proteus obvia detalles en los microcontroladores como voltaje de alimentación, y el oscilador externo.  Postea una captura de cuales son tus conexiones mínimas para que el micro funcione.
La otra opción, como ya comentaron es que hagas un programa sencillo de prueba para asegurar que el micro esta bueno. Enciende un Led a razón de 1 segundo en alto y 1 segundo en bajo con la libreria que tienes de delays, con esto aseguras que el micro esta bueno y también descartas problema en el oscilador.
Título: Re: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: zetall88 en 05 de Junio de 2014, 14:12:07
Muchas gracias a todos por sus respuestas, pude resolver el problema. Termino siendo el tiempo para cada paso, estaba fijado en 10ms, el cual es muy rapido para el tipo de motor que estoy usando. 
Título: Re: Ayuda por favor!!! Problema con Pic16f877A
Publicado por: jorgel en 27 de Octubre de 2014, 21:49:58
Tal ves se deba al ruido eléctrico tío el pic y el driver del motor paso paso deben alimentarse de fuentes diferentes osea tienes que usar optocopladores hay varios esquema en internet