EmbDev.net

Forum: µC & Digital Electronics Suspicious behavior of servo


Author: Uwe Damm (Guest)
Posted on:

Rate this post
0 useful
not useful
Hello,

I started experimenting with an RDS3115MG servo, using Arduino Nano for 
control.
The Servo is powered by ~6V PS, GND of Arduino and Servo is connected.
The digital control-line gets pulses with 1..2ms puls-length (ON-signal) 
and a period of 20ms (visible on an oscilloscope) from the arduino.
When I sweep the puls-length from 1 to 2ms, the servo starts moving, 
when the puls-length fits to its current position and than follows the 
signal moving back and forth. But I would expect, that when I just 
generate 1ms pulses with a period of 20ms, the servo would move to the 
middle position immediately (without sweeping of the puls-length 
necessary).
I do face two issues with this behavior:

1) When the servo is out of the 90°range (1..2ms) I cannot move it at 
all (using my 1..2ms puls-length).
2) When I sweep the puls-length to fast, the servo cannot follow and 
does not move until the puls-length fits again to the position.

Is this the expected behavior of that servo? Do all servos behave like 
that or can I get servos, which start immediately by just applying 
1ms/20ms pulses

thank you for any kind of feedback. (I know there are lots of documents 
in the internet, so an RTFM would be help-full, but unluckily until now 
I was unable to find a suitable one)

Uwe

Author: my2ct (Guest)
Posted on:

Rate this post
0 useful
not useful
Uwe Damm wrote:
> But I would expect, that when I just
> generate 1ms pulses with a period of 20ms, the servo would move to the
> middle position immediately (without sweeping of the puls-length
> necessary).

A 1ms pulse should command the servo to an end position, not to the 
center position.

Author: Uwe Damm (Guest)
Posted on:

Rate this post
0 useful
not useful
my2ct wrote:
> A 1ms pulse should command the servo to an end position, not to the
> center position.

of cause you are true, spelling mistake, I meant 1.5ms


Btw. The position should not matter should it? If I start with a 
1ms/20ms signal, when switching on the power, what would you expect 
should the servo do:
a) nothing
b) move to the 1ms (end) position

Same question for 1.5ms
a) nothing
b) move to the middle position


thank you for feedback
Uwe

Author: matzetronics (Guest)
Posted on:

Rate this post
0 useful
not useful
Uwe Damm wrote:
This
> b) move to the 1ms (end) position

and this
> b) move to the middle position

Author: stefanus (Guest)
Posted on:

Rate this post
0 useful
not useful
Uwe Damm wrote:
> Is this the expected behavior of that servo?

No, this is not the normal behaviour of normals servos. What you 
expected matches my experience.

> The position should not matter should it?

Right. You tell the servo the target angle and it moves there. If the 
difference between the target position is small, normal servos move 
slower. If the difference is very small (less than 1 degree) then most 
servos do not move.

Author: matzetronics (Guest)
Posted on:

Rate this post
0 useful
not useful
It might be worth noting that the complete frame should have a length of 
20ms although most older servos don't care.
1ms+19ms for one end, 2ms+18ms for the other.

Author: Uwe Damm (Guest)
Posted on:

Rate this post
0 useful
not useful
Thank you for the Feedback!
I will try to Experiment with other servo.
Uwe

Author: c-hater (Guest)
Posted on:

Rate this post
0 useful
not useful
Uwe Damm wrote:

> I will try to Experiment with other servo.

Probably much more useful: change the supply design.

A defective servo device would be very unusual...

Author: Uwe Damm (Guest)
Posted on:

Rate this post
0 useful
not useful
c-hater wrote:
> Probably much more useful: change the supply design.

forget my message below, I just don't want to delete it, maybe it helps 
someone else.
I got the fault:
1) I added 2200uF to PS, after that, the servo moved very slow, but 
moved in the beginning already
2) I increased the currentlimit of my powersupply ...
now the servo behaves fine :-)

thank you all!!! and sorry for bothering



I connected an external powersupply with 6.2V (checked) to GND (of 
arduino) and supply pin of the servo.
GND of PS and Arduino is connected.
connection to servo:

GND -> brown (1)
6V -> red (2)
20ms period TTL (Arduino) signal to yellow (3)

connections tested with digital-multimeter, all 3 are <0.1 Ohm
I have got 2 servos of same type, both behave same
I am watching the 20ms period signal on oscilloscope, the pulslength
sweeps as follows (each move takes ~2 seconds):
2ms -> 1ms
1ms -> 2ms
2ms -> 1.2ms
and than stop, leaving the servo at 1.2ms position
when I restart that sequence, the servo rumors a bit, until 1.2ms is 
reached, after that the servo follows the signal down to 1ms position, 
than it moves up following the signal to 2ms and than moves back to 
1.2ms

Author: Rolf Magnus (Guest)
Posted on:

Rate this post
0 useful
not useful
matzetronics wrote:
> It might be worth noting that the complete frame should have a length of
> 20ms although most older servos don't care.

None of them is supposed to care, no matter if older or newer, because 
the time between the pulses can vary a lot, With remotes that are from 
the pre-2.4Ghz time, this was an inherent characteristic of the way the 
signals were transmitted. Only the width of the pulse itself is 
evaluated by the servo, so the time between pulses doesn't matter much, 
as long as it's not completely off.

Reply

Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]




Bild automatisch verkleinern, falls nötig