So I was thinking of using a closed-loop motor in my 3D printer for better accuracy and high-speed printing without losing steps. I have analyzed options available including just tweaking stepper current and firmware changes to prevent step losses but I want to find the best way to do it with encoders. The problem is I need a pretty high resolution for a 3d printer and usually, high-resolution servo motors use potentiometers that are limited and not suitable for a 3d printer. I am thinking of building my own closed-loop continuous rotation servo using stepper/DC motors and encoders but I can't find any high-resolution encoder at a reasonable price. So is there any way to somehow use low-resolution encoders (like 36 pulse every full turn) or is there any encoder type that I can use for better accuracy at a reasonable price other than optical ones? Also is there any other solution for closed-loop systems at a reasonable price?
Note that I am aware that I may need to modify firmware or write my own code for motors and program them from scratch.
Note: You might consider this question Closed-loop stepper motors a possible duplicate but I have read that and my main problem is not being able to find any cheap high-resolution encoder for this purpose.
Also for some reason, I can't use products like BTT S42B closed-loop stepper drives, my only option is to build them myself.
TL;DR:
Is there any type of encoder with high resolution and cheap price for use in 3D printers? (I don't mean brand, I mean technology)
- 169
- 2
- 10
2 Answers
You can use a magnetic position encoder.
AS5048B High Resolution Position Sensor
14-bit rotary position sensor with digital angle (interface) and PWM output
14 bit means 16k steps/rotation. With a stepper which does 200 steps/rotation and 16x microstepping, you will need only 11 bit, so you have plenty of extra accuracy you can use to filter noise.
You may use AS5600 Positioning Sensor instead, which is 12 bits, since you don't need to track each microsteps in a closed loop, 4x is enough.
AS5600 in PWM mode does up to 920 Hz, AS5048 1 kHz. I'm not sure in I2C mode but surely more. Of course you have to take into account delay between measuring the position and transmission of the position.
The gearbox approach is solid, but it will be 100x slower, and you said you wanted speed.
- 111
- 1