The Cycloid Drive 25:1: a 3D-printed NEMA17 gearbox, measured on our bench. Free parts list, files $7.99.See the parts list
Add-on for the Cycloid Drive 25:1 / HS-MEC-001-PRO / files available

Make it closed-loop.

A magnet in the output hub and an MT6701 encoder on a printed bracket read where the output really is. The firmware corrects the stepper through the gearbox backlash.

$4.99Digital download · STL + STEP · instant

Secure checkout by Stripe. Your download links appear right after payment and work for 24 hours. Terms of sale · Refunds.

EncoderMT6701, 14-bit
BoardESP32-S3
Gearbox changesNone

Honest status: this bracket is printed and running on our bench drive, and the numbers below were measured with it (one unit, no load). The firmware in the ZIP is a standalone port of our bench firmware; it compiles for ESP32-S3 but this exact sketch has not been run on our bench yet. You need the free Cycloid Drive 25:1, built.

01 / What you get

In the ZIP.

  • The bracket: STL in print orientation (no supports, about 84 × 16 × 10 mm) and STEP in the drive's assembly frame. It is the bracket from our bench, rebuilt in CAD (matches the printed part to 0.005 mm), now with the HW mark.
  • Closed-loop firmware for ESP32-S3 (Arduino): pins and settings at the top, Serial commands in degrees, and a cal command that measures the magnet alignment and saves it.
  • Wiring diagram (PDF + SVG): MT6701 + ESP32-S3 + TMC2209 + motor + supply.
  • Illustrated guide (PDF): print, fit, wire, flash, calibrate, troubleshoot. Plus a BOM and a Bambu Studio project for an A1 (PLA, checked in the slicer only).

Nothing on the gearbox changes: the bracket stands on two of the six cap screws (replaced by M3 × 40), and the output hub already has the magnet pocket.

02 / What you need

Parts to add.

On top of the parts for the drive itself. Parts we use →

Parts for the encoder add-on
PartQtyNoteLink
MT6701 encoder board123 × 23 mm, M2 holes on a 17.05 mm squareParts list
Diametric magnet Ø4 × 2 mm1Came with our board; goes in the hub pocket
M2 × 5 screws2Board to bracket (self-tapping)Parts list
M3 × 40 socket head screws2Replace two cap screws
ESP32-S3 dev board13.3 V logic, native USB
TMC2209 driver1STEP/DIR, the same as the drive’s test sketchParts list
03 / Measured on our bench

What we measured.

One printed drive (PETG-CF), no load, October 2026, with our bench firmware.

Bench results with this encoder
WhatResultHow
Ratio25.000 : 1Encoder moved 1.000° per commanded degree over ~10 turns, loop off
Repeatability, loop off1.32 arcmin0 → 90° ten times, same direction; 1 encoder count; first disc version
Reversal error, loop off → on57 → 1.98 arcminMean, no load; with the loop on, as read by the same encoder that closes the loop
Repeatability, loop on4.04′ at 90°, 1.29′ at 0°The loop settles anywhere inside its ±3 arcmin deadband
Not measured—Torque or accuracy under load; accuracy against an external reference
04 / Questions

Good questions.

Does it work with my Cycloid Drive download?

Yes: every version of the Cycloid Drive 25:1 files (the free v1.0.0 and v1.1.0, and the current v1.1.1) has the same cap screws and the magnet pocket in the output hub.

Why measure the output, not the motor?

A motor encoder can't see the gearbox backlash. Reading the output lets the firmware correct for it: on our bench the reversal error read by the encoder fell from 57 to about 2 arcmin with the loop on.

Can I use an Arduino Uno or a classic ESP32?

The sketch is written for ESP32 (it uses a hardware timer and a second core). A classic ESP32 works with the pin changes listed at the top; an Uno does not.

Is the firmware tested?

Its control loop is ported from our bench firmware, which produced the numbers above. This standalone version compiles for ESP32-S3, but we have not run this exact sketch on the bench yet. If something misbehaves, email help@harbeworks.com and we will fix it.

Don't have the drive yet?

Check the drive's free parts list, build it first, then add the encoder.

See the Cycloid Drive 25:1