[Frank Herrmann] had an interesting idea to turn a geared DC motor into a servo motor assembly, but with a stepper motor-like interface. By stacking some small PCBs behind the motor body, it was possible to squeeze a DRV8837 DC motor driver and a pair of hall effect sensors on the first PCB layer, with the magnetic encoder nestled tightly behind it. Pin headers at the edge of the PCB connect to a second PCB bearing the microcontroller, which is based on the cheap STM32L432. The second PCB also holds an associated LDO and debug LED. Together, this handful of parts provide all that is needed to read the encoder, control the motor rotation and listen on the ‘stepper motor driver’ interface pins hooked up to the motion controller upstream. The Arduino source for this can be found on the project GitHub.
Whilst [Frank] mentions that this assembly has a weight and torque advantage over a NEMA 17 sized stepper motor, but we see no hard data on accuracy and repeatability which would be important for precise operations like 3D printing.
This project is part of a larger goal to make a complete 3D printer based around these ‘DC motor stepper motors’ which we will watch with interest.
While we’re on the subject of closed-loop control of DC motors, here’s another attempt to do the same, without the integration. If these are too small for you, then you always repurpose some windscreen washer motors.