Program servo low speed

I've seen different methods to control servo speed. Does the method I use make a difference as far as the amount of torque I get?

the torque of a rc-servo only depends on

  • the gear-ratio
  • the supply-voltage
  • if your powersupply can deliver the stall current

but not on the speed with which you move the servo it has even the same torque if you hold one position.

the servo arm performs work (force * distance). the power (work / time) drawn by the servo is V * I. the current (I) is limited by the resistance of the motor winding.

more power is needed to move the servo arm against a heavy load (force) than a light load and it will take more time to move the servo arm against a heavier load (a = F/m).

of course you can move a servo arm by a small angle in steps (time)

Ok. I'm learning as I go. This is the first time I've actually made it to the point where I can see it in action and the high torque servos have been rather weak.
The 60 kg servo couldn't even lift the arm in the air but I realized the current knob on my bench power supply was turned down low..
I bought a cheap one off Amazon and you have to set the voltage limit and short it but I guess I need to have the current cranked.
Its still not able to lift much but the arm has most of the weight at the end but the whole thing probably weighs 11 ounces and the arm was about 30 inches long. I also had to speed it up by making a large wooden gear (about 6 inches diameter) and a smaller one.
I'm shortening the arm and adding a counterweight.
Hopefully I can get this thing to work.

Which method do you use ?
The position can be updated every 10ms or every 20ms to make a servo motor go slower.
This is an example that I made a few days ago: ServoShowcase.ino - Wokwi Arduino Simulator

Check the stall current of your servo motor. If that is 2A and you have three servo motors, then the power supply should be able to deliver 6A, and also the wires should be thick enough. Don't let the power for servo motors go through a breadboard.

Hi, @tbone23

Convert those figures to SI units, work out what the torque it is exerting on the servo shaft, then compare it to the servo specs.

Can you please post a link to data/specs of your servo?

Don't forget if your gear it to speed up then the available torque will go down proportionately?

What is the application, what are you using the servo for?

Thanks.. Tom.. :smiley: :+1: :coffee: :australia:


based on the above specs for a 60 kg servo, it looks like it is capable of providing 23.8 kgCm (330 ozIn) of torque but probably requires a couple amps of current

I have 3 servos but they dont run at the same time. Should I attach and detach them as I go?
The main one is 60kg but the 2nd one is 20kg and the 3rd is an mg996R with a 12kg stall torque.

I'm using the for loop method with the sweep library. I tried some other methods but I'm new at this and was having trouble as soon as I started adding my own code for delays etc.

I'm basically just testing things out. I'd like to be able to have the arm lift something up for archery target practise and I'm trying to see what motions I can get.

I modded the mg996r to be a continuous rotation servo but I'm having trouble getting it to stop after its started spinning so now I'm just focusing on the 60kg which will lift a target up and down.

What I learn making this will go towards making a mechanical decoy hopefully.

Here's my power supply

And this is the servo:

You would generally attach() them all in setup() and not detach() them in the sketch unless you have a particular reason to do so such as needing to move the servo arms manually whilst the sketch is running which allows them to move freely, which could be a problem if you don't intend them to move

That is often a problem because you have no control over the position of the servo, only its speed and direction. You may get it to stop by experimenting with the value that you write() to it but it may be inconsistent depending on supply voltage and load on the servo

How are you powering the servos ?

What would be the maximum speed you want the arm to move?
How many seconds should it take for a 90-degree-move of the arm?

0,5 seconds?
2 seconds?
10 seconds?

a mechancial decoy. hm -What should be attracted by the decoy?

if you want support for coding there is no way around posting your code
using this method:
You should post code by using code-tags
There is an automatic function for doing this in the Arduino-IDE
just three steps

  1. press Ctrl-T for autoformatting your code
  2. do a rightclick with the mouse and choose "copy for forum"
  3. paste clipboard into write-window of a posting

best regards Stefan