I’m fairly new to controlling servos. I’m working on a project, where I need a servo to drive a belt (fishing line actually) forward and backwards. The problem is, that I need the movement of the servo to be precise every time in both directions. I’m using a Pololu Maestro micro controller and a Feetech Micro 360 Degree Continuous Rotation Servo FS90R, but I can’t seem to make it precise. The up and down positions in the control centre are the same amount of steps apart from the stop position. Is the problem with the servo itself, is it not precise enough, or is it something else?
You cannot directly control the position of a continuous rotation servo, only the speed. You can read more about continuous rotation servos in this blog post. If you want something that gives you position, you probably want to implement some kind of feedback like external sensors or encoders. You might also consider using a stepper motor. If you tell me what kind of precision and range of movement you are trying to get, I might be able to provide you with more advice.
Thank you for the reply. I can’t control the position, but in the sequence menu I can control the duration, so by giving the same duration for both directions it should give me the same distance traveled hence the same position at the end of each frame, correct?
In theory you are correct, but in practice many other factors make it so that you will not get that exact outcome. If you need more precision than you are getting, you will need some kind of feedback.
How can I get feedback? I’m a real noob and don’t know any kind of code so I’ll be really grateful if you can explain to me what I can do to get more precision.
If I use the so called sail winch servos, would it be a better choice?
You can get feedback by adding something like an encoder to the system. Alternatively, if you only have two positions, you might be able to do something using switches as end stops.
A sail winch servo might work for your application. It depends on your requirements. If you do try a sail winch servo, you should make sure to check that the servo can rotate the necessary amount. You should also check that the servo would have the amount of precision your application requires because servos often lose resolution as the range of motion increases.
You mean to use limit switches? That is a very good idea, because I only have two positions and this way it would be precise every time. But I have no idea how to implement them in the system.
It is possible to read switches with the Maestro and have it stop the servo, but doing so would require scripting on the Maestro which might not be trivial if you are not familiar with it (or similar programming languages like Forth). I recommend taking a look at some examples of the Maestro scripting to see if that is something you are comfortable doing. You can find some examples in the “Example Scripts” section in the of the Maestro user’s guide. Also, this thread about the Maestro and end switches on the forum helpful.