0

I have an Arduino Uno with Ethernet Shield controlling some relays. Initially everything works fine but then when switching the relay off, the Ethernet controller frequently 'crashes'. Ethernet stops responding to pings, although the Arduino Uno keeps running. Pressing the reset button brings the Ethernet controller back to life.

I am using three relays to control:

  • The 'Call for Heat' contact on the boiler (normally connected to a thermostat)
  • A Honeywell V4043 zone valve (6W / 0.42A)
  • A Grundfos UPS2 underfloor heating pump (0.06A - 0.42A)

Block Diagram

This is my setup:

  • I am using 2N7002 MOSFETs to drive the relays
  • I have 1N4004 diodes across the coils

There is a circuit diagram for the 'Relay Driver Shield' part of the circuit here:
https://github.com/njh/relay-driver-shield

This is what I have done to attempt to solve the problem:

  • I have moved the Arduino + Ethernet further away from the relays
  • I switched to higher quality Omron Relays (G2R-1-S-DC12)
  • I have tried both Wiznet W5100 and ENC28J60 Ethernet controllers

But so far nothing has solved the problem.

Of the three relays, it appears to be the Honeywell V4043 zone valve that is causing the problem. While testing with no loads connected to the relays, it was working fine. My assumption is that the problem is related to discharges across the contacts, partly due to the inductive loads. But I am not sure what to do to fix it.

Thanks,

nick.

  • 4
    A schematic showing the connections will be very useful. – user31481 Feb 5 '18 at 12:19
  • 1
    I'd start with optocoupler and separate power supply for the relay. – KIIV Feb 5 '18 at 12:33
  • 3
    Sounds like you want some relay snubber circuits. And opto-isolation can't hurt either. – Majenko Feb 5 '18 at 12:34
  • I have added a Block Diagram inline and a link to the relay driver circuit diagram on GitHub. – njh Feb 5 '18 at 22:25
  • 1
    a 3300uf 10v "motherboard"capacitor "shorting" your 5v to ground might help. – dandavis Feb 6 '18 at 0:19
1

I would suggest two things:

  1. Use opto-isolators instead of (or as well as) the MOSFETs to control the relays, and
  2. Add RC snubber circuits across the contacts.

The latter is the most important, since the spark across the contacts when they open will cause massive amounts of EMI.

The simplest circuit is a simple series resistor and capacitor placed across the contacts:

schematic

simulate this circuit – Schematic created using CircuitLab

Of course, ensure that the resistor and capacitor are rated for at least the voltage you are switching, preferably double.

Selecting the right values for the components depends very much on the load being switched and how much energy needs to be absorbed. I have shown ball-park figures that are usually "ok" for many situations.

  • Does the 1N4004 diodes across the coils not count? – user31481 Feb 5 '18 at 12:48
  • No. Those are to absorb the back-EMF from the collapsing magnetic field in the relay coil. The snubber circuit is for the back-EMF from the inductive load that makes a massive spark across the relay contacts, both shortening the life of the relay, and making a massive EMI spike. – Majenko Feb 5 '18 at 12:49
  • Thank you very much, I will give the RC snubber circuit a go. In a previous version of the circuit, a cheap eBay 4-channel relay board, it did have an opto-isolater, but it doesn't seem to help. Would isolating the power lines (DC-DC isolated converter) help? – njh Feb 5 '18 at 13:08
  • @Majenko. I see. Now, for the contact side a zero-current crossing detector will be really nice for switching off inductive loads. – user31481 Feb 5 '18 at 13:16
  • Note that you need a mains rated capacitor. I think they are called class X capacitors, but please don't trust me on that one. – Gerben Feb 5 '18 at 16:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.