PDA

View Full Version : Some questions regarding a servo motor's data sheet.



selbstdual
- 2nd May 2008, 11:07
Have a look at the attached file.

How do you interpret the paragraph starting with 8 and 9.

Re 8: Does it mean that within 1,1ms and 1,9ms the motor should be able to rotate _somewhere_ in between 34° and 50° or does that mean that 1,1ms equals 34° and 1,9ms equals 50° or vv?

Re 9: Does that mean that you should not let the pulse be shorter than 1ms and longer than 2,2ms?

selbstdual
- 2nd May 2008, 14:54
Awesome answers. Especially by electronic-"experts".

mister_e
- 2nd May 2008, 20:53
Way to go to have some answer huh?

selbstdual
- 2nd May 2008, 20:58
Stupid.........?

mister_e
- 2nd May 2008, 21:03
Not a stupid question, but your second post "Awesome answers. Especially by electronic-"experts"" is only few hours after your first one, and it's tone is a bit arrogant... well to me.

Sorry, i don't have a clue of servo motor, and i have no plan to use them, unless a customer ask. If so, i'll buy one and do some test, and read the datasheet to understand what it mean.

Sure there's some servo user here... probably they just sleep when you posted your thread?

Sometime i ask question here... and sometime nobody answer them... have it told everyone thanks for not replying?

Be patient...

malc-c
- 2nd May 2008, 21:43
Have a look at the attached file.

How do you interpret the paragraph starting with 8 and 9.



For a pulse width of 1.5ms the servo has a max angluar travel of 42 degree (+/- 0.4ms gives 8 degree)

The max pulse width is 1.6ms (+/- 0.6)

I must admit that it seems strange having a max value that has a +/- value as well. I should be worded max pulse width 1.6ms with an "absolute" max pulse width of 2.2ms

To give you some camparison, normal RC model servos used an accepted "standard" of 1ms - 2ms with 1.5ms representing centre position. Most RC servos tend to give 45 degrees either side of centre, ergo 0 degree = 1ms - 90 degree = 2ms, so I would equate that to your servo as 42 degree for 1.5ms is near enough to a "standard" servo.

Acetronics2
- 3rd May 2008, 10:37
probably they just sleep when you posted your thread?



Hi, Steve

We do not sleep ...

Just remember some previous posts ...

That's all

Alain

selbstdual
- 3rd May 2008, 12:27
malc-c, you are talking about angular travel. In my experience the amount of ms stands for an absolute value...

I actually was able to let the servo rotate 180°. There are mechanical elements to prevent the shaft from rotating too far. Can't they be the actual limits?


Acetronics, I remember you fairly well. You and mister_e didn't know anything but tried to pass your misanthropy due to a need to compensate for your feelings of insufficiency.

You are no role models to me and that is why I couldn't care less whether you answer or not.

selbstdual
- 3rd May 2008, 12:39
.............

JD123
- 3rd May 2008, 15:42
I actually was able to let the servo rotate 180°. There are mechanical elements to prevent the shaft from rotating too far. Can't they be the actual limits?

As long as you don't run off the limits of the feedback pot. A JR digital servo I have runs off the pot before the physical limits. This is becuse JR does not use a D key on the pot shaft. Since it's digital, they assembled the servo without making sure the pot was centered and then they 'teach' the servo where center is. With the pot off center, in one direction the full movement allows the pot to run off the end. The servo then tries to run 360 degrees. The metal gears were stronger than the mechanical stop and it was broken off. On this servo this happens at .89ms.

selbstdual
- 3rd May 2008, 23:36
Currently I am using gear wheels to make the 180° servo rotate a shaft 360°.

This happens(The shaft is being stressed):

1. Servo gets the order to drive to a position X and does it.
2. Shaft rotates to a new position Y close to X.
3. Shaft successfully rotates back to X.
4. Shaft rotates to a new position Z being distant to X.
5. Shaft is to rotate back to X but stops at a different location - in between X and Z.

This occurs every time the shaft travels over an angle greater than 120°(60° without gear wheels).
According to my calculations the servo's torque is high enough.

Any Ideas of how to explain that?

malc-c
- 4th May 2008, 09:14
Assuming you want to control the rotation, such as a gun on a tank turrett then you could use pulleys and a standard servo. I've seen this method used on model warships to move sets of guns through a larger angular swing than a standard servo. Simply place a large diameter wheel on the servo, and a small one on the item that you need to rotate. With some maths to work out ratios, you might be able to get the result you want without having to overdrive the servo.

selbstdual
- 4th May 2008, 13:18
Currently I am using gear wheels to make the 180° servo rotate a shaft 360°.

selbstdual
- 5th May 2008, 01:45
For a better understanding, I uploaded a video: Here: http://rapidshare.com/files/112603057/c.avi.html which is 2 minutes long. You will need the xvid codec aswell as a mp3-codec. You should see that the part moving is almost parallel to the cam when being in position X. In software I tell the program to make the servo turn back to the old position as mentioned. But it doesn't as you can see.

And I would like you to tell me why.

EDIT: OR here if you prefer some service like youtube: http://www.revver.com/video/863645/problem-with-servo/

malc-c
- 5th May 2008, 09:43
It seems more like a code problem than hardware. Can you post the code here and let us try to work out what's happening.

Are you refreshing the pulse width every 20 ms ? Normally you send the 1ms - 2ms pulse width to the servo every 18 - 20 ms so that the servo holds its position and via the feedback pot knows its position. It looks as if the code is not sending the pw every 20ms or that the servo is mis-reading it and losing its starting point, so on each instruction it trys to move 180 but hits the limits and thus results in limited travel.

selbstdual
- 5th May 2008, 13:54
On a 16f628a


@ DEVICE MCLR_OFF
@ DEVICE hs_osc
@ DEVICE wdt_off
@ DEVICE lvp_off
@ DEVICE protect_off

Define OSC 20
INTCON = 0
CMCON = 7
TRISA = 0
TRISB = 0

StepsRotating CON 93
RotatingMin CON 267
RotatingMax CON 1218


Position VAR WORD
PositionBefore VAR WORD
Counter VAR WORD
PositionBefore = 0
LR VAR BYTE
RotatingPos VAR WORD
Movement VAR WORD

ServoMotor VAR PORTB.1

GOSUB RoutineStartingPos

ES:
LR = 1
RotatingPos = RotatingMin
ES_HS:
ES_HS_Drehung:
WHILE 1 = 1
IF LR = 1 THEN
WHILE RotatingPos < RotatingMax
GOSUB RoutineRotate
RotatingPos = RotatingPos + StepsRotating
WEND
LR = 0
ENDIF
IF LR = 0 THEN
WHILE RotatingPos > RotatingMin
GOSUB RoutineRotate
RotatingPos = RotatingPos - StepsRotating
WEND
LR = 1
ENDIF
WEND
END

RoutineRotate:
FOR Movement = 0 TO 1000 / 20
Low ServoMotor
Pulsout ServoMotor,RotatingPos
Pause 20
NEXT Movement
RETURN

RoutineStartingPos:
FOR Counter = 0 TO 1000 / 20
Low ServoMotor
Pulsout ServoMotor,(RotatingMax+RotatingMin)/2
Pause 20
NEXT Counter
RETURN

Acetronics2
- 5th May 2008, 16:28
the answer to your "problem" contains ... 1/2*J*Omega^2

with Omega as the second derivative of rotation ...

Ha,ha,ha

You got your fine calculations "into the teeth" ...

LOL !

A "Hong Kong" servo, I suppose ... certainly not a "King Kong" one.

Alain

selbstdual
- 5th May 2008, 16:40
Poor old man.

Acetronics2
- 5th May 2008, 16:46
I had forgotten some false additions in your soft ... but that was not the "non return" reason ...

just leads to bump your mechanical rotation limits ... might be some resulting damages too ... who knows ?

Was a pleasure, Mr Tax Inspector.

Alain

selbstdual
- 5th May 2008, 17:09
Acetronics, you need antidepressants. But I am not your doctor, that is the task of professionals being experienced with mentally challenged people.

I am not interested in your misery. Since you have problems - as part of your disease - to accept other people's boundaries, I am going to put you on my ignore list.

Darrel Taylor
- 5th May 2008, 17:40
OK children.

Time for recess.
<br>

selbstdual
- 5th May 2008, 18:18
Darrel Taylor, wow, you are contributing perfectly. In how far did you help again?

skimask
- 6th May 2008, 01:48
Maybe some of these posts and/or threads will help you in your quest for perfection:

http://www.picbasic.co.uk/forum/showthread.php?t=6539
http://www.picbasic.co.uk/forum/showthread.php?t=6508
http://www.picbasic.co.uk/forum/showthread.php?t=5685
http://www.picbasic.co.uk/forum/showthread.php?t=5743
http://www.picbasic.co.uk/forum/showthread.php?t=5747
http://www.picbasic.co.uk/forum/showthread.php?t=5668

Just a short list of the help you HAVEN'T received in the last couple of years...in case you forget...

Darrel Taylor
- 6th May 2008, 03:30
Darrel Taylor, wow, you are contributing perfectly.
Thanks, I do what I can.


In how far did you help again?
Well, I hope I'm helping keep the forum at a civilized level.

All the Name calling is very offensive to many people here.
I was just putting in a quick reminder to the Adults, that they should act like one.
<br>

selbstdual
- 6th May 2008, 03:48
If we all pay respect to each other what is written in my signature is always valid.

malc-c just wrote me a mail stating that my code is too complicated for him.

Now it is time to proove that you can contribute properly,Darrel Taylor: What is the cause of the servo's behaviour?

Regarding Hardware I recommend the video on revver or rapidshare.
Regarding Software the code is given.

UPDATE: I used


RoutineRotate:
FOR Movement = 0 TO 2000 / 20
Low ServoMotor
Pulsout ServoMotor,RotatingPos
Pause 20
NEXT Movement
RETURN

And it still showed the same behaviour.

skimask
- 6th May 2008, 03:58
Now it is time to proove that you can contribute properly,Darrel Taylor: What is the cause of the original poster's behaviour?
WHAT?
No answers yet?
Is the forum down?

Darrel Taylor
- 6th May 2008, 04:57
It's cinco de mayo!

So instead, I'll be getting extremely plastered from too much tequila! :D

BTW, don't listen to anything I say tomorrow.
I probably won't be in a very good mood.
http://darreltaylor.com/files/dizzy_puke.gif
<br>

mister_e
- 6th May 2008, 04:59
I probably won't be in a very good mood.
You screwed the joke... should have been moon :D

mackrackit
- 6th May 2008, 07:07
<img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2562&d=1210053414" alt="image" />


cinco de mayo ? In California??

Archangel
- 6th May 2008, 07:12
<img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2562&d=1210053414" alt="image" />


cinco de mayo ? In California??Don't get me started . . . Kali - fornia.

mackrackit
- 6th May 2008, 07:16
Don't get me started . . . Kali - fornia.
Sometimes I can not help it :D

selbstdual
- 6th May 2008, 15:14
That is really funny - for a 12 years old.

Darrel Taylor
- 7th May 2008, 00:58
cinco de mayo ? In California??
Actually, cinco de mayo is really big in California.
Celebrated more than it is in Mexico.

However, the gringo in me didn't realize that when it falls on a Monday, everybody parties for the whole weekend.
Wasn't much happening last night.

Whew! no hangovers. :D
<br>

skimask
- 7th May 2008, 04:49
That is really funny - for a 12 years old.

This is what is really funny...

http://www.picbasic.co.uk/forum/member.php?u=3369

Ioannis
- 7th May 2008, 07:12
Hope the admins will stop the nonsense and also remove the offensive phrases. Especially what people do at their private moments, it's not my bussines, nor I care to know. How girls on this forum accept it????

Anyway, on the thread now, I would never put a gear that would multiply the rotational speed on a servo motor. The "play" might be so much that an effect as the one you describe here could happen, and obviously it does. Also as I stated to your P.M. do not use maths in the FOR command. Put directly the number you want, not the 1000/20.

More, the 50 pulses of the FOR-NEXT loop might be little. Try to raise the number to 500.

Ioannis

selbstdual
- 7th May 2008, 11:32
I would never put a gear that would multiply the rotational speed on a servo motor. The "play" might be so much that an effect as the one you describe here could happen, and obviously it does. Also as I stated to your P.M. do not use maths in the FOR command. Put directly the number you want, not the 1000/20.

More, the 50 pulses of the FOR-NEXT loop might be little. Try to raise the number to 500.

Ioannis
Interesting. What I found is that starting from 0° and rotating to 360° by using trial-and-error values without stopping in the middle makes the motor stop at very much the same position, ie causing a very close to 360° turn being much more exact than the "return-to-the-middle"-routine. In Short 0° <-> 360° works. 0° -> 180° doesn't. 360° -> 180° doesn't(notice the pointer's(->) direction).

What I found additionally: It is normally not the position that is to be driven to. It is the return. So (RotMin+RotMax)/2 changes its effective position. In other words, even though (RotMin+RotMax)/2 must be constant, the motor does not stop at the same place when being directed to.

Acetronics2
- 7th May 2008, 12:29
What I found additionally: It is normally not the position that is to be driven to. It is the return. So (RotMin+RotMax)/2 changes its effective position.



your program does exactly what has been written ... no more, no less.

That's also the first time I hear a CONSTANT ( or the mean value of 2 constants ...) can be modified in PBP WHILE running the program ...




4.6. Constants
Named constants may be created in a similar manner to variables. It can
be more convenient to use a constant name instead of a constant
number. If the number needs to be changed, it may be changed in only
one place in the program; where the constant is defined.


"same player shoots again" ...

Alain