Here's and edited and corrected version in case someone wants to print for their notes:
I've spent a good bit of time perfecting my 4th axis and I thought I'd share what I learned with others here.
Under normal circumstances, the 4th or 'A' axis is angular and the moves are called out in degrees. If you have a CAD/CAM software that supports a 4th axis, you are in good shape. If all you have is a 2.5D CAD/CAM, then things can be a bit more challenging.
First, lets address the 4th axis mechanics. My and most other 4th axis 'conversions' involve adding a stepper motor to a rotary table. Simple enough. In my case my rotary table was a 1:72 ratio. 72 turns of the worm results in one 360 degree rotation of the table.
My stepper motor is a 200 step per revolution (1.8 deg) per step (360 deg/200 steps=1.8deg/step) My controller runs 1/8 micro step mode so it takes 1600 step pulses (8*200) to make a complete 360 degree motor rotation.
72 motor rotations makes one rotation of the rotary table so 1600*72 means 115,200 steps for one rotation of the rotary table.
If we divide 360 degrees by 115200, we get .003125 degrees per step.
Alternately, we can calculate the number of degrees required to move a linear distance around the circumference of a part.
For example: We have a part that is 1.5” in diameter. 1.5* Pi (3.1415) gives us a circumference of 4.7123” If we divide 4.7123 by 360 we get .01309 inches of linear movement per degree.
If we want to move a linear distance of 1.125” on our 1.5” diameter (4.7123" cir) part, we divide 1.125” by .01309 in/deg and get 85.94 degrees of movement required to move 1.125” linear on the 1.5” diameter part.
Thus, we can create a correction factor or scaling factor for our 4th axis by dividing the circumference of the part by 360, and manually coding the linear distance for the ‘A’ axis move.
Alternately, if your CAD/CAM software has a scaling feature, you can create a scaling correction factor. You would create your part in standard 2.5D with X & Y moves with Y typically being the axis to be converted to ‘A’. You take the circumference and divide it by 360 then take the inverse of that value (1/x) and that becomes your scaling correction factor.
Using the previous example: 1.5”* 3.1415= 4.7123”
4.7123”/360=.01309
1 divided by 0.01309=76.397 scaling correction factor
Therefore, you would scale your ‘Y’ axis by a factor of 76.397 to get the equivalent linear move on the ‘A’ axis. Once you post the scaled code, you would do a simple search & replace substituting ‘A’ for ‘Y’ in your text editor. The end result X, Y, back plot & drawing will look strange because the Y axis will be substantially elongated. But it will be correct as far as the computer is concerned.
While it does work, this later method has an inherent problem. The feed rate will be significantly slower than the desired or specified feed rate. And IJ Moves will not work as they are functions of the X & Y axis, they are not recognized in an A move.
As a result, I had to search for a better method. Thus part 2.
Using the same math:
72:1 ratio, 1600 steps per rev of the motor, 115200 steps for 360 rotary table movement .
In Mach2 (my version), we can take the total number of steps for 360 deg. Table rotation and divide it by the circumference to determine the number of steps per inch of movement. Again using the previous example:
1.5” diameter*3.1415=4.7123”
115200/4.7123=24447 steps per inch of linear movement.
Calculating for the diameter of the part, we take the solution and use it in the ‘Steps per Unit’ setting for the Rotary axis in the motor tuning menu. We do this for each different diameter of part that we have machine. For a 1.5” diameter, we enter 24447 for our steps per unit.
Thus, by doing so we do NOT have to scale our ‘Y’ axis by a calculated scaling correction factor. Our back plot & drawing appears normally. The beauty of it is the specified feed functions correctly.
Now, in order for the IJ moves to work correctly on our rotary axis, we have to substitute the Rotary axis for the Y axis (or X if you desire), then remap the Y axis to the A axis. It’s a lot simpler than it sounds.
First I created a new profile called rotary and cloned the Mach2mill profile. This retains all your setting currently in use.
I configured the output ports so that the controller output for the 4th axis stepper was on the Y axis port. Just swap the output pin numbers in the port menu between Y and A.
I swapped the motor tuning data between the Y axis & 4th axis, changed the steps per units as noted above for the diameter I’m working with.
Unticked the A axis Angular setting
Changed the Hotkeys so that they worked as in Conventional mill mode U/D arrow keys controlled the remapped A axis (now the Y axis), and my Home/End keys that control the Y (now A rotary axis) This prevents any jogging crashes when going from Conventional and Rotary Mach configurations since the jog keys will move the same axis regardless of the configuration (Mill or Rotary) selected.
Changed the Motor Reversals as required for the proper directions.
Created a new Shortcut Key for the Rotary profile Configuration, I used the lathe icon to prevent a mistake.
Now, no matter what I do in my CAD/CAM software the posted code needs no changes, I can perform the operations in either the Flat 2.5D environment or the rotary environment by simply selecting the appropriate start up icon. All my posted code remains the same. The tool path display functions normally. The rotary mode tool path looks just like a 2.5D tool path.
The only setting I have to change for a job is the Steps per Unit setting per the math/diameter discussion & the backlash setting for the diameter of the part I am working with.
Hope this little exercise is of some help to others.