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)
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:
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.