Webcampista.com

mucho más que un foro

Ayuda para hacer un generador de "pulsos"

UVEH

hablador
Ya tienes los componentes? Recapitulando, cambio de estado en la entrada provoca un cambio de estado en el relé. Disculpad que como han pasado días he perdido el hilo, luego lo repaso y lo leo para entrar en contexto.
El programa me lleva muy poco hacerlo. Lo preparo antes de que tengas todo listo.
He preparado, siguiendo con los temas electrónicos, un optoacoplador para detectar cuando se va la.luz y enterarme. El opto es de Aliexpress, tengo 1 ó 0 a la salida del optoacoplador, se conecta a 230Vca y tiene una salida aislada, esta salida la conecto a un módulo D1 que me envía por WiFi a mi servidor 3l estado 0 ó 1 por MQTT, de esta forma sé cuando se ha ido la luz, me envía un mensaje por Telegram...
Este módulo lleva la minifuente de 5V.
Hecho para montaje en cuadro eléctrico, lo inserto en el carril, ocupa dos módulos...
16480363614521896075379318771148.jpg
 

Fernandocasa

Senior Member
No he comprado nada, sólo he pedido la fuente a Aliexpress, estaba esperando a ver si el esquema era el definitivo y comprar los componentes.
Cuando pueda haré el circuito impreso con el método plancha y luego lo probaré.

Gracias y saludos.
 

UVEH

hablador
Hola,
Lo que te comenté es el espacio del condensador, me parece que has puesto unos 10mm entre terminales, se queda corto.
En principio tiene que funcionar sin problemas. En el peor de lo casos algún ajuste pero no lo creo. El circuito es simple.
Un saludo.
 

UVEH

hablador
Hola, es válido.
Es otro formato pero ambos son de poliester.
No hay problema por ello.
 

Aunolose

Adict Member
¿Por qué llevo tanto tiempo sin recibir notificaciones de este hilo?

Me ha dado por entrar al foro y he visto que había mensajes nuevos. Ahora caigo, desde el 16 de marzo: fallas... me llegaría, miraría los avisos sin entrar y ya no me avisó más. :(
 

UVEH

hablador
Hola,
lo acabo de escribir, luego lo cargo en el MPLAB (entorno de desarrollo) para probarlo y lo compilo para pasarte el HEX, básicamente es ver si hay un cambio de estado para aplicar el pulso a través del Relé y quedar a la espera en el nuevo estado... y vuelta a empezar.
Esta noche lo preparo, aquí tengo a los críos en casa sin cole!
Un saludo.

;PIC12F629 4 MHz Reloj Interno 1us Instrucción
;1024 Bytes 64bytes RAM (20h-5Fh)
;
; GP0 Entrada Detección Estado
; GP1 Salida Relé
; GP2 Salida N.C.
; GP3 Salida N.C.
; GP4 Salida N.C.
; GP5 Salida N.C.

;TRIS b'00000001'
;

LIST p=12F629
RADIX HEX

INDF EQU 0x00
TMR_OPT EQU 0x01 ;TMR0 Banco0 / OPTION Banco1
PCL EQU 0x02
STATUS EQU 0x03 ;ESTADO Banco0/Banco1
FSR EQU 0x04 ;
PA_TA EQU 0x05 ;GPIO Banco 0 / TRISIO Banco 1
;
PCLATH EQU 0x0A
INTCON EQU 0x0B ;Registro Interrupci¢n
PIE1 EQU 0x0C ;PIE1 en bannco 1
;
TMR1L EQU 0x0E ;Banco 0
TMR1H EQU 0x0F ;Banco 0
T1CON EQU 0x10 ;BANCO 0 / Banco 1 OSCAL
;
CMCON EQU 0x19
;
EEDATA EQU 0x1A ;Banco 1
EEADR EQU 0x1B ;Banco 1
EECON1 EQU 0x1C ;Banco 1
EECON2 EQU 0x1D ;Banco 1
;
;
;GPR REGISTER:
;
VARG1 EQU 0x20
VARG2 EQU 0x21
VARG3 EQU 0x22
;
;
ORG 0x00
goto INICIO
; ORG 0x04 ;Vector Interrupci¢n

; ORG 0x05
INICIO bsf STATUS,5 ;sel Banco 1

movlw b'00000001' ;config IN/OUT
movwf PA_TA ;config TRISIO 1-entrada 0-salida


bcf STATUS,5 ;sel Banco 0
clrf PA_TA ;clear all GPIO


;
;config OPTION CONTADOR DIV 256
;CONFIG OPTION_REG
bsf STATUS,5 ;sel Banco 1
movlw b'10000111'
movwf TMR_OPT ;config OPTION CONTADOR DIV 256



;CONFIGURO INTERRUPCIONES GIE=0, bit7 deshabilitado, GPIE bit3 deshabilit.
movlw b'00000000'
movwf INTCON
;CONFIG PIEº1
movwf PIE1


;ESTOY EN BANK1 T1CON/OSCCAL

; bsf STATUS,5 ;Bank 1
call 3FFh ;Get the cal value
movwf T1CON ;Calibrate OSCCAL
bcf STATUS,5 ;Bank 0
;
;*************************************************************
;TEMPORIZO para ESTABILIZACION
BUCLE call DOSCMS

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

;espero cambio de estado en GP0
;valor inicial
btfss PA_TA,0
goto ESCERO

;ES UNO
btfss PA_TA,0
goto RELE
goto $-2


ESCERO btfsc PA_TA,0
goto RELE
goto $-2


RELE bsf PA_TA,6 ;ACTIVO
call DOSCMS
call DOSCMS
call DOSCMS
bcf PA_TA,6 ;DESACTIVO
goto BUCLE

;********************************************************************
;************************** SUBRUTINAS ****************************
;********************************************************************
;
;***************************
;TEMPORIZADOR 200 ms
;***************************
DOSCMS movlw d'20'
movwf VARG3
call DIEZMS
decf VARG3,1
btfss STATUS,2
goto $-3
RETURN

;***************************
;TEMPORIZADOR 10 ms
;***************************
;VARIABLES UTILIZADAS: VARG1 y VARG2
;
DIEZMS movlw d'97'
movwf VARG1
BUCLE2 movlw d'50'
movwf VARG2
BUCLE1 decf VARG2,1
btfss STATUS,2
goto BUCLE1
decf VARG1,1
btfss STATUS,2
goto BUCLE2 ;t= ms VERIFICAR!!!

RETURN

end
 

Fernandocasa

Senior Member
Hola,
lo acabo de escribir, luego lo cargo en el MPLAB (entorno de desarrollo) para probarlo y lo compilo para pasarte el HEX, básicamente es ver si hay un cambio de estado para aplicar el pulso a través del Relé y quedar a la espera en el nuevo estado... y vuelta a empezar.
Esta noche lo preparo, aquí tengo a los críos en casa sin cole!
Un saludo.

;PIC12F629 4 MHz Reloj Interno 1us Instrucción
;1024 Bytes 64bytes RAM (20h-5Fh)
;
; GP0 Entrada Detección Estado
; GP1 Salida Relé
; GP2 Salida N.C.
; GP3 Salida N.C.
; GP4 Salida N.C.
; GP5 Salida N.C.

;TRIS b'00000001'
;

LIST p=12F629
RADIX HEX

INDF EQU 0x00
TMR_OPT EQU 0x01 ;TMR0 Banco0 / OPTION Banco1
PCL EQU 0x02
STATUS EQU 0x03 ;ESTADO Banco0/Banco1
FSR EQU 0x04 ;
PA_TA EQU 0x05 ;GPIO Banco 0 / TRISIO Banco 1
;
PCLATH EQU 0x0A
INTCON EQU 0x0B ;Registro Interrupci¢n
PIE1 EQU 0x0C ;PIE1 en bannco 1
;
TMR1L EQU 0x0E ;Banco 0
TMR1H EQU 0x0F ;Banco 0
T1CON EQU 0x10 ;BANCO 0 / Banco 1 OSCAL
;
CMCON EQU 0x19
;
EEDATA EQU 0x1A ;Banco 1
EEADR EQU 0x1B ;Banco 1
EECON1 EQU 0x1C ;Banco 1
EECON2 EQU 0x1D ;Banco 1
;
;
;GPR REGISTER:
;
VARG1 EQU 0x20
VARG2 EQU 0x21
VARG3 EQU 0x22
;
;
ORG 0x00
goto INICIO
; ORG 0x04 ;Vector Interrupci¢n

; ORG 0x05
INICIO bsf STATUS,5 ;sel Banco 1

movlw b'00000001' ;config IN/OUT
movwf PA_TA ;config TRISIO 1-entrada 0-salida


bcf STATUS,5 ;sel Banco 0
clrf PA_TA ;clear all GPIO


;
;config OPTION CONTADOR DIV 256
;CONFIG OPTION_REG
bsf STATUS,5 ;sel Banco 1
movlw b'10000111'
movwf TMR_OPT ;config OPTION CONTADOR DIV 256



;CONFIGURO INTERRUPCIONES GIE=0, bit7 deshabilitado, GPIE bit3 deshabilit.
movlw b'00000000'
movwf INTCON
;CONFIG PIEº1
movwf PIE1


;ESTOY EN BANK1 T1CON/OSCCAL

; bsf STATUS,5 ;Bank 1
call 3FFh ;Get the cal value
movwf T1CON ;Calibrate OSCCAL
bcf STATUS,5 ;Bank 0
;
;*************************************************************
;TEMPORIZO para ESTABILIZACION
BUCLE call DOSCMS

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

;espero cambio de estado en GP0
;valor inicial
btfss PA_TA,0
goto ESCERO

;ES UNO
btfss PA_TA,0
goto RELE
goto $-2


ESCERO btfsc PA_TA,0
goto RELE
goto $-2


RELE bsf PA_TA,6 ;ACTIVO
call DOSCMS
call DOSCMS
call DOSCMS
bcf PA_TA,6 ;DESACTIVO
goto BUCLE

;********************************************************************
;************************** SUBRUTINAS ****************************
;********************************************************************
;
;***************************
;TEMPORIZADOR 200 ms
;***************************
DOSCMS movlw d'20'
movwf VARG3
call DIEZMS
decf VARG3,1
btfss STATUS,2
goto $-3
RETURN

;***************************
;TEMPORIZADOR 10 ms
;***************************
;VARIABLES UTILIZADAS: VARG1 y VARG2
;
DIEZMS movlw d'97'
movwf VARG1
BUCLE2 movlw d'50'
movwf VARG2
BUCLE1 decf VARG2,1
btfss STATUS,2
goto BUCLE1
decf VARG1,1
btfss STATUS,2
goto BUCLE2 ;t= ms VERIFICAR!!!

RETURN

end
Muchas gracias.
 

UVEH

hablador
Hola
En lo que he puesto antes hay algún error como es lógico, ya está depurado. Se me olvidó desactivar el comparador, hay que cargar el registro con el siguiente valor.
movlw b'00000111'
movwf CMCON
He ajustado los timers también.

Puedo poner la corrección si queréis, lo importante es el HEX compilado...
Vamos a ver si funciona correctamente.
Para grabarlo, selecciona Oscilador Interno con MCLR a VCC.
WDT desactivado.
Cualquier cosa me dices.
Saludos.

edito, alguna corrección ortográfica, estoy ya dormido :)
 

Archivos adjuntos

  • codigo.zip
    811 bytes · Visitas: 1

Fernandocasa

Senior Member
Hola
En lo que he puesto antes hay algún error como es lógico, ya está depurado. Se me olvidó desactivar el comparador, hay que cargar el registro con el siguiente valor.
movlw b'00000111'
movwf CMCON
He ajustado los timers también.

Puedo poner la corrección si queréis, lo importante es el HEX compilado...
Vamos a ver si funciona correctamente.
Para grabarlo, selecciona Oscilador Interno con MCLR a VCC.
WDT desactivado.
Cualquier cosa me dices.
Saludos.

edito, alguna corrección ortográfica, estoy ya dormido :)
Muchas gracias.
Cuando pueda lo grabaré en el pic, lo pruebo y te digo.
Saludos.
 

Fernandocasa

Senior Member
Hola.
Hoy he podido probar "el invento" y no ha funcionado.
Ayer probé si había tensión a la salida del relé y no notaba que actuara la bobina, hoy lo he montado con la pastilla reguladora y el foco no enciende. 🤷‍♂️

Saludos.
 
Arriba
© 2004-2021 Webcampista.com