hereās my $0.02 after dealing with this for a while. Sorry for the long post, but I think the details of my journey might help others.
First off, if you have limit switches installed and you donāt have some sort of active noise filtering (like either opto-isolators or relays or something that is driven by current), then really all bets are off. I did some experiments years ago with limit switches and just pull up/down resistors and was seeing VERY high noise from just the stepper motors alone, not to mention external factors of spindles, vacuums, shop equipment, fluorescent lighting, etc. There were folks on the shapeoko forum showing oscilloscope captures with over 3 volts peak-to-peak just from the motors. (I still canāt understand how isolating these isnāt part of the G-shield itself). So again, if you have limit switches and are just relying on a strong pull up or pull down resistor, you are asking for an alarm in the middle of a long job. It might work now, but eventually, it is going to trip. Those wires to the limit switches are effectively big, long, antennas.
So, I added some circuitry to opto-isolate all of my limit switches and even my push button inputs. Things ran fine for many months and many cuts. Just yesterday I was doing one of my longer jobs and removing lots of material and making lots of dust. Right in the middle of the job, easel stopped. I checked and the COM port had completely disappeared from Device Manager. So, I updated to the latest drivers for the Arduino.
Luckily I wrote down the machine coordinates of my zero point so I reset and cut again. About a third of the way in, it stopped again, but this time, the COM port was still there (so Iām guessing the driver update must have helped).
I decided it might be Easel Local. So, I uninstalled Easel Local, reinstalled so I could upgrade to the latest, reset my zero, and cut again. Once again it stopped. I decided to try another computer and another GCODE sender.
So, I downloaded the GCODE from Easel and ran it through Chilipeppr with the SPJS running on a raspberry pi 2 (so completely different USB port, power, operating system, everything). I ran with Chilipeppr and it ran for a while and then stopped. GRBL was going into Alarm and presumably, I just couldnāt see it in Easel. I cut again, and saw that it was reporting a limit alarm. Thatās weird - Iām not anywhere near any limit switches! And I donāt think there could be enough electromagnetic interference to light up an LED in the opto-isolator. What could be tripping it?
In any case, Iāve got stuff to do before Christmas, so I issued a ā$21=0ā to disable hard limits. Then I re-ran. Amazingly, it still stopped even with GRBL ignoring the limit switches. I checked it and it didnāt say alarm, but basically all of GRBL had locked up. It did this a few more times so it wasnāt a one time thing.
So, I was convinced something is affecting the Arduino and since it has happened on two different computers, I donāt think it is USB or software related. I noticed something peculiar though. All that dust I was sucking up through my dust deputy cycloneā¦ it was sticking to the outside of the hoses and to everything. If I passed my finger over it, the dust would jump up to cling to my finger! I remembered that when I bought the dust deputy, it came with some metal tape for controlling static electricity and I just tossed that aside, ābahā¦ who needs thatā. That made me wonder if all this dust I was sucking up was building up huge potential of tens of thousands of volts. So, I turned it off and cut for a while. When the dust became too much, I started sucking up dust straight to the vacuum without the cyclone. I finished all my cuts with no resets.
So, am I crazy? Apparently not. Watch this: ShopVac Cyclone Generated Static Electricity - Dangerous - YouTube
Given that a rough estimate of the dielectic breakdown of air is somewhere around 70,000 Volts per inch, a big olā zap like those could be tens of thousands, or even hundreds of thousands of volts. This tells me that along with proper noise insulation on limit switch lines, if folks are using dust collection, we are going to have to figure out ways to ground everything and dissipate the static buildup from the dust removal.
Iām 80% convinced that this is what was zapping my Arduino in the middle of a job. In closing I would:
- Make sure you have active (not passive) filtering on any limit switch inputs to the Arduino. Also, the power supply on the input side of your isolation should be the 24 V supply and not the 5V that the Arduino is running on. Keeping those power supplies completely isolated is important.
- Update your serial port driver using the latest from the Arduino package.
- Update Easel Local to the latest if you havenāt already.
- If you are running with dust collection, take proper steps to dissipate the static electricity buildup.
OK, sorry for the extremely long grandpa rant. I hope that helps someone.
FG