I belive im having problems with EMI from an old mains powered pump (the model is not online) that is attached to my project via a sparkfun beefcake relay (SparkFun Beefcake Relay Control Kit (Ver. 2.0) - KIT-13815 - SparkFun Electronics) and optoisolator (SparkFun Opto-isolator Breakout - BOB-09118 - SparkFun Electronics).
My project is a barebones arduino setup that monitors three temperatues in a solar water heater system and opperates the pump when a solar water heater (old radiator) is hoter than the reserve tank. It logs all pumping events (PE) and calculates an average hourly temperatues (AE) to an SD card with a rtc timestamp (SparkFun Real Time Clock Module - BOB-12708 - SparkFun Electronics) aswell as system startup events (SE) into seperate log files.
Due to the layout of the house mains all power to the project (atmega/relay/pump) is powered via single extension cord.
The system would runs without problems during tests when no load was connected. When the pump is connected and switched (mostly to off) the lcd is often garbled, the system powers down for a second and restarts and the final digit in some log records is missing or garbled. I am assuming... this is to do with energy dissipating from the pump motor coils affecting the system delicate little 5v system?
I have attempted to isolate the relay and atmega to prevent this by following: https://arduino-info.wikispaces.com/RelayIsolation by trying the following:-
providing seperate usb power to atmega and relay (although this is unavoidably soruced from the same mains extension)
connecting the relay using cat5 cable, one signal wire all others connected to ground.
Connecting atmega ground to mains ground
installing additional capacitors across power rails near the lcd and atmega, 2x 1uf, 1x 220uf
seperating atmega and relay by 6inch (max allowed by temp probe wire lenghts)
running atmega from a 9v battery (it lasted a few hours and made no difference)
My next thought is to add some kind of snubber to the system to hopefully reduce the EMI? that is affecting the system.
A quick look at snubber design (RC snubber for 240v contactor coil | Forum for Electronics) and sizing has convinced me im out of my depth and measuring the inductance of the motor seems to be impossible without expensive equipment (3 Ways to Measure Inductance - wikiHow)
I did find a post with a similar problem (rc snubber networks/ac filter caps - General Electronics - Arduino Forum) and added a 22nF capacitor (http://bit.ly/25kjHnV) and a 47 Ohm resistor (http://bit.ly/1UDAdLR) across the motor ,thanks dc42
The problem is now vastly reduced, the system does not power down all the time. However power is still lost on occasions and the final temperature reading of a pump event is nearly always garbled.
Ive seen mention of using MOVs to reduce transients? but im hoping adding some shielding (in the post) around the relay and/or snubber might solve it but im not hopeful.
Does anyone have any suggestions on how to resolve this problem or even how it should have been designed out from the start? Im quite out of my depth with this.
Theres a circuit diagram (of sorts its missing some of the above fixes) and log files attached incase they are useful, Thanks for reading this through.
AE.txt (1.07 KB)
PE.txt (12.1 KB)
SE.txt (432 Bytes)
