Activar relé mediante señal 5v intermitente y pulsador de parada

Hola buenas a todos, este es mi primer proyecto que yo creo que es muy sencillo pero para mi es todo un mundo ya que de electrónica sé lo justo.

Os lo detallo a ver si me podéis echar un cable:

Tengo una tarjeta electrónica de una máquina de purificación de aguas, que tiene un buzzer de alarma que pita cuando falla algo.

El caso es que ese buzzer emite una señal intermitente de 5V - 0V. Es decir pita (5V), se para (0V), pita (5V), se para (0V)....

Con esa señal de 5V quiero meterla en un pin digital de arduino y que me active un relé, el cual quiero que se mantenga encendido hasta que yo pulse un pulsador de parada.

He hecho pruebas con los 5V propios que da arduino en el pin 5V, metiéndolos en un pin digital de entrada, con un pulsador simulando la intermitencia del buzzer y todo correcto. A la primera pulsación del interruptor "lo que sería el pitido del buzzer" se queda activado el relé y aunque suelte y apriete el pulsador el relé se queda activo.

Hasta aquí todo bien.

Pero a la hora de hacerlo con la señal real del buzzer no hace nada. he probado a ponerle una R pull down de 20K a tierra para que no me diera falsos positivos pero aun asi nada. No activa el relé.

Este es el código que he utilizado:

// Rele activado por alarma de un buzzer a 5V con parada por pulsador

int rele = 11; // En el pin 11 esta conectada la entrada que excita el relé 
int buzzer = 7; // En el pin 7 está conectada la linea de 5V que da el buzzer, con una R pulldown de 20K a tierra
int puls = 3; // En el pin 3 está conectado el pulsador de parada, con una R pullup

void setup() {
  // inicializar el pin rele como salida:
  pinMode(rele, OUTPUT);
  
  // inicializar el pin 7 como entrada:
  pinMode(buzzer, INPUT);
  
  //inicializar el pin 3 como entrada y con resistencia pullup;
  pinMode(puls, INPUT_PULLUP);
}
void(* resetFunc) (void) = 0;
// Programa principal, se ejecuta en un bucle infinito:
void loop() {
  if (digitalRead(buzzer)== HIGH)
  {
    digitalWrite(rele, HIGH);
  }

  if (digitalRead(puls)==LOW)
  {
    digitalWrite(rele,LOW);
    resetFunc();
  }
  
}

Puede ser problema de la intermitencia en los 5V que no llegue suficiente corriente para excitar el pin de entrada?
Comentar también que el arduino lo alimento con 12V con un 7812 con la misma fuente de la tarjeta de la máquina ,que va a 24V.
Si se os ocurre algo estaré muy agradecido.

¿Has conectado el negativo del buzzer a la masa del arduino?

No, pensaba que al compartir masas no era necesario. Voy a hacer la prueba ahora.

Gracias

Ahora con el negativo del buzzer conectado nada mas enchufar la placa se activa el relé un instante y se desactiva, cosa que antes ni siquiera hacía, tendré que revisar el código. Al accionar el pulsador me hace el efecto contrario, me activa el relé mientras está pulsado.

Gracias

Hola, podrías intentar poner un "else" antes de tu segundo "if" y ver si eso te soluciona el problema. Solo es una sugerencia.

Tampoco soluciono nada con el else.

Estoy pensando que puede ser algo eléctrico. porque si lo alimento desde el usb, sí enciende el relé (aunque no lo entren los 5V del buzzer).

Pero si lo alimento desde el LM7812, hace un zumbido y el relé hace amago de encender pero no.

Alguna idea? debería de poner algún diodo para aislar la corriente en un solo sentido?

Gracias

Pon un esquema de cómo lo conectas todo, porque si no, es complicado ver el problema. Otra cosa a tener en cuenta es, la señal del zumbador, ¿es una señal de 5V fija o es PWM para hacer el zumbido?

alvaro214:
Ahora con el negativo del buzzer conectado nada mas enchufar la placa se activa el relé un instante y se desactiva, cosa que antes ni siquiera hacía, tendré que revisar el código. Al accionar el pulsador me hace el efecto contrario, me activa el relé mientras está pulsado.

Gracias

Prueba a invertir la lógica en tu programa, porque muchos relés funcionan al contrario (activan con LOW y desactivan con HIGH).

Este es el esquema:

carmeloco:
Pon un esquema de cómo lo conectas todo, porque si no, es complicado ver el problema. Otra cosa a tener en cuenta es, la señal del zumbador, ¿es una señal de 5V fija o es PWM para hacer el zumbido?

La señal la mido con el multímetro y me da 5V en el pitido y 0V cuando se calla, en intermitencia. De ahí que quisiera hacer el programa para que sólo con el primer pitido y correspondiente entrada de 5V me mantenga encendido el relé hasta que pulse el pulsador de parada.

Puedes tener problemas de ruido (y gordos).

¿Funciona si en lugar del poner el zumbador lo simulas con un interruptor?

Saludos

Efectivamente, lo simulé con un pulsador haciendo el efecto de intermitencia con los 5v y si que funcionaba.

Puedo filtrarlo de alguna manera?

Puedo filtrarlo de alguna manera?

¿Qué conocimientos tienes de electrónica? (Para saber por dónde empiezo).

A mi se me ocurre usar un optoacoplador.

vffgaston:

Puedo filtrarlo de alguna manera?

¿Qué conocimientos tienes de electrónica? (Para saber por dónde empiezo).

Pues soy ingeniero eléctrico pero de electrónica solo tengo conocimientos básicos. Cualquier ayuda será bienvenida.

Lo del Optoacoplador serviría?
Gracias.

Bien,

Doy por hecho que tienes las dos tierras (negativos) unidos.

Si es un problema de ruido, no estoy seguro de que no sea tan grande como para que el optoacoplador no lo sufra (también).

Lo más eficaz sería usar un relé pequeñito de 5 V (la bobina) y ver si 1) la chicha del zumbador es suficiente para que se active el relé y 2) que el relé no "falsee" (entra y sale continuamente). Si va bien, usas el contacto del relé para el arduino y ya está.

Yo también probaría con un condensador "gordo" en paralelo con el zumbador (a partir de 0.1 mF; como tiene polaridad puedes poner uno electrolítico). Hay dos asuntos: 1) puede que retrase algo la señal al arduino (según como esté activado el zumbador lo que tarda en cargarse/descargarse el condensador) y 2) que se cargue (estropee) el propio circuito que alimenta el zumbador. Quizá puedes empezar con uno más pequeño (10 uF) y, si funciona (mejora) arriesgarte.

Por cierto: ¿Necesitas que el zumbador zumbe?. Quiero decir: ¿te vale con que el arduino se entere de que toca zumbido y haga lo que tiene que hacer o también tiene que sonar? (Es muy posible que el ruido provenga del zumbador -el ruido electrónico, digo)

Suerte.

Saludos

vffgaston:
Bien,

Doy por hecho que tienes las dos tierras (negativos) unidos.

Si es un problema de ruido, no estoy seguro de que no sea tan grande como para que el optoacoplador no lo sufra (también).

Lo más eficaz sería usar un relé pequeñito de 5 V (la bobina) y ver si 1) la chicha del zumbador es suficiente para que se active el relé y 2) que el relé no "falsee" (entra y sale continuamente). Si va bien, usas el contacto del relé para el arduino y ya está.

Yo también probaría con un condensador "gordo" en paralelo con el zumbador (a partir de 0.1 mF; como tiene polaridad puedes poner uno electrolítico). Hay dos asuntos: 1) puede que retrase algo la señal al arduino (según como esté activado el zumbador lo que tarda en cargarse/descargarse el condensador) y 2) que se cargue (estropee) el propio circuito que alimenta el zumbador. Quizá puedes empezar con uno más pequeño (10 uF) y, si funciona (mejora) arriesgarte.

Por cierto: ¿Necesitas que el zumbador zumbe?. Quiero decir: ¿te vale con que el arduino se entere de que toca zumbido y haga lo que tiene que hacer o también tiene que sonar? (Es muy posible que el ruido provenga del zumbador -el ruido electrónico, digo)

Suerte.

Saludos

Muchísimas gracias por la respuesta,

Sí efectivamente tengo los dos negativos unidos, probaré lo del relé a ver que hace, si consigue excitar la bobina y no ratea.

El propio pitido del zumbador no es necesario, ya que lo que se trata es de poder "amplificar" esa señal y utilizar el relé para conectar una sirena o luz tipo baliza, ya que si la máquina está en una fábrica el zumbador no se oye.

Se me ocurre que, ¿podría eliminar el zumbador y utilizar solo la señal que le llega, para evitar ese ruido?.

Voy a hacer pruebas y lo voy poniendo por aquí.

Gracias de nuevo.

El propio pitido del zumbador no es necesario, ya que lo que se trata es de poder "amplificar" esa señal y utilizar el relé para conectar una sirena o luz tipo baliza, ya que si la máquina está en una fábrica el zumbador no se oye.

Exactamente; a eso me refería.

Por cierto: si el relé no lo lleva no olvides ponerle un diodo en paralelo "al revés" (el ánodo -la rallita- al positivo de los 5 V)

Saludos

Otra cosa:

Lo de la "fabrica" me pone los pelos como escarpias: Ni se te ocurra dejar el invento (aunque funcione) en marcha si afecta lo más mínimo a la seguridad de "las personas o cosas".

Saludos.