I have built a small yarn winder that uses 2 12V DC motors geared down to 100 RPM. One turns the yarn bobbin, while the second runs a jack screw that moves a traveller to level out the yarn across the bobbin. The traveller hits two limit switches at the ends of its desired travel. The limit switches send a signal to the Arduino board that then sends a signal out to a set of relays (two are electronic, the last one in the set is an old fashioned coil operated DPDT relay that does the actual DC polarity switching.) The DC motors reverse direction immediately upon receiving the polarity reversal. When I first start the unit all runs fine, but about two minutes in the signal from the left hand limit switch no longer reverses the motor, and I find the Arduino board has been fried. Replacing the board starts the cycle up again ending with another fried board. Surprisingly, none of the relays get fried, only the board. I suspect I am throwing a massive voltage spike when I reverse polarity, but that spike has to propagate back thru an electronic relay to get to the board. Surprisingly the relay is fine. I am not using any limiting resistors on the limit switch signals. Is it possible that one of them is causing the problem? If so how do I address it? Any other thoughts on what is frying my boards would be welcome.