Improving positional accuracy / Minimizing backlash effect #1
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Proposal: Optimize Pathing & Hardware to Mitigate Stepper Backlash
Context: The 28BYJ-48 stepper motors have a significant amount of gear backlash (slop) in their internal reduction gears. Every time a motor reverses direction, the internal motor shaft spins for a few steps before the output shaft engages, leading to positional inaccuracy and drift at the end effector of the 5-bar linkage.
To improve positional accuracy without replacing the motors, we can explore the following solutions:
1. The "Consistent Approach" Method (Firmware or Frontend)
Enforce a rule that the arms must always approach a final target coordinate from the exact same motor direction.
2. "Slack Take-up" on Reversal (Firmware)
Handle the backlash invisibly under the hood by adding hidden steps during direction changes.
last_directionof each motor inmain.cpp. Measure the exact backlash amountB(usually 15–30 steps). Whenever a motor receives a command to reverse direction, the firmware instantly moves the motor an extraBsteps in the new direction before it begins counting the actual movement.Bsteps just to "spool up" the gears until they bite, without updating thecurrentPositiontracking.3. Path Sorting / Traveling Salesperson (Frontend)
Minimize the number of reversals that happen during a sequence.
4. Hardware Hack: Elastic Pre-loading
A physical solution to keep the gears permanently engaged.
We should try 4 if unable 2 should be easiest