A1) By default, with the latest version of EBB firmware (v2.1.5), we add (or subtract) the rate value from the current pulse duration every time the pulse fires until the current pulse duration equals the target duration. Normally we have 8 servo channels available, and each gets 3 ms, so that means that each channel can fire once every 24ms. So the rate value gets added or subtracted from the current pulse duration every 24ms.

For example, if you're currently at a position
(pulse duration) of 10000 and you send a new command to move to
position 15000, then you have a 'distance' of 5000 to go. So
when we start out, our current duration is 10000 and our target
is 15000. If our rate value is 100, then it will take 50 of
these 24ms periods to get from 10000 to 15000, or 1.2seconds
total.

Now, when you're using the SP,0 and SP,1 commands,
the servo_min (defaults to 16000, or 1.3ms) and servo_max
(defaults to 20000, or 1.6ms) get used as the positions. And the
servo_rate_up and servo_rate_down get used as the rates.

So the formula is as follows:

((<servo_max> - <servo_min>) *
.024)/<servo_rate> = total time to move

For the example above

((15000 - 10000) * .024)/100 = 1.2 seconds

Questions? E-mail me at

EggBotBoard by Brian Schmalz is licensed under a Creative Commons Attribution 3.0 United States License.

Based on a work at www.schmalzhaus.com/EBB.

Permissions beyond the scope of this license may be available at www.schmalzhaus.com/EBB.