I am experiencing a problem with the Arduino being reset in only a particular situation. It is wired to following components:
- Arduino Nano with Arduino Uno bootloader (for watchdog reset)
- SSR (zero crossing) switching 2000 W heater (german household, 16 A 230 V, 60 Hz)
- SSR (zero crossing) switching 400 W pump
- bluetooth module
- 2x pressure sensor 4-20 mA, converted to V and connected on A1 and A3
- USB cable (stays attached)
- RTC clock
- 230 V to 12 V power supply with extra 2200 µF 25 V capacitor.
- The setup is working normally for extended periods of time but is heating up to probably > 60 °C.
The reset now occurs when the pump is activated by an external cicuit and the Arduino turns on the heater. While the pump is running, the heater is mechanically disconnected, the SSR is switched on. When the pump is externally switched off again, the heater is turned on with the mechaincal relay while the SSR is always turned on by the Arduino, waiting for the pressure to rise.
Then the Arduino resets respectively hangs up (I am resetting using a watchdog).
What I checked and I think can be scrached off the list:
- Induction in USB cable: It is magnetically smoothed (?), disconnected it, still resetting.
- High power consumtion by heater bringing the voltage down to a critical level: Added the capacitor, system stays on for seconds now when power is turned off.
- Too much noise in bluetooth cables: Turned baud rate to 9600
What I am thinking might be the problem:
- Induction/noise in any cable, sending a peak to an I/O
- Crappy SSR is not correctly isolated even if it says optically coupled (it also says 3 V but needs at least 5 V, chinese brand ;))
- I decided to leave out the protection resistor against overvoltage on the analog ins of the 4-20 mA converted sensors. These are high quality and I don't mind changing the Arduino if something goes that wrong. I am happy to have it shut off in that case.
My question now is can anyone confirm my suspicions and is there a reliable way to check if one or the other is causing the problem? I am not too keen on randomly trying resistors on each I/O pin. Do you have any more suggestions why the Arduino might be resetting?
The system is really running savely, so please don't worry. I just would like to know the cause of the problem and get a better, more reliable system