TinyG2 (Arduino Due+gShield) weird probing behavior.
My TinyG2 (Arduino Due+gShield) adventure continuation, hopefully not a neverending story. This time I want to report weird probing behavior.
I had some problems during the first PCB autoleveing last Sunday but after few tries it went somehow successfull through all 60 probe points. So I thought problem has been solved. But yesterday I tried another Autolevel and also Touch Plate and it looks “Due live its own life”.
The probe pin is using Zmin (D18 pin on the Arduino Due) and according to the appropriate settings.h it is defined as:
// Z min
#define DI5_MODE INPUT_ACTIVE_LOW // Z probe
#define DI5_ACTION INPUT_ACTION_NONE
#define DI5_FUNCTION INPUT_FUNCTION_NONE
INPUT_ACTIVE_LOW is a NORMALLY_OPEN equivelent, which I would expect is correct for a probe. The probe pin (D18) should be held HIGH state (VCC = 3.3V for Arduino Due) until it touch the copper = gets connected to GND and changing state to LOW.
I connected GND wire to the tool (bit) and the Z_min_ (D18) PROBE pin to the copper clad. Started Touch Plate widget first and it randomly works/doesn’t work/works… Then I used an external pull-up resistor with relatively low value to force a strong pull-up for the D18 pin and it did not help. Depending on the D18 logical state (which depends on whether it was connected to VCC or GND few moments before) it works or it does not and as the D18 logical state will fluctuate if not continuously pulled-up to VCC or pulled down to GND this is the reason why it sometimes works and sometimes does not.
Then I simply connected a DuPont wire to D18 and started Touch Plate test. Z-axis went slowly down, as expected, until I touched GND with the other end of DuPont wire. But when I touched the wire to VCC the situation was exactly the same. So I can ‘trigger’ the probe by connecting D18 to GND or VCC - it does not matter. The same happens with autoleveling. It does not matter whether I connect the D18 probe pin to GND or VCC to ‘trigger’ the probe.
Using pull-up or pull-down resistor ‘forces’ the probe pin to a HIGH or LOW logical state and probing gets triggered immediately at Z-probe-max height.
Based on my experience current state of TinyG2 development does not assure that your machine hardware can be operated predictably. I had some travels into bed due to failed probing last weekend, causing some bits to crack and some bad words to go out of my mouth…
In order to be on the safe side I made ArduinoDue+gShield+3motors+ a bread-board simulating limit switches and probe and now I can test, test and re-test with motors running in the air.
The only question is:
When the ArduinoDue based TinyG2 platform will complete its experimental phase and become a production ready device for CNC hobbyists?