Continuous Servo with Esp32
Posted: Tue Nov 19, 2024 9:16 pm
Hello
I am using a continuous servo to drive a gear drive for my robot arm joints - so, I need a lot more than just 180 degrees of rotation - more like 5 or 6 complete turns. I am using a Hitec Servo designed for continuous rotation, I also have a GoBilda Servo that is also programmed for continuous rotation. Modding and hacking was not necessary. I'm using Arduino IDE and using the ESP32Servo Library 3.0.5.
My issue is I want to drive the servo REALLY slow at times to get aligned just right. It starts moving forward at 1522, this is the slowest speed without stopping and even though it IS slow enough, I would like it even slower. I could accept that as the PID controller should be able to deal with it but in all honesty the real issue I have is that the speed changes are not proportional to the writeMicroseconds values.
In other words the next speed change isn't until around 1543, and it is an audible and noticeable large step up from the previous speed at 1542, and not "incremental" nor "proportional" as I would prefer. Its like it missed all of the increments from 1523 to 1542 and just jumped straight to the 1543 speed. Same way in reverse, just obviously lower numbers below 1500.
I have not yet looked into this library nor have a complete understanding of how it all comes together. But I do wonder, Is this due to a limitation of the resolution, i.e. 4 bits which is only 255, I would rather have better resolution and have better control of all speeds throughout.
Or has anyone real experience with another library that works better with continuous servos?
I am using a continuous servo to drive a gear drive for my robot arm joints - so, I need a lot more than just 180 degrees of rotation - more like 5 or 6 complete turns. I am using a Hitec Servo designed for continuous rotation, I also have a GoBilda Servo that is also programmed for continuous rotation. Modding and hacking was not necessary. I'm using Arduino IDE and using the ESP32Servo Library 3.0.5.
My issue is I want to drive the servo REALLY slow at times to get aligned just right. It starts moving forward at 1522, this is the slowest speed without stopping and even though it IS slow enough, I would like it even slower. I could accept that as the PID controller should be able to deal with it but in all honesty the real issue I have is that the speed changes are not proportional to the writeMicroseconds values.
In other words the next speed change isn't until around 1543, and it is an audible and noticeable large step up from the previous speed at 1542, and not "incremental" nor "proportional" as I would prefer. Its like it missed all of the increments from 1523 to 1542 and just jumped straight to the 1543 speed. Same way in reverse, just obviously lower numbers below 1500.
I have not yet looked into this library nor have a complete understanding of how it all comes together. But I do wonder, Is this due to a limitation of the resolution, i.e. 4 bits which is only 255, I would rather have better resolution and have better control of all speeds throughout.
Or has anyone real experience with another library that works better with continuous servos?