zombieengineer
ZombieEngineer
Just finished a long term project and think it is time to deal with the thorny issue of rigid tapping.
At this point of time MASSO has yet to implement rigid tapping as other stuff has been deemed higher priority (including the release of the MASSO touch - it has been on their "Todo list" that long...).
My thoughts were to take a servo motor and configure it for Speed / Position mode (mode selected by a digital input), wire the Z axis to the step/direction inputs and then use the "Electronic Gear" to perform the Z axis to spindle rotational scaling. Turns out that the electronic gear settings on servo motors can not necessarily be updated easily on the fly. For the Delta ASDA B2 servo motor the numerator can be dynamically updated on the fly, but the denominator can only be done while the servo is disabled (SON Digital Input = Low). The MASSO branded servo motors the parameter only becomes active after a power cycle (arrgg!).
My options at this point would be to perform the "Electronic Gear" outside the servo motor using a micro-controller or use an FPGA. Using the FPGA is the over-kill option as this would allow handling of pulse rates >10 MHz. The micro-controller option has some trade-offs, IO voltage levels versus CPU speed. The Arduino series of micro-controllers are largely 5V based but typically have a clock speed of 16 MHz (the Arduino Nano Every has a clock speed of 20 MHz). A clock speed of 16 MHz sounds much larger than the 100 kHz however each instruction processed by a micro-controller can take multiple clock cycles. Some bench testing will be required to see how fast an Arduino controller can process axis step signals. The ESP32 micro-controller is a 3.3V device (will require logic level conversion circuitry) but the clock speed is 160 or 240 MHz. The clock speed of the ESP32 may be sufficiently high that there is enough clock cycles to perform the electronic gear calculation on-the-fly.
One strange thing that came out is the spindle servo motor should have the same number of steps for a revolution as the Z axis requires to travel the distance of a single thread at the finest pitch that will be supported. Using this spindle step count means that the spindle will require the same step rate as the Z axis at the finest pitch, and a lower step rate than the Z axis at coarser pitches. Therefore with coarser pitches some of the Z axis step pulses will be dropped to achieve the correct step ratio (dropping a step pulse is easier than creating more than one step pulse for each Z axis step).
I am aiming to be able to perform rigid tapping for M3 to M6 threads and the UNC threads for equivalent diameters. The standard M3 thread is 0.5 mm while the equivalent UCN thread is 40 TPI (0.635mm pitch). My Z axis requires 1000 steps for 1 mm of travel, therefore 0.5 mm travel requires 500 steps => Spindle needs to be configured for 500 steps/rev.
In the next posting I will explain how the electronic gear works / implemented.
At this point of time MASSO has yet to implement rigid tapping as other stuff has been deemed higher priority (including the release of the MASSO touch - it has been on their "Todo list" that long...).
My thoughts were to take a servo motor and configure it for Speed / Position mode (mode selected by a digital input), wire the Z axis to the step/direction inputs and then use the "Electronic Gear" to perform the Z axis to spindle rotational scaling. Turns out that the electronic gear settings on servo motors can not necessarily be updated easily on the fly. For the Delta ASDA B2 servo motor the numerator can be dynamically updated on the fly, but the denominator can only be done while the servo is disabled (SON Digital Input = Low). The MASSO branded servo motors the parameter only becomes active after a power cycle (arrgg!).
My options at this point would be to perform the "Electronic Gear" outside the servo motor using a micro-controller or use an FPGA. Using the FPGA is the over-kill option as this would allow handling of pulse rates >10 MHz. The micro-controller option has some trade-offs, IO voltage levels versus CPU speed. The Arduino series of micro-controllers are largely 5V based but typically have a clock speed of 16 MHz (the Arduino Nano Every has a clock speed of 20 MHz). A clock speed of 16 MHz sounds much larger than the 100 kHz however each instruction processed by a micro-controller can take multiple clock cycles. Some bench testing will be required to see how fast an Arduino controller can process axis step signals. The ESP32 micro-controller is a 3.3V device (will require logic level conversion circuitry) but the clock speed is 160 or 240 MHz. The clock speed of the ESP32 may be sufficiently high that there is enough clock cycles to perform the electronic gear calculation on-the-fly.
One strange thing that came out is the spindle servo motor should have the same number of steps for a revolution as the Z axis requires to travel the distance of a single thread at the finest pitch that will be supported. Using this spindle step count means that the spindle will require the same step rate as the Z axis at the finest pitch, and a lower step rate than the Z axis at coarser pitches. Therefore with coarser pitches some of the Z axis step pulses will be dropped to achieve the correct step ratio (dropping a step pulse is easier than creating more than one step pulse for each Z axis step).
I am aiming to be able to perform rigid tapping for M3 to M6 threads and the UNC threads for equivalent diameters. The standard M3 thread is 0.5 mm while the equivalent UCN thread is 40 TPI (0.635mm pitch). My Z axis requires 1000 steps for 1 mm of travel, therefore 0.5 mm travel requires 500 steps => Spindle needs to be configured for 500 steps/rev.
In the next posting I will explain how the electronic gear works / implemented.











