Gear Cutting on Snapmaker 2.0
by illusionmanager in Workshop > CNC
195 Views, 0 Favorites, 0 Comments
Gear Cutting on Snapmaker 2.0
Cutting involute gears
With the Snapmaker rotary module and a small add-on, it is possible to cut very accurate gears. You can cut gears this small using a small fragile flat end mill (for example 0.3 mm), but for this project I use a dedicated involute gear cutter. This type of cutter has the exact mathematical tooth profile used in real gears.
The involute shape ensures that when two gears mesh, the contact point between the teeth always moves along a straight line. This gives smooth motion and constant speed ratio. Involute cutters are available for different gear modules and tooth count ranges.
The cutter shown here is for Module 0.5 gears. Because the exact tooth shape depends on the number of teeth, different gears require different cutters. I bought a full set for Module 0.5. In the video I cut a gear with 20 teeth, which requires cutter number 3. This cutter is suitable for gears with 17 to 20 teeth.
Supplies
- 22 mm brass rod
- thick washer 24-30 mm in diameter, 1.5 - 3.0 mm thick, 8 mm hole
- M8 nut
- M2 allen bolt
- set of involute gear cutters with module 0.5
Make the Arbor
I made a custom arbor from brass with the following diameters:
- 7 mm
- 22 mm
- 16 mm
- 8 mm
The 16 mm section is 3.2 mm thick, slightly thinner than the cutter itself. In the side of this section I drilled a 1.6 mm hole and tapped it for M2. A small M2 Allen bolt fits perfectly into the groove of the cutter and prevents it from rotating.
I made this part on a Proxxon mini lathe that I bought second hand last year. If you really want to, you could also make this on the Snapmaker using the rotary module, but that would take much longer. But attached you'll find an stl file that you could use for it. Finally, I cut an M8 thread on the 8 mm end using a die.
Downloads
Mount the Cutter
Slide the cutter onto the arbor with the engraved text facing toward the threaded end. Use a thick washer and an M8 bolt to clamp it securely.
Mount the arbor in the CNC head using a 7 mm ER11 collet. I could have made the shaft 3.175 mm to fit the standard collet, but there are noticeable sideways cutting forces. Using a thicker shaft avoids bending and improves stiffness.
Prepare the Gear Blank
For a Module 0.5 gear with 20 teeth, the required blank diameter is 11 mm. Mount the blank in the rotary module and make sure it is centered accurately.
The best way to do this is with a dial gauge. Rotate the blank and check that the needle stays constant. If it moves, lightly tap the blank with a small hammer and measure again until it runs true.
Set the Home Position
Once everything is mounted, the machine needs a precise home position. The software I wrote assumes the following:
- Z = center of the blank
- Y = front face of the blank
- X = cutter just touching the right-hand side of the blank
I intentionally use the right-hand side so that if something goes wrong, the blank isn't launched into the room.
For Y, I use my phone’s selfie camera. I place it flat on the machine bed, pointing upward, directly under the front edge of the blank. With the cutter above the blank, it is easy to see when the Y position is correct.
For Z, I touch the cutter to the bottom of the blank and zero Z. Then I move the cutter up to touch the top of the blank and read the Z value. Half of that value is the center height. Move the cutter sideways, go to that Z value, and zero Z again.
Generate the G-code
I wrote a small Python program to generate the G-code automatically. The attached script is called gear-cutter.py. You run the program from the command line like this
python gear-cutter.py -h
The most important parameters are:
- -m : gear module (required, here 0.5)
- One of:
- -z number of teeth
- -r pitch radius
- -o outside diameter
- -w : gear face width (thickness)
- -f : cutting feed rate in mm/min
- -s : maximum step size in X per pass
By default the program runs in dry-run mode. In this mode the cutter stays 3 mm away from the blank and the spindle does not start. This lets you safely verify all motions. To actually cut the gear, you must add --cut.
For the 20-tooth Module 0.5 gear shown here, I used this command:
python gear-cutter.py -m 0.5 -z20 -w3 -f60 -s0.1 --cut
I used very conservative speed settings and it probably could go a lot faster, but that requires testing up to the point it fails, which I didn't do.
The output is:
Inputs / derived geometry
module m (mm): 0.5000
teeth Z: 20
pitch radius (mm): 5.0000
outside diameter OD (mm): 11.0000
outside radius (mm): 5.5000
root (valley) radius (mm): 4.3750
Cutter
recommended cutter number: #3
Cut plan
face width W (mm): 3.0000
y_extra (mm): 0.5000
Y stroke: start=-0.5000, end=3.5000 (front -> back)
cutting feed (mm/min): 60.000
max step size X (mm): 0.1000
final skim (mm): 0.0500
x_final (whole depth) (mm): 1.1250
X_SAFE (mm): 3.0000
X_RELIEF (mm): 1.0000
rapids (mm/min): 1000.000
spindle rpm: 8000
B speed (deg/sec): 24.000
mode: CUT (spindle on, real X infeeds)
passes per tooth: 12
Estimated total time: 00:22:34
Wrote: gear_Z20_m0.500.cnc
Reminder: Set Z height manually (this program does not change Z).
Reminder: Set X0 by touching the right side of a blank with a diameter of 11.00 mm
Reminder: Set Y0 at the front face.
CUT reminder: Spindle will start at 8000 rpm. Verify clearances first.
The program does a pretty good job at calculating the time it needs to make this gear.
Downloads
Cut the Gear
The generated .cnc file can now be sent directly to the Snapmaker. All geometry, cutter selection, feeds, and passes are already accounted for; only the machine zero positions must be set manually as indicated. Start the job. Once cutting is finished, part the gear from the stock.
You now have a precisely cut involute gear, ready to mesh smoothly with other gears of the same module.