Leer estado de rele externo

Mientras este en serie lo pones donde quieras, antes o después de la Resistencia.

surbyte:
Tiene que ser un capacitor 0.1uF 400V como mínimo.

Y cual seria el máximo o apropiado para ir mas seguro y no por el limite inferior? como para tener un margen de seguridad

Calcula la reactancia capacitiva para tu frecuencia
Xc = 1/(2piF*C)
donde
pi = 3.1415
F = frecuencia de tu red 50/60 hz
C = capacidad en Faradios = 0.1uF = 0.1 x 10-6 faradios.

Xc (50hz) = 31831,9 ohms = 32k aprox
Entonces un capacitor agrega mas de las dos resistencias que sumadas eran 20k
Tal vez no sea el valor apropiado para tu caso de 110V.

Un valor de 0.47uF te daría Xc = 6772 ohms con lo que reduces las resistencias a 20 - 6.772k = 13k2
O sea dos R de 6k8 aproximadamente
La corriente será la misma 110V/20k = 5.5mA
Potencia R6k8 = I^2R= (0.0055A)^26800 = 0.2W

A ver si con un Capacitor de 0.47uF 400V y dos R de 6k8 o una de 12k 1 o 2 Watts tienes resuelto el tema.

surbyte:
A ver si con un Capacitor de 0.47uF 400V y dos R de 6k8 o una de 12k 1 o 2 Watts tienes resuelto el tema.

Hace ya algun tiempo cuando me indicaste adquirir 2 resistencias de 5.1K y 1W, 1 optoacoplador SFH6206-3 y 1 resistencia de 2.2K 1/8W, dado que en la zona donde me encuentro no las conseguí de estas características, tuve que solicitarlas por Internet, pero para poder comprarlas tuve que pedir un lote de 100 resistencias de 2.2Kohm, un lote de 50 resistencias de 5.1K y 1W y un lote de 10 optoacopladores SFH6206-3, ya que con estas caracteristicas segun las formulas utilizadas, suponía resuelto mi problema, lo cual no sucedió. Hay alguna forma que pueda utilizar estas resistencias ya compradas con los cambios que me comenta actualmente para no desechar los artículos ya adquiridos?
Que de alguna forma, colocandolas en serie o en paralelo o en algún orden sumen lo que ahora me dices debo utilizar?

Usa dos de 5.1K que estan mas o menos cercanas a lo calculado, ya que faltaría una R agrega una de 2k2 y estaremos en 12k4 bastante cerca no?

Hola Surbyte, en el segundo diagrama no logro identificar el elemento con símbolo "SG1", me puedes indicar a que componente electrónico es.

Desde ya muchas gracias.

surbyte:
Ahora que veo los esquemas, al menos yo entiendo mejor toda tu idea.
Lo primero que veo es que trabajas con 110VAC.
Quieres ver el estado de un interruptor que acciona sobre una lámpara y conocer justamente su estado.
Esto es a tiítulo de estudiar como funciona todo? Porque hablaste de equipo de audio, tv, etc.

Bien, no he visto en detalle pero en lineas generales tu esquema podría funcionar aunque también puede mejorarse y mucho.
Tu quieres saber si algo esta funcionando o no, y para ello con ver si hay tensión te alcanza. Una manera de hacerlo es usando optoacopladores que para las tensiones involucradas (peligrosas) es muy cómodo ya que no pondras en riesgo tampoco al Arduino.

Este esquema te dirá si del lado del diodo del optoacoplador tienes o no tensión.

Puede que el optoacoplador no sea fácil de conseguir. Pero es un esquema muy simple para saber si hay o no tensión.
Si te interesa la idea veré si hay otro esquema con optoacopladores mas comunes.
Aca un ejemplo, incluso mejor porque este si te da el AC on off.


esta pensado para 220VAC asi que solo debes usar una R1 de 120K para 110VAC
Z1, Z2 y Z3 son varistores que puedes usar o no.
El resto si es crítico.

Sinceramente no se que es pero no es relevante.
Tampoco necesitas los Varistores Z1 Z2 aunque usarlos por seguridad esta bien pero ponerlo ahi hace que debas ver otras etapas de tu circuito, ya que la fuente de tu arduino no los tiene entonces es un contrasentido tener en un detector y no el la fuente mas cara.
Yo vi módulos detector de AC que se venden en ebay. buscaste?

Gracias por tu pronta respuesta, buscaré en ebay y en otras páginas. Tienes alguna referencia?

Slds.,

No.

hola . mira yo hice algo parecido y NO use un segundo rele. Directamente al tener 110v le coloque un cargador de telefonos y le conecte tierra al arduino y 5v a un pin de input. En el programa preguntas si ese pin esta en high ssignifica que la luz esta encendida manualmente ... No se si me explique ??

arlaor:
Hay alguna forma de leer el estado de un rele que no este conectado a VCC y GND del arduino? (conectado a una fuente externa), donde solamente el cable IN desde el rele, se conecte a una entrada de arduino y me permita saber por el voltaje que tenga este si el rele esta encendido o apagado?
He intentado hacerlo por las entradas digitales y por las analógicas, pero el voltaje que tiene el arduino por defecto en cada entrada tanto analógica como digital de aproximadamente 1.5V no me permite diferenciar el voltaje del IN del rele.

Buenas:

Si se puede y lo hacía antes con PIC16F84A.

En los relés hay un Led que indica cuando la bobina le lelga corriente y se activa, desde ese Led esdonde puede poner una salida con un optoacoplador hacia Arduino y funciona a la primera.

En una pantalla LCD 20x4 o el que sea, puedes visualizar cuando está activado el relé a la salida de Arduino y también indica si le ha llegado la entrada de arduino, así de simple, no volverse loco.

De esta manera tanto en la entrada de arduino como el led del relé, indican con seguridad que está activado o no.

Saludos.

Metaconta:
Buenas:

Si se puede y lo hacía antes con PIC16F84A.

Hola Metaconta, gracias por tu informacion. Supongo que al hacerlo con el PIC16F84A, igual debo armar un circuito para reducir el voltaje que le llega desde los 110AC.
En estos momentos estoy esperando unos capacitores que he pedido para armar el circuito que me ha recomendado surbyte. No tengo a la mano los componentes necesarios para armarlo, asi que debo esperar hasta que lleguen.

Me quedaron dudas donde dices "En los relés hay un Led que indica cuando la bobina le lelga corriente y se activa, desde ese Led esdonde puede poner una salida con un optoacoplador hacia..." porque me imagino que antes de mandarle corriente a ese rele, debo haberla reducido a 5v o la capacidad soportada por el relé. o es otra la idea?, no se.

Yo habia planteado inicialmente utilizar un rele conectado a un cargador de telefono de 5V que se alimentaria de la linea de 110AC que quiero medir, pero con esto estaba atentando contra el medio ambiente y contra mi bolsillo por el gasto de voltaje innecesario que se generaria y por eso estoy tratando de seguir la recomendación de surbyte. esperemos que cuando arme el circuito recomendado desaparezcan los recalentamientos excesivos obtenidos con el bosquejo inicial sin capacitores.

castillolk:
hola . mira yo hice algo parecido y NO use un segundo rele. Directamente al tener 110v le coloque un cargador de telefonos y le conecte tierra al arduino y 5v a un pin de input. En el programa preguntas si ese pin esta en high ssignifica que la luz esta encendida manualmente ... No se si me explique ??

Si te entiendo, es una buena idea a tener en cuenta. En este punto la idea es disminuir al máximo el consumo de corriente y es lo que se busca con la construcción del circuito planteado por surbyte.

surbyte:
Usa dos de 5.1K que estan mas o menos cercanas a lo calculado, ya que faltaría una R agrega una de 2k2 y estaremos en 12k4 bastante cerca no?

Buenos dias surbyte

he montado el circuito con las partes que me refieres. La temperatura de la resistencia ha disminuido considerablemente, aun se calienta pero es soportable.
he realizado algunas pruebas y he encontrado lo siguiente utilizando digitalread():
Cuando el circuito no recibe voltaje desde 110AC, en el IDE de arduino recibo el dato 1, lo que significa que esta apagado, pero cuando recibe voltaje 110AC, en el arduino comienzo a recibir tanto 0 como 1, lo que indica que apaga y prende muy rápidamente.
interpreto lo anterior que al ser corriente alterna y esta está fluctuando a 50Hz hace que el SFH se active y desactive muy rápidamente por la curva de oscilación que maneja la corriente alterna, mostrando así los datos opcionales.
también he leído que el voltaje DC no tiene la fluctuación del AC o se comporta como una linea recta en comparación con la curva que describe el voltaje AC.
teniendo en cuenta lo anterior, ¿debo adicionar algún circuito que realice esta rectificación o que omita la parte OFF de los 110AC?
estas son las imagenes del circuito. Los he organizado en la forma como se muestran en las imagenes para ganar espacio en la placa que había cortado anteriormente, pero estan unidos en serie. Primero los capacitores conectados al cable que viene de los 110AC y luego las resistencias de 12K conectadas a la otra pata de los capacitores y en la parte final, el SFH unido a las patas libres de las resistencias.





El circuito esta perfecto y la respuesta que tienes es exactamente la esperada.
El tema es que no vas a tener algo SI/NO sino porque tienes un circuito detector que alterna su salida.
Entonces... tu debes periodicamente consultar su valor...
Si el valor bascula estas en presencia de tensión AC y si no lo hace es porque estas sin tensión presente.
Tienes varios caminos para hacerlo.
Uno es usando una interrupcion.
Si la interrupción que defines como CHANGE o simplemente RISING o FALLING, cualquiera sirve.
Si la interrupción se dispara, es porque tienes un cambio y pudes poner un contador que iras consultando.
SI ese contador es 0, no hay cambio, si el contador sube es porque tienes tensión. y luego de consultarlo lo pones a 0.

El otro metodo es con millis() pero haciendo lo mismo y leyendo el estado del pin digital donde conectes la salida del optoacoplador.

teniendo en cuenta que el SFH estará algunas veces encendido continuamente por horas o días a lo largo de los meses, al estar expuesto a fluctuar entre abierto y cerrado tanto tiempo, no se producirá un daño prematuro de su sistema interno?, algo así como un desgaste prematuro que minimice su funcionamiento?
o está diseñado para estar expuesto a estas fluctuaciones continuamente y mantendrá una durabilidad normal?

Es un dispositivo semiconductor. No se gasta!!!
Nada va a pasar.

Entiendo surbyte, gracias por la aclaración.
Que no se note mucho mi desconocimiento en electrónica... :slight_smile:
Estuve intentando realizar el código con las interrupciones que mencionas, pero por la información que envía el circuito con 1 y 0 cuando esta encendido, no supe realmente como aplicarlas a mi proyecto, así que realice el siguiente código que permite obtener la información requerida.

...
void loop() {
  if(b==0){t1=millis();b=1;}
  while(millis()-t1<=250)
  {a=digitalRead(D1)+a;}
  if(millis()-t1>250)
  {b=0;}
 //en 250 milisegundos se alcanzan a leer menos de 20000 (1) unos cuando esta encendido
//y mas de 100000 (1) unos cuando esta  apagado así que por eso la comparación de (a)

    if(a>20000 && uno==0)
     {Serial.println();Serial.println("apagado");uno=1;cero=0;}
      
    if(a<20000 && cero==0)
     {Serial.println();Serial.println("encendido");cero=1;uno=0;}
     
  a=0;
}

Gracias surbyte por tu gran ayuda...

// General
volatile unsigned long int ZeroXTime1 = 0;             // Timestamp in micros() of the latest zero crossing interrupt
volatile unsigned long int ZeroXTime2 = 0;             // Timestamp in micros() of the previous zero crossing interrupt
volatile unsigned long int XTimePeriod;                // The calculated micros() between the last two zero crossings
volatile boolean zero_cross;                 // Boolean to store a "switch" to tell us if we have crossed zero

void setup() {                                         // Begin setup
 
 attachInterrupt(0, zero_cross_detect, FALLING);      // Attach an Interupt to Pin 2 (interupt 0) for Zero Cross Detection
 delay(50);                                           // Give the interrupt time to capture a few AC cycles
}                                                      // End setup
 
void zero_cross_detect() {                             // function to be fired at the zero crossing
 ZeroXTime2 = ZeroXTime1;                             // shift the current zero cross value to the previous
 ZeroXTime1 = micros();                               // set the new current zero cross time in micros()
 XTimePeriod = ZeroXTime1 - ZeroXTime2;               // Calculate the time since the last zero crossing
 if (XtimePeriod > 9750) // mayor que 9750 useg      // ajusta este tiempo a ver si va bien
     zero_cross = 1;                                 // set the boolean to true to tell our dimming function that a zero cross has occured
 }
 else 
     zero_cross = 0; 
}                                                      // End zero_cross_detect

void loop() {                                          // Main Loop
 
   if (zero_cross) {
      // hago lo que tengo que hacer porque detecte AC
      Serial.println("AC ON");
      zero_cross = 0;
   }
}

Lo he modificado a ver si sirve.

buen dia estimados

pregunta, un sensor de efecto hall detectaria el reley energizado o es muy pequeño el campo magnetico de la bobina del rele?

Saludos