This article discusses the flatbed correction feature built into myCNC software which is often useful when the working table is not even or has certain spots which are higher or lower than the reference position. This is especially useful in cases when something like a tangential knife needs to go over the uneven table, with up to a millimeter of play being involved, resulting in a cut that does not actually go through the working material properly.
In order to account for this, go into Settings > Config > Technology > Special Purpose > Flatbed Correction.
The screen presented to you will be the following:
First of all, enable flatbed correction:
Next, the table on this settings page presents a number of values in the XY-plane and their z-positions. These values can either be recorded by using the AutoMeasure procedure (recommended) or by using a sensor and recording each point individually by using the M402 macro (older versions).
Using the AutoMeasure procedure, the operator can set the reference z-height, the number of points at which the height measurements will be taken for the XY-plane, and the coordinates on which the measurements will be taken. The Auto Measure Procedure button can then be pressed to begin the probing process.
In order to use the M402 macro, move the sensor to the position you want to measure, then press the Measure (M402) and Save button. This will lower the sensor down until contact, then lift it back up and record the z-position at which the sensor was triggered.
In order to remove any of the table level discrepancy values, you can press the Delete button for each particular value.
By adding these correction points, myCNC software will use triangulation in order to create a complete updated map of the working table. From here on, whenever Flatbed Correction is enabled, the machine will automatically adjust the z-axis height of the working tool in order to adjust for the table level changes depending on where in the XY-plane it currently is.
The code for the M402 macro can be found below:
(Surface measure macro) G28.2 Z0 (save current Z into Register1.Z) M89 L1 P8 (watch for input(P) to be closed (L1) - EDIT THIS) G91 G0 Z -35.000 F 400.0 (move down, stop if sensor triggered) G91 G0 Z 2.000 F 800.0 M89 L1 P8 (watch for input(P) to be closed (L1) - EDIT THIS) G91 G0 Z -2.000 F 20.0 G4 P0.2 G90 G10 L81 P8171 Q5021 G90 G10 L81 P8172 Q5022 G90 G10 L81 P8173 Q5023 G90 G10 L80 P8170 Q1 G91 G0 Z10
Here, you have to edit the two lines with the EDIT THIS comments. In the input P, you have to specify the input number for the sensor (set as 8 in this example), and in the L field you have to specify the behaviour that will be interpreted as the sensor being triggered (0 for a normally closed sensor which will be opened when triggered, and 1 for a normally open sensor which will be closed at contact).