1
\$\begingroup\$

I'm working on a project that uses Arduino Nano to control 1A relays, which in turn control electrical solenoids in a car. This is for controlling the HVAC air flows in a dash, so my challenge is to control the vacuum signal solenoids. The project is built and tests fine on the desk. Nano controls the 1A signal relays with ULN2803A chip no problem, no hiccups. But when I connect to my test rig which has the solenoids from the car, the Nano keeps resetting as soon as a car solenoid releases. It sure looks like voltage surges to me, getting past my filters and overwhelming the LM2940-12 power regulators I'm using. No data to prove that though. The capacitors in the design are all 100V rated. So, my question is "Is it better to add more filtering (capacitor?) to my voltage supplies, or add individual flyback diodes for each solenoid being controlled? If the answer is "more capacitor", then should I look for higher voltage rating? The solenoids are SOL1 and SOL2 on the right. Initial search doesn't show this problem of resetting the controller, but did learn some things from the TE paper about relay surge supression. Depending on the answer from above, I might do some redesign to include a Zener diode, or resistor, for each solenoid control. I have tried adding a IN5404 (400V, 3A) diode from the general GND to +12V power on the pin 30 side of the 1A control relays. This caused the ULN2803A to fry an output pin within 2 seconds of that relay activating!

Added pin 30 note

Top view of board

Bottom view of board

\$\endgroup\$
1
\$\begingroup\$

The relay and solenoid counter EMF voltage on the coil and contacts needs to be shunted with reverse polarity diodes across the contacts. The diode needs to be able to handle to load current for the transient duration during turn off.

Then the loop area of high current needs to be minimized by pairing the wires or routing the power wire close to the chassis ground away from the control wires at right angles or shielded by chassis ground to reduce radiated noise coupling.

\$\endgroup\$
1
\$\begingroup\$

Unless your schematic is draw incorrectly you are not using the Com (pin 10) of the UNL2803A correctly. That pin is the common anode of all the protection diodes (internal to the chip). It should be directly connected to the positive supply rail going to your middle relays. On your schematic you have the Com pin on the output of a separate 12v regulator that is not the supply of the middle solenoids. I'd recommend removing the second regulator above the UNL2803A and connecting the Com pin to the main +12v (battery) line nearest to the coils of the middle relays. (Also be sure your middle relays are OK for the highest expected battery voltage). Without the proper protection the inductive glitches from your relays may be getting into the rest of your circuitry and causing an unintentional reset.

The UNL2803A is a very robust part, it is good for driving inductive loads, and 500ma from 50v lines (pull down). It should be good enough to drive components that are powered directly from the main battery voltage.

For more info and example circuits see the UML2803A data sheet. http://www.ti.com/lit/ds/symlink/uln2803a.pdf

Since you are now showing that you already have a PCB, as one alternative you might just add diodes directly across each of the on-board (middle) relay coils, add these physically right at the relay pins, (similar to that suggested in another answer).

As for using larger filter (bypass) caps, that may also be beneficial. Since it is an automotive environment be sure to use caps rated for high temperature and keep the voltage rating at least 3x the expected nominal voltage. Extra caps on the Nano supply lines may be a good start too.

In addition, here is an article for improving the immunity of embedded u-controller systems, including some info on automotive environments. https://www.embedded.com/design/real-time-and-performance/4006744/Tutorial-Improving-the-transient-immunity-of-your-microcontroller-based-embedded-design--Part-1

\$\endgroup\$
  • \$\begingroup\$ Thanks to both of you for looking at this. I will do some experimenting on the weekend on the board assy. And, I really learned some things from the embedded.com articles (all 5) - especially new search terms so I can do some more learning! \$\endgroup\$ – BigAl1 Jan 19 '18 at 0:40

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.