TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: cidtepole en 28 de Julio de 2009, 16:03:05
-
Hola que tal, envio un cordial saludo a todos los foreros. Resulta que mi problema es el siguiente: Con un pic16f877A configuro el puerto b como salida, los pines RA0..RA3, RA5 como salida y el RA4 como entrada en modo contador. En el pin RA4 conecto un sensor de campo magnetico. La idea de este sensor es la de detectar corriente alterna. Cuando hay corriente alterna la salida del sensor proporciona pulsos entre 5 y 0 volts aproximadamente a una frecuencia de 60hz y donde el ciclo de trabajo es de aproximadamente de 70 a 80%; en ausencia de corriente proporciona 5 volts. Por las salidas RA0, RA2 y RA3 tengo conectados unos reles que encienden unos focos. El sensor detecta el campo magnetico del foco que es activado por RA0. En el momento de toglear el pin RA0 para encender y apagar el foco aproximadamente como 4 veces la senal sobre el pin RA4 se encuentra estable, pero si yo sigo togleando la senal del sensor mas de 4, 5 o 6 veces mas la senal decae a 0 volst y cuando esta encendido el foco ya no hay pulsos sobre el pin RA4. Si alguien me explicara que esta pasando se lo agradeceria.
-
Hola, es dificil sin ver el circuito, en que lenguaje está escrito... y foco, te refieres a un led? o una lampara de filamento?
está en un protoboard?... faltan datos para poder ayudarte :mrgreen:
Norberto
-
Hola que tal, tengo el mismos problema que cidtepole con el pin RA4, cuando el pic manda a encender la bombilla o en mi caso un ventilador usados para prueba, estos al encenderce reflejan una corriente al sistema que es leida en RA4, pero despues de hacer la primer lectura , se pone a estado alto, supongo por que en vez de 5v en el pin solo me da 0v, hasta que apago y prendo todo, pero solo fuenciona una sola vez, adjunto el dibujo y el programa esta realizado en asm.
-
Como estais contando con RA4 con el TIMER o a "pelo" (solo chequeando el pin)?
Como estais activando los reles? tienen diodo de proteccion? red snubber? no tienen nada?
En la alimentacion de 5V filtrais algo para evitar el ruido que os estan produciendo los reles (porque estoy casi seguro que los cabrones de los reles os estan metiendo ruido).
Los pasos por 0 se pueden detectar con el PS2505, es la mejor manera, tambien con un opto normal y una resistencia, aqui solo detecta un paso por 0 por ciclo en vez de los dos pero se puede suplir por soft, y tambien con una resistencia solo, os digo esto porque todo lo que sea magnetico, casi seguro lleva bobinas, y las bobinas dan interferencias.
Como os dice todopic darnos informacion, hard y soft de como lo teneis.
-
Hola tapi8, gracias por contestar, por lo que me señalas de la informacion adjunte mi diagrama donde se ven claramennte las conexiones, también voy anexar el código con la que leo la señal de entrada, estos días he analizado la señal proveniente del sensor de efecto de hall con un osciloscopio y observo que el vlotaje a la salida de éste no se cae cuando enciendo la carga(ventilador etc), esta señal proviene del PIC y va hacia un OptoAcoplador, la salida de este opto va a un transistor, éste conmuta al relevador y enciendo o apago la carga, al hacer esto constatemente no pasa nada al SEH(no se atenua), esta señal la envío a otro Opto y despues al PIN RA4 del pic, en donde despues de enviar mas de dos veces a prender y apagar el equipo , el voltaje en este pin se me atenua completamente, trabajando correctamente éste pin tiene un valor de 5v cuando el SEH no sensa ninguna corriente y cuando existe corriente hay un pulso cuadrado de 5v.
Bueno pero despues de que el micro manda a prender y apagar la carga mas de 3 veces en el PIN RA4 se atenua completamente sigue el pulso cuadrado pero con una magnitus de 0.5, revisé la alimentación del micro y no veo señal de ruido, las filtré antes y pues optoacople las entradas y salidas del micro por cualquier problema. Por último cuando el pin RA4 cae su valor, solo se recupera si lo reinicio y vuelve a funcionar pero solo pocas veces . No se si mi problema sea hardware o software y gracias por la ayuda.
* SEH sensor de efecto de hall
-
Pon el codigo y a ver si lo miramos, yo programo en asembler pero si esta en C o Basic algun compañero lo mirara.
Con el sensor hall sensas la corriente de la carga, que es alterna no?.
La verdad es que nunca use estos sensores, seguro que aqui en el foro habra informacion sobre ellos.
En el sensado de la corriente puede que te esten influyendo los desfases que se producen en las cargas inductivas en alterna?
-
**********************************************************************
; Monitorear Corriente
;**********************************************************************
monitor
bcf PIR1,TMR1IF ;Limpio bandera del Timer1
bcf T1CON,TMR1ON ;Apago Timer1
movlw 0x0A ;Checar si se cumplio un lapso mayor de 100 mseg
xorwf cont_Timer1,W
btfss STATUS,Z
goto salir_monitor
clrf cont_Timer1 ;El lapso mayor de 100mseg si se cumplio
btfss INTCON,TMR0IF
goto mensaje_off ;No se desbordo Timer0
;mensaje_on
;Se desbordo Timer0
bcf INTCON,TMR0IF
movlw 0xFA
movwf TMR0
btfsc tcpServerFlags,candado
goto salir_monitor
;Candado abierto y resultado positivo
bsf tcpServerFlags,candado
bcf tcpServerFlags,candado2
clrf indiceTx
movf indiceTx,W
call tabla3 ;Se carga el caracter que se va enviar
call SerialSend ;Se envia el caracter
incf indiceTx,F ;Se incrementa el indice del siguiente caracter que va hacer enviado
xorlw 0x0A
btfss STATUS,Z
goto $-6
goto salir_monitor
mensaje_off
btfsc tcpServerFlags,candado2
goto salir_monitor
;Candado abierto y resultado negativo
bcf tcpServerFlags,candado
bsf tcpServerFlags,candado2
clrf indiceTx
movf indiceTx,W
call tabla5 ;Se carga el caracter que se va enviar
call SerialSend ;Se envia el caracter
incf indiceTx,F ;Se incrementa el indice del siguiente caracter que va hacer enviado
xorlw 0x0A
btfss STATUS,Z
goto $-6
movlw 0xFA
movwf TMR0
salir_monitor
incf cont_Timer1,F
movlw 0xE7
movwf TMR1H
movlw 0x96
movwf TMR1L
bsf T1CON,TMR1ON
return
;********************************************************************************************
-
Seria mejor que pusieras el programa completo para poder pasarlo por el MPLAB y ver lo que pasa, aunque creo que los problemas principales los tienes en el hard, mas concretamente en los desfases entre V e I de la carga y el ruido, creo que estos son los problemas que hacen que el sensor de datos erroneos.
En ese trozo de programa que pones tienes un error que no creo que te funcione bien, "llamas" a "salir_monitor" dos veces mediante "goto" y en la rutina pretendes volver al programa mediante un "return" pero este return sabe dios a donde ira, porque para que vuelva a donde fue llamada la rutina hay que llamarla con un "call", tal como lo haces cuando se ejecute ese return ira a cualquier sitio o se perdera.