Bidirectional motor using relay - how do I suppress the noise?


I have a linear actuator that I am running through a series of 3 relays - 1 relay passes the +12V, then the other two relays (that switch simultaneously) connect +12V or ground to the motor terminals. This way I can reverse the direction (but it’s one speed only).

This works great except it tends to knock out the Arduino when the relay(s) is/are released. If I press reset everything comes up and works again until I use the relay. From what I have read, I need a freewheeling or snubber or flyback diode, but most of the sources I can find only talk about a uni-directional motor.

I came across TVS diodes, which I think are for this purpose. If this is correct, can someone help me with the ratings? As I said the motor runs at 12VDC and is rated 3.5A.

If I’m on the wrong track completely, please let me know!

I would use a full wave bridge rectifier to suppress inductive kickback from the motor but need to see a schematic of your circuit. Do you have diodes across the relay coils?

The relays are opto-isolated from the Arduino, are diodes required on the coils in that case?

edit: I should be more clear, I'm using the 8-relay board that has optoisolation and this link: Opto-Isolated 8 Channel Relay Board (Price reduced again) would have me believe that there is a diode across each coil (D1 in the schematic on that page). I can see the diode on the board in front of each coil.

No, the coil diodes are built in, you still need 4 diodes to suppress motor kickback, how do you have the motor connected to the relays?