Re: Multiple R/C servo control



Also, have a look at the Silvertone site (www.silvertone.com.au) for a
description and circuit of a complete xmitter for controlling servos - there
was a construction article in Silicon Chip for the xmitter, and receiver etc -
I haven't read the article, but usually they explain the theory and workings of
their projects

David - trying to be helpful

Padu wrote:

> Hi folks,
>
> I've been doing lots of tests with controlling R/C servos lately, some good
> experiences and some bad experiences. I even wrote an introduction paper on
> how to interface the PC with R/C servos using the serial port and a PIC
> microcontroller.
>
> The strategy I present in that paper is very basic, and although it works
> fine, it is kind of jittery and does not support too many servos. Now I'm
> working on a improved version of my servo controller that will theoretically
> get rid of the flicker and support unlimited servos (in theory).
>
> I am a firm believer that the best way to learn something is to teach it.
> Therefore I will try to make another paper exposing this new method (of
> course, if it works). Before doing that, I need to know if someone else
> already did such tutorial paper, and if yes, if it is similar to my
> strategy.
>
> Here's an outline of my strategy, please express yourself if you find a flaw
> in it as I'm going to test it tonight.
>
> 1-Assume there is an array of servos controlled by the uP
> and this array has the following fields:
> servo_idx, pulse_width_uS, servo_no
> Whenever the array is updated (through serial commands), it is
> sorted in by pulse_width_uS
>
> 2-Drive all servo lines high, set TMR0 with the time interval
> of the first servo of the array
>
> 3-When TMR0 triggers, set the respective servo low.
> Also set low all the subsequent servos from that list that
> have the same pulse_width_uS. Set new TMR0 interval
> as the difference between next servo pulse width and current
> one.
>
> 4-Repeat this operation for all servos until there are no
> more servos to drive low. At that point, set TMR0 with
> 20ms - current pulse_width_uS
>
> And that goes forever. There are a couple more quirks to it, but that's the
> overall outline. If you are controlling 4 servos, TMR0 should trigger 5
> times in the worst case, 1 time for driving all servo lines up and 4 times
> (less if some of them share the same time interval) to drive them low.
>
> That gives me lots of time in between pulses to do whatever I want (receive
> USART bytes for example) without interfering too much with the PWM timing
> mechanism.
>
> Do you think it is a good approach to try? If yes, do you think it would be
> worthy to write a short paper on that?
>
> Cheers
>
> Padu

.



Relevant Pages

  • Re: Driving servos from a PC
    ... controlled by a series of PCs (each computer drives two dials). ... controlling these servos via a soundcard output? ... Cannot for the life of me remember where I bought it in the UK, ... both are ideal for controlling multiple servos ...
    (sci.electronics.misc)
  • Re: Driving servos from a PC
    ... controlled by a series of PCs (each computer drives two dials). ... but I do have a fairly strict budget restriction. ... controlling these servos via a soundcard output? ...
    (sci.electronics.misc)
  • Re: internet remote control
    ... internet. ... NE2000 driver is a standard LIB available from the website. ... You can use the apache web server as a base for controlling ... serial port to control servos and some simple parallel port ...
    (comp.robotics.misc)
  • Multiple R/C servo control
    ... I've been doing lots of tests with controlling R/C servos lately, ... 1-Assume there is an array of servos controlled by the uP ... set TMR0 with the time interval ...
    (comp.robotics.misc)
  • Re: Multiple R/C servo control
    ... > I've been doing lots of tests with controlling R/C servos lately, ... > 2-Drive all servo lines high, set TMR0 with the time interval ... > as the difference between next servo pulse width and current ...
    (comp.robotics.misc)