FYI, a floating shield is useless.
Things definitely got better with floating shields on the stepper motor cables (limit switch sheilds were still grounded). I noticed the difference on my scope. And more importantly, with the behavior of the CNC router. When I had the motor cable shields grounded, the CNC went into limit switch alarm mode right away. With floating shields, this didn't happen anymore. I'm not saying the way I have it now is the right way; it just works better then having all the shields tied together to ground. I do have all the motor shields connected to each other.
1) You get 4V of noise, how are your scope probes setup? Are they set to 1x or 10x? (It looks like you have the same scope as one I use at work, and I know they can be either). If they are set to 10x, try setting them to 1x and see if the problem is still 4V. (Looking at the problem can make it worse since the probe is high impedance)
They are set to 1X. I have Rogol DS1102E
2) Try the low-pass filter. Since you aren't going for anything high speed, Use a big cap and small resistor. Make sure to put it next to the Arduino.
I was going to use a 0.1uF cap with 1.5k resistor. Do you think I should use a different combination?
3) Try adding some clip-on ferrite beads near your Arduino on the cables. Just clip them around the whole cable.
Limit switch cables or stepper motor cables?
4) How are your grounds configured? Do you have a loop in it, or is it in a proper star configuration? Can you put the electronics in a box, separate from your motors?
There's a power supply that provides 24 volts to the motor controller (AKA gshield). The gshield plugs into the Arduino Uno, but the gshield does not power the Uno. Ground on the gshield and Uno are, of course, connected via the stacking headers, but the Uno is powered via USB from my laptop. I tested the CNC's 24 VDC power supply with my ohm meter to see if the ground terminal was connected to mains ground - it was not, which is what I would expect. But I figured I might as well check.
I have a ground wire coming off the Uno that goes to a little proto board with some small screw terminal blocks attached. This is where the limit switches are wired into. So all the grounds are pretty close together on the proto board.
Here's a picture of the setup. The three limit switch cables enter on the right, go into the terminal blocks, then down to the gshield, which is just bringing up pins D9,10,11 from the Uno underneath. I have the shield drain wire going into the same terminal block opening as the ground wire.
When I took my measurements with the scope I put the probe right on the limit switch wire as it entered the terminal block. The ground clip was connected to a wire I had coming out of another terminal block on the proto board.
330 ohm pull-up resistors are soldered to the bottom of the UNO. I've got a 0.1uF cap on one of the 3 limit switch cables, it's inserted into the screw terminal block along with the wires (cap was installed after I took the above picture).
Moving the electronics would take a lot of rewiring; something I'm not ready to do yet.
Thanks for your help. I'll give the low-pass filter a try tomorrow.