Problemas con interrupcion y Reles

Hola buenas tardes.

Les comento un poco mi problema en un diseño simple en principio.

Tengo dos pulsadores Inicio y Stop que se activan siempre que exista un saldo de dinero (se usa monedero de 12vdc que genera pulsos segun moneda insertada). Para leer las monedas utilizo la interrupcción del Pin D2 del Arduino NANO. Una vez pulsado el boton inicio debe activar un RELE_1 de 12vdc a traves de su respectivo transistor NPN y DIODO en antiparalelo. a la Salida de RELE_1 conecto otro RELE_2 de mas potencia que esta a una distancia de mas de un metro de primer RELE_1.

Problema:

Cuando conecto este segundo rele y al presionar el boton de inicio el sistema detecta pulsos indebidos es decir tengo un contador en la interrupción por flanco y se incrementa cuando esto no deberia suceder ya que el incremento solo se debe dar cuando se inserta monedas.

Cuando desconecto el segundo RELE_2 todo funciona con normalidad, no entra a interrupcion cuando no debe.

ADICIONALES que puede ayudar para que me apoyen en solucionar este inconveniente:

-Uso una fuente de 12vdc de 3A, el arduino esta en una placa aliemntada aun desde el puerto USB (Aun estoy en fase de desarrollo)

-A la salida del segundo RELE_2 aun no he conectado ninguna carga, de momento esta en vacio.

-Yo pienso que al conmutar el segundo RELE consume demasiada corriente que hace que el voltage se "caiga" y ello provoca que en todo el sistema haya una variación de voltaje y ahi el arduino detecta una interrupcion por pulso de bajada.

Espero me puedan dar ideas para solucionar este problema.

Subo un "esquematico" del sistema.

Gracias.

Y el código? No veo código.

No necesito verlo para darme cuenta que tienes delay() en tu código por todos lados y usas interrupción como el recurso habitual que todos usan para ver un simple estado como el que explicas. Claro que si ese RELE rebota tu interrupción tambien lo hará porque las interrupciones fueron pensadas para responder a eventos rápidos, no a cosas lentas como lo que planteas.

Facilmente puede hacerse lo mismo usando millis() y un debounce que evita los rebotes.

NOTA: te habras dado cuenta que ahora se ven la imagen que adjuntaste, eso ocurre porque no leíste las normas del foro que piden que lo hagas, esta vez lo hice pero la próxima no lo haré, asi que lee las normas del foro

Y ademas de lo expuesto por @Surbyte yo me pregunto ¿para que haces eso de activar un relay con otro relay? Porque no activar el segundo relay directo al transistor? Si tu respuesta es que el segundo relay consume mucha corriente, lo solucionas con el uso de un mosfet y listo.

Me pregunto si el monedero de 12V dara su salida en 5V ?

Tampoco veo como estan los pulsadores, tendran 10K en pulldown ?

Es mas una consulta de hardware.

Buenas tardes. Gracias por su respuestas.

Les aclaró un poco.

  1. A lo comentado de uso de delay.
    No uso delay en ninguna parte ya que estoy usando interrupción por flancos en el pin d2 generado por el ingreso de una moneda en el monedero. Todas las temporizaciones son a través la funcion millis. Las variables de la interrupción están definidas como volátiles.

  2. He tratado de esquematizar mi diseño ya que en si son varios pulsadores de entrada y varias salidas a rele. Pero básicamente es repetitivo con la salvedad que cada botón de entrada realiza y activa una serie de reles según mis especificaciones.

  3. Por que no activo el segundo rele con un transistor?
    El segundo rele estara a más de 5 metros de distancia de la placa donde está el rele1.

  4. Los pulsadores no tienen aun el tema de antirebotes ni por software ni por hardware aun estoy en etapa de desarrollo y en principio no lo veo crítico usarlo ya que mis elementos a activar son "lentos"

  5. He probado la placa sin conectar los reles2 y ningún problema, todo funciona perfecto.

  6. El monedero entrega un tren de pulsos según la.moneda insertada de una altura de 5v.

  7. Todos los elementos electrónicos están referenciados a gnd o masa. Lo he revisado con el tester.

  8. El problema que pienso y a los efectos que comentó me remito. está en el conectar rele2. Genera una caida de voltaje en todo el sistema y esa variacion lo detecta el monedero y evidentemente el microcontrolador. Por eso pienso que debo aislar galvanicamente la parte de control y potencia con sus fuentes independientes.

Si alguien ha tenido problemas con la interferencia de la parte de potencia le pediría su Consejo.

Gracias.

No explicas como es la fuente de +5 ni la de +12. (Me juego algo a que tienen elementos comunes)

Si en el rele 1 le pones el diodo, porque no se lo pones en el rele 2 ? Aunque no haya un transistor, tu pónselo, siempre es una buena practica.

WZERO:
../..
Por eso pienso que debo aislar galvanicamente la parte de control y potencia con sus fuentes independientes.
../..

Evidentemente es lo mejor que puedes hacer, fuentes separadas, de buena calidad y poner un optoacoplador en vez de solo un transistor

Hi,
Sugerencia es de que cambies la forma de energizar el segundo relay. debes de que el contacto que cierra el segundo relay lo cambies a que supla el ground del relay y suples el realy con los 12 voltios, Al coil le tienes que anadir un diodo como existes con el primer relay. Al contacto del segundo relay le anades un condensador en paralelo al contacto de ,1uf. Esto elimina el el ruido electrico que se produce cuando energizas un componente inductivo.

Hola a todos.
Es la primera vez que participo en el foro así que espero poder aportar algo a la situación.
Dentro de todo lo que he probado para eliminar esos ruidos molestos cuando trabajamos con rele y contactores junto con arduino (que por cierto es un verdadero dolor de cabeza) he podido sacar en limpio que arduino no viene preparado para trabajos estilo industriales ni de potencia, así que les dejo algunas cositas que ayudan a disminuir dichos problemas.

1 - colocar un diodo zener a Gnd en cada pin que utilices como entrada para evitar los picos de tensión que
puedan ingresar por los cables largos como si fueran una antena.

2 - para los pines que uses con botones a modo de entrada también se recomienda colocar un capacitor de .1uf entre el pin y Vin para nuevamente evitar esos disparos fantasmas que se dan al activar una carga tipo contactor o motor o lo que sea que genere alguna EMI.

3 - Colocar un capacitor de Tantalio en paralelo con Vin y Gnd lo mas próximo al microcontrolador (depende el montaje de la placa Arduino es complicado para soldar) Esto evita que cuando en el micro se abran o cierren muchas compuertas a la vez no se quede sin corriente ya que cuando las compuertas cambian de estado consumen mucha corriente instantánea. Se recomienda a no mas de 5mm del microcontrolador. (yo no lo he podido soldar tan cerca porque trabajo con arduino Mega y no tengo las herramientas ni el pulso para soldar las patitas tan chiquitas.

4 - En el caso de comandar Rele o Contactor se recomienda montar una red SNUBBER (la cual GOOGLE te muestra como hacerla fácil) entre los contactos del Contactor y también entre los contactos de la bobina del Contactor o Rele. Esto evita que al desacoplar la bobina retorne el ruido que se genera al desenergizar la bobina.

5 - También es muy necesario colocar un Varistor en paralelo en la bobina del contactor si es que la bobina es de corriente alterna para absorber también los picos de tension que se generan al despegar el contacor. (esto comunmente hace que los display lcd en arduino empiecen a escribir en algún idioma extraterrestre)

6 - Ningun pin que no se utilice para nada debe quedar sin configurar como OUTPUT o sin una resistencia a GND para evitar que funcionen como antena y se filtre alguna señal de RF hacia el micro.

7 - Los Gnd de distintas fuentes es mejor unirlos, pero se recomienda que sea a travez de un capacitor multicapa ya que puede ser de distintos potenciales las fuentes.

8 - Por ultimo, suele pasar que se resetee solita nuestra placa al activar algun contactor o algo de potencia aunque se tomaran las precauciones anteriores, para evitar esto basta con anular el autoreset de Arduino con una resistencia de 120ohm a Vcc. Lo unico que para poder resetear arduino habrá que desconectarla ya que cuando queremos subir otro scketch a la placa no se reseteará automaticamente y no lo vamos a poder subir. Recomiendo colocar la resistencia cuando ya esté todo listo para montar en el lugar definitivo.

La mayoria de las sugerencias anteriores las pueden encontrar con lujos y detalles en las APLICATION NOTES de los mictocontroladores que quieran trabajar, asi como en los DATASHEET de los mismos.

Espero haber sido de ayuda par alguno que lo necesite, porque a mi me constó bastante encontrar las soluciones a estos problemas. Todo lo anterior lo he probado y funciona, asi que prueben y comenten los resultados.