Arduino Uno + Placa Reles 12vdc - 220Vac + C#, rompe la comunicación serial

Hola muy buenas a todos,

Llevo ya poco mas de un año trabajando en un proyecto con arduino, he leído mucho por el foro y doy las gracias por toda la información que he podido aprovechar para mi proyecto. Pido disculpas anticipadas por escribir mi primer post pidiendo ayuda cosa que no me hace sentir bien del todo pero ando ya totalmente desesperado, el proyecto está terminado a falta de este contratiempo.

Voy al grano.

Tengo un arduino uno rev3 al que tengo conectado una placa de relés (aquí la podéis ver sin animo alguno de spam)

El arduino tiene conectado en los 6 pines analógicos 6 sensores de conectividad dos clavos que miden la conectividad entre 0 y 1024
así mismo también tiene conectados 3 sensores digitales de los cuales 2 son DS18B20 y el otro el DHT11 (muy roñoso y a la espera de que llegue el DHT22 que es bastante mas preciso y tiene mas rango)

Los sensores funcionan perfectamente.

La placa de 8 relés tiene su propia fuente de alimentación 12Vdc 1,5A
Arduino esta conectado al ordenador donde se ejecuta la aplicación C# que envía/recibe datos por USB
Arduino, su vez tiene su propia fuente de alimentación 9Vdc 5A.

La placa de reles (240vac 10A cada relé) controla componentes que funcionan a 220vac, que es aquí donde viene el problema. Solo cuando le doy corriente 220VAC a los contactos de los relés y estos empiezan a trabajar con los componentes, a las x horas la conexión serial se bloquea y solo puedo recuperar el arduino desconectando y reconectando el usb.

No me quiero enrollar con el código porque estoy 99,99% seguro que no es nada del código ya que lo he comprobado desconectando la fuente de alimentación de los elementos 220vac y el arduino ha funcionado durante 2 semanas sin una sola caída. En cambio pongo el sistema en producción conectando la corriente 220vac y a lo menos en 1 hora y media a lo mas en 24 horas se bloquea la conexión serial del usb.

tiene estas conexiones VCC GND in1 in2 in3 in4 in5 in6 in7 in8 y por separado COM y GND que vienen puenteados por si usas la tensión 5vdc de arduino que no es mi caso porque para empezar si no conecto el gnd de arduino al COM no se excita nunca la bobina del relé. Para Aclarar la fuente de alimentación la conecto al pin VCC y GND respectivamente.

para no liarse:
positivo Fuente reles -> VCC
negativo Fuente Reles -> GND (el segundo pin justo al lado del VCC)
pines digitales -> in1 a in5
GND Arduino -> COM

Esto es lo único que he encontrado relacionado con mi problema http://www.kmtronic.com/kmtronic-articles/item/315-how-to-handle-inductive-loads.html he leído miles de posts en inglés, francés y castellano.

Sería posible que el retorno inductivo llegue a bloquear la comunicación serial?
los componentes consumen estos watios

250w, 30w, 75w, 40w, 30w, solo utilizo 5 los 8 reles.

Hubiera probado la solución que proponen en el enlace pero no tengo mucha idea de electrónica mas bien soy programador multi-lenguaje y bueno es curioso pero empecé (sin terminarlo) estudiando instalaciones electrotécnicas entonces tengo algún conocimiento básico y suelo entender bien lo que leo y lo que me explican, pero el tema del capacitador que lo puentea del común 220vac a gnd, ¿a que gnd se referirá? gnd/tierra de la linea 220vac o gnd del arduino (negativo) da bastante miedo pensar en puentear el común a 220vac con el gnd del a placa arduino mediante un capacitador. (tampoco se muy bien el funcionamiento)

El software no lo explico ni pongo nada del código porque es muy simple C# envía un carácter 'a' y arduino me pinta por serial el valor de los sensores. envía C y se enciende el componente 220vac numero 1.

Perdonar el tocho y si falta algún dato relevante no duden en decirlo, estaré muy pendiente del post por si alguien puede encaminarme.
un saludo y gracias anticipadas.

Hola. Yo de hardware estoy seguramente más pez que tú, pero mientras esperas a que alguien más apto ponga un poco más de luz, tal vez este post reciente puede servirte de ayuda. Al menos, parece que el problema inicialmente es similar.
Saludos.

Puedes postear tu hardware? Lo más que seguro es ruido

Cuidado

El enlace que has puesto no esta bien dibujado!

GND es en el caso de alimentar el motor en CC, en caso de alterna GND no tiene nada que ver y en el mejor de los casos se refiere al GND de la alimentacion de motores independiente de arduino.

Por lo que comentas, creo que no esta separada la alimentacion del arduino con la alimentacion de tu placa de reles.

Tu arduino lleva o debe llevar una F.A. separada, la salida del arduino que activa un rele determinado va al diodo led del optoacoplador de tu placa de reles y la masa de alimentacion de tu arduino va a la otra patilla del led del optoacoplador que acciona un rele determinado.

Si te das cuenta no hay enlace fisico de las masas del arduino ni del VCC del arduino con la alimentacion de la placa de reles.

La alimentacion de la placa de reles (que doy por hecho la tienes aparte con otra fuente) no necesita ninguna conexion con 220v ni con arduino, ya se encarga el optoacoplador de aislar.

Como ves en el esquema, no hay tampoco una union fisica de los contactos del rele ni con la fuente de alimentacion de la placa de reles ni con arduino ni masas ni nada, para eso esta.

Hola, ante todo muchas gracias por las respuestas, es muy motivador pedir ayuda una sola vez y que se responda con tanta rapidez, de verdad gracias.

@Heke Entiendo que lo tengo bien conectado según el esquema que has puesto, de todas maneras si no es mucho pedir que le echéis un vistazo a como lo tengo.

Posteo una imagen del esquema y el .fz para el fritzing por si queréis modificar algo.

ver imagen

Corregir que en el esquema la segunda bomba que pone 30W es de 18W.

Un dato que no se si tendrá que ver con el problema, es que, tengo el arduino y la placa de relés en la misma caja de distribución, al ladito a unos 5 cm.

Reconfirmo que solo pasa cuando hay corriente de 220V en la caja. Aún estando todos los relés en estado 'NO' si tener nada encendido, solo por llegar corriente al contacto común del relé, me peta la conexión serial despues de algún tiempo.

ejemplo_reles.fz (146 KB)

Algo que dberías preguntarte es si esa placa de relés china es segura o no.
Un relé que va apilotar cargas conectadas a la red debe comportarse con tal, separando efectivamente la bobina de control de los contactos.
Yo no dejaría la seguridad del un operador, o usuario a merced de 10 relés chinos.

Y no sólo los relés.
Viendo las fotos de la cara inferior de la placa, me da a mi que no cumple las distancias de seguridad entre señales de control y líneas conectadas a red en cada relé ni entre ellos. Una distancia comunmente aceptada es de 8mm.

Algunos enlaces al tema.

http://forum.arduino.cc/index.php?topic=137049.0
http://circuitcalculator.com/wordpress/2006/12/19/tips-to-avoid-arcing/

En este catálogo Omron menciona la distancia de 8mm (creepage)
http://www.omron.com/ecb/products/pry/121/g2r_2.html

Copiapega
"CB shall be constructed so that creepage distances are not less than those appropriate for the working voltage, taking into account the material group and the pollution degree. Hence creepage distance depends of the CTI's material (Comparative Tracking Index) and pollution degree. European main standard are for Household Appliance (EN60335) and Information technology (EN 60950). As Reference value, in the worst case (Household appliance), for reinforced insulation between High voltage (220 Vrms) and low voltage (<50Vrms) on the same layer (top or bottom), you should an 8mm creepage distance between tracks (Fig. 1) as required for standard EN 60335-1-2, table 17. These distance are lower with better CTI and Pollution degree. If you can’t maintain these distances, you need a milling (cutting of material large at least 1.5mm) between the two points that do not meet the minimum safety distances (fig.2)."


Hola @jray, gracias por ese dato que no tenía ni idea...

En principio esa placa (low cost) es solo para probar el proyecto y ver que es estable en un futuro intentaré hacer yo mismo las placas a medida.

Te confirmo que milagrosamente si que cumplen las distancias de seguridad de hecho acabo de medir 14mm entre las dos tensiones y 9mm entre cada relé. La placa es mas grande de lo que parece en la foto y no es exactamente esa la mía es de Keyes que es la versión mas nueva, igualmente todas las conexiones son iguales y los componentes de la placa también, la nueva es un poco mas grande.

igualmente aparte de este dato ultra importante se te ocurre algo mas que pueda bloquear la comunicación por serial cuando hay tensión 220V?

Muchísimas gracias.
Saludos.

El uso de reles con cargas inductivas no te van a durar mucho tiempo, para eso estan los contactores de potencia, estos generan sobretensiones al soltar los contactos. Usa un varistor de 250v en paralelo a los contactos del relé, para mejor filtro usas un circuito RC tambien en paralelo con los contactos del relé.
Usa cables blindados, y en lo posible separa en un gabinete las partes digitales de las de alta tension con un blindaje de chapa.

---^^^^^---||----
47 .47

Te paso un articulo que explita el tema de ruidos
https://dl.dropboxusercontent.com/u/1641023/RUIDOS_MCUs.pdf

Hola,
Bueee @maxid pues seguro que es eso... porque tengo una regleta dentro de la misma caja con la placa de relés y el arduino a 5 cm. no me quiero imaginar el ruido ...

Podrías explicarme un poco mas como conectar el varistor, no entiendo como conectarlo exactamente una patilla al contacto común y otra patilla al contacto NC?

sería mucho pedir si fuera posible indicarme que condensador y que resistencia necesitaría o simplemente como calcularlo?
y como conectar el circuito junto con el varistor a los relés?

aún con este arreglo, ¿necesito obligatoriamente contactores de potencia? (son muy caros y no dispongo de ese presupuesto por desgracia)
Los relés no se usan mucho, entre una y cinco veces al día los que mas se usaran.

Muchísimas gracias parece que me voy acercando al problema.

Saludos.

bueno te hago un dibujo, lo puede soldar en la misma placa.
Probá con los varistores solo, y separar o blindar con una caja de chapaconectada a gnd el arduino

relevar.png

Muchas gracias maxid,

¿estos me valdrían?

link

Gracias.
Saludos.

si incluso puede usar el de 7mm de diametro, es para absorber picos no como proteccion de alta tension. Te salen mas barato y lo puedes montar sobre la placa

muchisimas gracias Maxid, ahora en cuanto salga del trabajo me voy directo a electrónica burriana a comprar varistores. Me aconsejas comprar algo mas de paso? resistencias y condesadores para el siguiente paso si se diera el caso que con los varistores no es suficiente?

si quieres puedes agregar una resistencia de 47ohms y un capacitor de 470nfx250v poliester

Vale de esas resistencias ya tengo y voy a comprar capacitadores de esas características que no tengo.

muchas gracias Maxid, eres muy grande.

Saludos.

trabaje en sistemas, y armador de placas en una empresa de automatismos industrial, y usabamos esa configuración, y te aseguro que era inmune al ruido, lo malo de arduino que no tiene los capacitores de desacople como debiera.
Soldale un capacitor de 100nf entre vdd y vss del micro lo mas cercano posible.

Hola,
como conecto la resistencia y el capacitador igual que el varistor? los tres en paralelo con la fase?

Muchas gracias
Saludos.

Vuelve a ver el plano. No estas leyendo, van en paralelo a los contactos NA del rele

si disculpa lo volví a mirar bien y lo entendí perfectamente, igualmente de momento solo he puesto los varistores y he separado la potencia del arduino unos 10-15cm, y la primera prueba de 10 horas, ha sido satisfactoria tendré que probar a mas largo plazo pero las ultimas pruebas antes de poner los varistores me petaba la conexión serial cada hora o cada hora y media.

Esta noche volveré a ponerlo en marcha en su sitio y lo dejaré en marcha indefinidamente a ver que pasa, os voy contando.

Muchas gracias Maxid y a los demás que han leído el post o han aportado lo que sabían.
Saludos.

Bueno me alegro que resulte, si ya está solucionado recuerda marcar el mensaje como solucionado para cerrar el tema.