Gear Cutting on Snapmaker 2.0

by illusionmanager in Workshop > CNC

195 Views, 0 Favorites, 0 Comments

Gear Cutting on Snapmaker 2.0

gear cutting on a 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

washer nut.jpg
  1. 22 mm brass rod
  2. thick washer 24-30 mm in diameter, 1.5 - 3.0 mm thick, 8 mm hole
  3. M8 nut
  4. M2 allen bolt
  5. set of involute gear cutters with module 0.5

Make the Arbor

arbor.jpg
M8-die.jpg

I made a custom arbor from brass with the following diameters:

  1. 7 mm
  2. 22 mm
  3. 16 mm
  4. 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

assembled.jpg
collet.jpg
cutter.jpg

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

dial.jpg

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:

  1. Z = center of the blank
  2. Y = front face of the blank
  3. 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:

  1. -m : gear module (required, here 0.5)
  2. One of:
  3. -z number of teeth
  4. -r pitch radius
  5. -o outside diameter
  6. -w : gear face width (thickness)
  7. -f : cutting feed rate in mm/min
  8. -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

Gear 20.jpg

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.