TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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:
__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
-
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
-
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
-
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!
-
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.
-
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.
-
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