Hi everyone. Just finished setting up GRBL on an Arduino and retrofitted an old Shapeoko 3 with it. Just got everything working. Everything jogs the way it's supposed to. Homing will not work. I am using Induction switches and can verify they are working through Serial Monitor and being triggered just fine (X, Y, and Z). I'm powering the switches with their own 12V Wall Wort I repurposed. I did this so the power supply would be separate from the controller to prevent motor noise from screwing up the switches. When I give the $H command the Z moves the wrong way a couple of times, and then X and Y follow and do the same. Like they jog as if they found their homing switches. But they have not. Any help out there? GRBL SETTINGS are as follows. $0 = 10 (Step pulse time, microseconds) $1 = 255 (Step idle delay, milliseconds) $2 = 0 (Step pulse invert, mask) $3 = 2 (Step direction invert, mask) $4 = 0 (Invert step enable pin, boolean) $5 = 0 (Invert limit pins, boolean) $6 = 0 (Invert probe pin, boolean) $10 = 255 (Status report options, mask) $11 = 0.020 (Junction deviation, millimeters) $12 = 0.010 (Arc tolerance, millimeters) $13 = 0 (Report in inches, boolean) $20 = 0 (Soft limits enable, boolean) $21 = 0 (Hard limits enable, boolean) $22 = 1 (Homing cycle enable, boolean) $23 = 0 (Homing direction invert, mask) $24 = 100.000 (Homing locate feed rate, mm/min) $25 = 2000.000 (Homing search seek rate, mm/min) $26 = 25 (Homing switch debounce delay, milliseconds) $27 = 3.000 (Homing switch pull-off distance, millimeters) $30 = 1000 (Maximum spindle speed, RPM) $31 = 0 (Minimum spindle speed, RPM) $32 = 0 (Laser-mode enable, boolean) $100 = 40.000 (X-axis travel resolution, step/mm) $101 = 40.000 (Y-axis travel resolution, step/mm) $102 = 200.000 (Z-axis travel resolution, step/mm) $110 = 10000.000 (X-axis maximum rate, mm/min) $111 = 10000.000 (Y-axis maximum rate, mm/min) $112 = 1000.000 (Z-axis maximum rate, mm/min) $120 = 500.000 (X-axis acceleration, mm/sec^2) $121 = 500.000 (Y-axis acceleration, mm/sec^2) $122 = 270.000 (Z-axis acceleration, mm/sec^2) $130 = 845.000 (X-axis maximum travel, millimeters) $131 = 850.000 (Y-axis maximum travel, millimeters) $132 = 95.000 (Z-axis maximum travel, millimeters)
EMI causing false triggers. Bare arduinos lack filtering that a proper controller like a BlackBox has (Optocoupled and RC filtered inside the BlackBox): See docs:blackbox-x32:start [OpenBuilds Documentation]
I am aware of the filtering issue. This is why I used a different power supply. Is that not sufficient?
EMI is induced from noisy cabling (motors, spindle, mains) running in proximity to the low voltage signal cabling. Apply seperation. 12v power brick - did you check voltage ripple with a scope, little power bricks are often very noisy when under very little load - the inductives draw very little current - some only stabilising when under a good load. Also beware of 12v powered Inductives, the signal line is pulled up to 12v internally and can easily damage the arduino (5v max input) You should include a voltage divider, buffer chip, level shifter, or if its NPN type - you can do the reverse biased diode trick. Optocoupling and Filtering is a better bet though. A BlackBox will greatly increase your ease of use and reliability Get our Xtensions Limits with it for even better EMI immunity. Also more repeatable than Inductives.
So sounds like the solution to all my problems is to just ditch these inductive switches and get some mechanical ones? I really appreciate your help on this. I really don't want to have to get all those voltage divider/buffer chip/ whatevers. Just want to cut some wood!!
Not quite, we'd say spacing the wires would probably get you a little closer. Also, don't go for "mechanical switches" - go for Xtensions Limits: Xtension Limit Switch Kit A little more documentation on conquering EMI: docs:blackbox-x32:faq-emi [OpenBuilds Documentation]