Australia
Asked
Resolved Resolved by DJ Sures!

Servo Jumping On Initialisation

The dreaded jumping servo problem has arisen again - just today. All servos in the robot are HDD. The servo on port D0 now jumps after connecting, to about 35 degrees instead of 90 degrees. If I move the servo manually when turned off, the centre position is still 90 degrees, so the sprocket has not shifted. My INIT script has not changed. That servo is set to 90 degrees. Has anyone had this problem before? I am thinking I might have to replace the servo and see what happens. My previous problems with jumping servos were because I had a HD servo. But not this time.


Related Hardware EZ-B v4

ARC Pro

Upgrade to ARC Pro

Stay at the forefront of robot programming innovation with ARC Pro, ensuring your robot is always equipped with the latest advancements.

PRO
Belgium
#9  

dj can i ask for rethinking this?

the HDD servo dont move when ad power to it. they do move a little when connect to ARC . they move violent when added servospeed in a script .

PRO
Synthiam
#10  

That’s because they’re moving into a position. Servos move into a position when instructed to do so.

#11   — Edited

Nomad, Just guessing here but your servos are most likely reacting to a previously set ServoSpeed() command. If not it may be reacting to the default ARC speed if you haven't set a speed yet. I can't remember off the top of my head but I think if you don't set a speed ARC will use 0 which is the fastest.

Setting servo speed and positions are kind of hard to wrap your head around. How and when you specify the ServoSpeed changes depending if you've already used the ServoSpeed command yet. I've had trouble remembering how to do it at times. According to the servo script help in ARC: The servo speed is a number between 0 (fastest) and 10 (slowest) *Note: To initialize the ServoSpeed() at first use, set a Servo() position before using the ServoSpeed() command. If there is no previous position (such as during power-on), the software assumes the position is 0 and will cause issues with your robot. *Note: Once the ServoSpeed() has been initialized the first time, specify the ServoSpeed() before specifying the Servo() position. Example: ServoSpeed(D14, 25)

EDIT: This is an entirely different issue to what the OP is having. However it may be helpful for some: This method has helped me in the past with a servo "jumping" or "jerking" a little when power is applied. To stop this effect I used a relay to apply power to a critically placed servo after I've initialize it for the first time in the above way in my INT script. This stopped that jerking effect for me.

PRO
Synthiam
#12  

There’s absolutely no way to stop the servos from moving into position if you’re asking the servos to move into a position.

No relay or anything can ever stop a servo from moving into a position if you ask it to. The point to asking a servo to move is to have it move. If you don’t want the servo to move, don’t ask it to move.

You see, a servo only knows where it is when it’s in a position. When you power on the robot, the servos don’t know a position.  They only sit and wait to be told what to do. So when you instruct the servo to move into a position, it does so.

read how a servo works from Synthiam support section here: https://synthiam.com/Support/Advanced-Fundamentals/servo-motor

#13  

Maybe I missed the point of the post or went off topic. Sorry. My last comment about using a relay was aimed at that common effect of a servo "jumping" or "jerking" when powered up. That probably does not apply to the issue in this post. However the way to script a servo command is reinvent I think. I'll edit the post.

PRO
Belgium
#14  

dj

thank you .

dave  thank you

PRO
Portugal
#16  

Thanks for charring!