Loading ...
Sorry, an error occurred while loading the content.

Re: [SeattleRobotics] Servo control with ARC

Expand Messages
  • Rich Chandler
    Yanno, it strikes me that part of the problem is the whole PWM thing. Does anyone know the protocol for Digital servos? I think it would be a lot simpler if
    Message 1 of 19 , Dec 1, 2004
    • 0 Attachment
      Yanno, it strikes me that part of the problem is the whole PWM thing. Does
      anyone know the protocol for Digital servos?

      I think it would be a lot simpler if one had servos you could send an 8 or 16
      bit position to and have it go there until commanded otherwise.

      If someone made an alternate board you could hook up to the guts of an RC servo
      that did I2C or something, that would solve a LOT of people's problems.
    • barryschrag
      yummm... code I used the MegaBitty code on the ARC AVR board (at 8Mhz internal I think), and it correctly positions a servo. Thanks! I have had no success
      Message 2 of 19 , Dec 1, 2004
      • 0 Attachment
        yummm... code

        I used the MegaBitty code on the ARC AVR board (at 8Mhz internal I
        think), and it correctly positions a servo. Thanks!

        I have had no success enabling the external 16Mhz clock, so if this
        is a problem I may need instruction.

        Next, I attempted to use the same code to control an R/C speed
        controller (I assume the ESC uses is a servo PWM signal, because the
        following BASCOM servo sample code makes motors tied to the ESC run..)

        Sub Left_servo(byval Pulse As Word)
        Disable Interrupts
        Pulseout Portc , 2 , Pulse
        Enable Interrupts
        End Sub
        Sub Right_servo(byval Pulse As Word)
        Disable Interrupts
        Pulseout Portc , 5 , Pulse
        Enable Interrupts
        End Sub

        However, I can't get the R/C speed controller to work with this C
        code!

        #define LEFTSERVO 2
        #define RIGHTSERVO 5
        cli();
        GeneratePulse( Steer_cmd, LEFTSERVO );
        GeneratePulse( Power_cmd, RIGHTSERVO );
        sei();

        Switching back to the BASCOM servo positioning code worked correctly
        for the servo as well as the R/C speed controller, without touching
        the hardware. Switching the servo to the other port works fine in C,
        so I believe this is somehow related to the waveform. Since I don't
        have access to an O-Scope, (I need one badly to troubleshoot this),
        does anyone have an idea why the C code would position a servo, but
        not an R/C speed controller?

        Barry


        --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
        <dhylands@b...> wrote:
        > Hi Barry,
        >
        > Here is some code I wrote for the MegaBitty, which is similar to the
        > ARC. The MegaBitty has a 16-MHz crystal on it. I configured Timer2
        as
        > follows:
        >
        > //------------------------------------------------------------------
        ----
        > ----
        > // Timer/Counter 2
        > //
        > // We run Timer 2 in free running mode, 8us/tick
        >
        > #define TCCR2_CLK_DIV_128 ( BV( CS22 ) | BV( CS20 ))
        >
        > #define TCCR2_INIT TCCR2_CLK_DIV_128 // 16000000/128 = 125000
        > ticks/sec 1/125000 = 8 usec/tick
        >
        > And Timer 2 is initialized using:
        >
        > TCCR2 = TCCR2_INIT;
        >
        > The width passed to the GeneratePulse function is the number of 8
        usec
        > ticks to wait. It only generates a single pulse, so you need to
        call it
        > every 20-50 msec (which I did from my main loop).
        >
        > You should also be able to set things up to use interrupts so you
        just
        > set the pulse width, and it sends it out in the background.
        >
        > void GeneratePulse( uns8 width, int pin )
        > {
        > // Wait for the timer/counter to roll over
        >
        > while ( TCNT2 != 0xFF )
        > {
        > ;
        > }
        >
        > // Wait for the 0xFF --> 0x00 rollover
        >
        > while ( TCNT2 != 0 )
        > {
        > ;
        > }
        >
        > PORTD |= BV( pin );
        >
        > // Now wait for the width of the pulse
        >
        > while ( TCNT2 < width )
        > {
        > ;
        > }
        >
        > PORTD &= ~BV( pin );
        >
        > } // GeneratePulse
        >
        > --
        > Dave Hylands
        > Vancouver, BC, Canada
        > http://www.DaveHylands.com/
        >
        > > -----Original Message-----
        > > From: barryschrag [mailto:barryschrag@y...]
        > > Sent: Tuesday, November 30, 2004 10:16 AM
        > > To: SeattleRobotics@yahoogroups.com
        > > Subject: [SeattleRobotics] Servo control with ARC
        > >
        > >
        > >
        > >
        > > Can anyone point me to a sample of how to set a servo position
        using
        > > an ARC AVR board in C? I am moving some control code from
        BASCOM to
        > > C, and I see samples of setting motor speed with PWM, but can the
        > > same code be used for controlling servo?
        > >
        > > Barry
        > >
        > >
        > >
        > >
        > >
        > > Visit the SRS Website at http://www.seattlerobotics.org
        > > Yahoo! Groups Links
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
      • Dave Hylands
        Hi Barry, Did you modify the C code to use Port C? The GeneratePulse routine I provided is hardcoded to use Port D. And oh - yeah - You ll need to configure
        Message 3 of 19 , Dec 1, 2004
        • 0 Attachment
          Hi Barry,

          Did you modify the C code to use Port C?

          The GeneratePulse routine I provided is hardcoded to use Port D.

          And oh - yeah - You'll need to configure the pins to be output pins too.

          I forgot to include that code. You'll need to do something like this for
          port D:

          DDRD |= (BV( 2 ) | BV( 6 ));

          Hmm - you said it positions a servo fine? Is the servo on the same pins
          as the ESC? (i.e. you unplugged one and then plugged in the other?)

          --
          Dave Hylands
          Vancouver, BC, Canada
          http://www.DaveHylands.com/

          > -----Original Message-----
          > From: barryschrag [mailto:barryschrag@...]
          > Sent: Wednesday, December 01, 2004 3:27 PM
          > To: SeattleRobotics@yahoogroups.com
          > Subject: [SeattleRobotics] ESC control with ARC in C
          >
          >
          >
          >
          > yummm... code
          >
          > I used the MegaBitty code on the ARC AVR board (at 8Mhz internal I
          > think), and it correctly positions a servo. Thanks!
          >
          > I have had no success enabling the external 16Mhz clock, so if this
          > is a problem I may need instruction.
          >
          > Next, I attempted to use the same code to control an R/C speed
          > controller (I assume the ESC uses is a servo PWM signal, because the
          > following BASCOM servo sample code makes motors tied to the ESC run..)
          >
          > Sub Left_servo(byval Pulse As Word)
          > Disable Interrupts
          > Pulseout Portc , 2 , Pulse
          > Enable Interrupts
          > End Sub
          > Sub Right_servo(byval Pulse As Word)
          > Disable Interrupts
          > Pulseout Portc , 5 , Pulse
          > Enable Interrupts
          > End Sub
          >
          > However, I can't get the R/C speed controller to work with this C
          > code!
          >
          > #define LEFTSERVO 2
          > #define RIGHTSERVO 5
          > cli();
          > GeneratePulse( Steer_cmd, LEFTSERVO );
          > GeneratePulse( Power_cmd, RIGHTSERVO );
          > sei();
          >
          > Switching back to the BASCOM servo positioning code worked correctly
          > for the servo as well as the R/C speed controller, without touching
          > the hardware. Switching the servo to the other port works fine in C,
          > so I believe this is somehow related to the waveform. Since I don't
          > have access to an O-Scope, (I need one badly to troubleshoot this),
          > does anyone have an idea why the C code would position a servo, but
          > not an R/C speed controller?
          >
          > Barry
          >
          >
          > --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
          > <dhylands@b...> wrote:
          > > Hi Barry,
          > >
          > > Here is some code I wrote for the MegaBitty, which is similar to the
          > > ARC. The MegaBitty has a 16-MHz crystal on it. I configured Timer2
          > as
          > > follows:
          > >
          > > //------------------------------------------------------------------
          > ----
          > > ----
          > > // Timer/Counter 2
          > > //
          > > // We run Timer 2 in free running mode, 8us/tick
          > >
          > > #define TCCR2_CLK_DIV_128 ( BV( CS22 ) | BV( CS20 ))
          > >
          > > #define TCCR2_INIT TCCR2_CLK_DIV_128 // 16000000/128 = 125000
          > > ticks/sec 1/125000 = 8 usec/tick
          > >
          > > And Timer 2 is initialized using:
          > >
          > > TCCR2 = TCCR2_INIT;
          > >
          > > The width passed to the GeneratePulse function is the number of 8
          > usec
          > > ticks to wait. It only generates a single pulse, so you need to
          > call it
          > > every 20-50 msec (which I did from my main loop).
          > >
          > > You should also be able to set things up to use interrupts so you
          > just
          > > set the pulse width, and it sends it out in the background.
          > >
          > > void GeneratePulse( uns8 width, int pin )
          > > {
          > > // Wait for the timer/counter to roll over
          > >
          > > while ( TCNT2 != 0xFF )
          > > {
          > > ;
          > > }
          > >
          > > // Wait for the 0xFF --> 0x00 rollover
          > >
          > > while ( TCNT2 != 0 )
          > > {
          > > ;
          > > }
          > >
          > > PORTD |= BV( pin );
          > >
          > > // Now wait for the width of the pulse
          > >
          > > while ( TCNT2 < width )
          > > {
          > > ;
          > > }
          > >
          > > PORTD &= ~BV( pin );
          > >
          > > } // GeneratePulse
          > >
          > > --
          > > Dave Hylands
          > > Vancouver, BC, Canada
          > > http://www.DaveHylands.com/
          > >
          > > > -----Original Message-----
          > > > From: barryschrag [mailto:barryschrag@y...]
          > > > Sent: Tuesday, November 30, 2004 10:16 AM
          > > > To: SeattleRobotics@yahoogroups.com
          > > > Subject: [SeattleRobotics] Servo control with ARC
          > > >
          > > >
          > > >
          > > >
          > > > Can anyone point me to a sample of how to set a servo position
          > using
          > > > an ARC AVR board in C? I am moving some control code from
          > BASCOM to
          > > > C, and I see samples of setting motor speed with PWM, but can the
          > > > same code be used for controlling servo?
          > > >
          > > > Barry
          > > >
          > > >
          > > >
          > > >
          > > >
          > > > Visit the SRS Website at http://www.seattlerobotics.org
          > > > Yahoo! Groups Links
          > > >
          > > >
          > > >
          > > >
          > > >
          > > >
          > > >
          > > >
          > > >
          >
          >
          >
          >
          >
          > Visit the SRS Website at http://www.seattlerobotics.org
          > Yahoo! Groups Links
          >
          >
          >
          >
          >
          >
          >
          >
          >
        • Rich Chandler
          ... Some speed controllers choke at the extremes of pulse length. 1ms or 2 ms is just outside of the acceptable range. -- From Each according to his
          Message 4 of 19 , Dec 1, 2004
          • 0 Attachment
            barryschrag wrote:

            > does anyone have an idea why the C code would position a servo, but
            > not an R/C speed controller?

            Some speed controllers choke at the extremes of pulse length. 1ms or 2 ms is
            just outside of the acceptable range.

            --
            "From Each according to his Abilities, To Each according to his Needs" is a
            pretty sweet deal, if you're a needy incompetent, but it makes a slave of the
            capable and independent. Advocating such a position says an awful lot about the
            individual who does so, and which side of the equation he expects to be on.
            -- Richard Chandler (10/15/04)

            Using Outlook or Netscape for news? Learn to turn off HTML posting at:
            http://www.expita.com/nomime.html
          • tbrenke@verizon.net
            the link I put up was for a single chip that will run 16 servos with simple I2C commands. AND you can order the chip with 3 different addresses for running 48
            Message 5 of 19 , Dec 1, 2004
            • 0 Attachment
              the link I put up was for a single chip that will run 16 servos with simple I2C commands.
              AND you can order the chip with 3 different addresses for running 48 servos all from the same 3 io lines of your micro.

              how simple and easy is that?
              if you do not want to design the board for the chip to plug into, then get one of the RCB boards and plug the chip in.

              http://www.totalrobots.com/access_files/general_mods.htm#rcbv2

              (no, I do not work for them)


              ----- Original Message -----
              From: Rich Chandler
              To: SeattleRobotics@yahoogroups.com
              Sent: Wednesday, December 01, 2004 12:40 AM
              Subject: Re: [SeattleRobotics] Servo control with ARC



              Yanno, it strikes me that part of the problem is the whole PWM thing. Does
              anyone know the protocol for Digital servos?

              I think it would be a lot simpler if one had servos you could send an 8 or 16
              bit position to and have it go there until commanded otherwise.

              If someone made an alternate board you could hook up to the guts of an RC servo
              that did I2C or something, that would solve a LOT of people's problems.


              Visit the SRS Website at http://www.seattlerobotics.org
              Yahoo! Groups Links








              [Non-text portions of this message have been removed]
            • barryschrag
              I did change the code to use PortC and it must be configured for output -- since switching the servo from the left port to the right port still allows it to
              Message 6 of 19 , Dec 1, 2004
              • 0 Attachment
                I did change the code to use PortC and it must be configured for
                output -- since switching the servo from the left port to the right
                port still allows it to function perfectly. It is specifically the
                ESC that doesn't work on either port!

                Barry

                --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                <dhylands@b...> wrote:
                > Hi Barry,
                >
                > Did you modify the C code to use Port C?
                >
                > The GeneratePulse routine I provided is hardcoded to use Port D.
                >
                > And oh - yeah - You'll need to configure the pins to be output pins
                too.
                >
                > I forgot to include that code. You'll need to do something like
                this for
                > port D:
                >
                > DDRD |= (BV( 2 ) | BV( 6 ));
                >
                > Hmm - you said it positions a servo fine? Is the servo on the same
                pins
                > as the ESC? (i.e. you unplugged one and then plugged in the other?)
                >
                > --
                > Dave Hylands
                > Vancouver, BC, Canada
                > http://www.DaveHylands.com/
                >
                > > -----Original Message-----
                > > From: barryschrag [mailto:barryschrag@y...]
                > > Sent: Wednesday, December 01, 2004 3:27 PM
                > > To: SeattleRobotics@yahoogroups.com
                > > Subject: [SeattleRobotics] ESC control with ARC in C
                > >
                > >
                > >
                > >
                > > yummm... code
                > >
                > > I used the MegaBitty code on the ARC AVR board (at 8Mhz internal
                I
                > > think), and it correctly positions a servo. Thanks!
                > >
                > > I have had no success enabling the external 16Mhz clock, so if
                this
                > > is a problem I may need instruction.
                > >
                > > Next, I attempted to use the same code to control an R/C speed
                > > controller (I assume the ESC uses is a servo PWM signal, because
                the
                > > following BASCOM servo sample code makes motors tied to the ESC
                run..)
                > >
                > > Sub Left_servo(byval Pulse As Word)
                > > Disable Interrupts
                > > Pulseout Portc , 2 , Pulse
                > > Enable Interrupts
                > > End Sub
                > > Sub Right_servo(byval Pulse As Word)
                > > Disable Interrupts
                > > Pulseout Portc , 5 , Pulse
                > > Enable Interrupts
                > > End Sub
                > >
                > > However, I can't get the R/C speed controller to work with this C
                > > code!
                > >
                > > #define LEFTSERVO 2
                > > #define RIGHTSERVO 5
                > > cli();
                > > GeneratePulse( Steer_cmd, LEFTSERVO );
                > > GeneratePulse( Power_cmd, RIGHTSERVO );
                > > sei();
                > >
                > > Switching back to the BASCOM servo positioning code worked
                correctly
                > > for the servo as well as the R/C speed controller, without
                touching
                > > the hardware. Switching the servo to the other port works fine in
                C,
                > > so I believe this is somehow related to the waveform. Since I
                don't
                > > have access to an O-Scope, (I need one badly to troubleshoot
                this),
                > > does anyone have an idea why the C code would position a servo,
                but
                > > not an R/C speed controller?
                > >
                > > Barry
                > >
                > >
                > > --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                > > <dhylands@b...> wrote:
                > > > Hi Barry,
                > > >
                > > > Here is some code I wrote for the MegaBitty, which is similar
                to the
                > > > ARC. The MegaBitty has a 16-MHz crystal on it. I configured
                Timer2
                > > as
                > > > follows:
                > > >
                > > > //--------------------------------------------------------------
                ----
                > > ----
                > > > ----
                > > > // Timer/Counter 2
                > > > //
                > > > // We run Timer 2 in free running mode, 8us/tick
                > > >
                > > > #define TCCR2_CLK_DIV_128 ( BV( CS22 ) | BV( CS20 ))
                > > >
                > > > #define TCCR2_INIT TCCR2_CLK_DIV_128 // 16000000/128 =
                125000
                > > > ticks/sec 1/125000 = 8 usec/tick
                > > >
                > > > And Timer 2 is initialized using:
                > > >
                > > > TCCR2 = TCCR2_INIT;
                > > >
                > > > The width passed to the GeneratePulse function is the number of
                8
                > > usec
                > > > ticks to wait. It only generates a single pulse, so you need to
                > > call it
                > > > every 20-50 msec (which I did from my main loop).
                > > >
                > > > You should also be able to set things up to use interrupts so
                you
                > > just
                > > > set the pulse width, and it sends it out in the background.
                > > >
                > > > void GeneratePulse( uns8 width, int pin )
                > > > {
                > > > // Wait for the timer/counter to roll over
                > > >
                > > > while ( TCNT2 != 0xFF )
                > > > {
                > > > ;
                > > > }
                > > >
                > > > // Wait for the 0xFF --> 0x00 rollover
                > > >
                > > > while ( TCNT2 != 0 )
                > > > {
                > > > ;
                > > > }
                > > >
                > > > PORTD |= BV( pin );
                > > >
                > > > // Now wait for the width of the pulse
                > > >
                > > > while ( TCNT2 < width )
                > > > {
                > > > ;
                > > > }
                > > >
                > > > PORTD &= ~BV( pin );
                > > >
                > > > } // GeneratePulse
                > > >
                > > > --
                > > > Dave Hylands
                > > > Vancouver, BC, Canada
                > > > http://www.DaveHylands.com/
                > > >
                > > > > -----Original Message-----
                > > > > From: barryschrag [mailto:barryschrag@y...]
                > > > > Sent: Tuesday, November 30, 2004 10:16 AM
                > > > > To: SeattleRobotics@yahoogroups.com
                > > > > Subject: [SeattleRobotics] Servo control with ARC
                > > > >
                > > > >
                > > > >
                > > > >
                > > > > Can anyone point me to a sample of how to set a servo
                position
                > > using
                > > > > an ARC AVR board in C? I am moving some control code from
                > > BASCOM to
                > > > > C, and I see samples of setting motor speed with PWM, but can
                the
                > > > > same code be used for controlling servo?
                > > > >
                > > > > Barry
                > > > >
                > > > >
                > > > >
                > > > >
                > > > >
                > > > > Visit the SRS Website at http://www.seattlerobotics.org
                > > > > Yahoo! Groups Links
                > > > >
                > > > >
                > > > >
                > > > >
                > > > >
                > > > >
                > > > >
                > > > >
                > > > >
                > >
                > >
                > >
                > >
                > >
                > > Visit the SRS Website at http://www.seattlerobotics.org
                > > Yahoo! Groups Links
                > >
                > >
                > >
                > >
                > >
                > >
                > >
                > >
                > >
              • barryschrag
                I ran the values from 0 to 255 and there is no detectable output from that ESC. Any idea which end of the range the ESC might want? ... but ... or 2 ms is ...
                Message 7 of 19 , Dec 1, 2004
                • 0 Attachment
                  I ran the values from 0 to 255 and there is no detectable output
                  from that ESC. Any idea which end of the range the ESC might want?

                  --- In SeattleRobotics@yahoogroups.com, Rich Chandler
                  <rchandler@k...> wrote:
                  > barryschrag wrote:
                  >
                  > > does anyone have an idea why the C code would position a servo,
                  but
                  > > not an R/C speed controller?
                  >
                  > Some speed controllers choke at the extremes of pulse length. 1ms
                  or 2 ms is
                  > just outside of the acceptable range.
                  >
                  > --
                  > "From Each according to his Abilities, To Each according to his
                  Needs" is a
                  > pretty sweet deal, if you're a needy incompetent, but it makes a
                  slave of the
                  > capable and independent. Advocating such a position says an awful
                  lot about the
                  > individual who does so, and which side of the equation he expects
                  to be on.
                  > -- Richard Chandler (10/15/04)
                  >
                  > Using Outlook or Netscape for news? Learn to turn off HTML posting
                  at:
                  > http://www.expita.com/nomime.html
                • barryschrag
                  This chip sounds ideal for controlling several servos. I only have a need to control the TXT-1 (former Monster R/C truck) at this point. It only has a
                  Message 8 of 19 , Dec 1, 2004
                  • 0 Attachment
                    This chip sounds ideal for controlling several servos. I only have a
                    need to control the TXT-1 (former Monster R/C truck) at this point.
                    It only has a steering servo and the ESC, so the ARC board should be
                    ideal with its two servo outputs at this point.

                    Thanks!


                    --- In SeattleRobotics@yahoogroups.com, <tbrenke@v...> wrote:
                    > the link I put up was for a single chip that will run 16 servos
                    with simple I2C commands.
                    > AND you can order the chip with 3 different addresses for running
                    48 servos all from the same 3 io lines of your micro.
                    >
                    > how simple and easy is that?
                    > if you do not want to design the board for the chip to plug into,
                    then get one of the RCB boards and plug the chip in.
                    >
                    > http://www.totalrobots.com/access_files/general_mods.htm#rcbv2
                    >
                    > (no, I do not work for them)
                    >
                    >
                    > ----- Original Message -----
                    > From: Rich Chandler
                    > To: SeattleRobotics@yahoogroups.com
                    > Sent: Wednesday, December 01, 2004 12:40 AM
                    > Subject: Re: [SeattleRobotics] Servo control with ARC
                    >
                    >
                    >
                    > Yanno, it strikes me that part of the problem is the whole PWM
                    thing. Does
                    > anyone know the protocol for Digital servos?
                    >
                    > I think it would be a lot simpler if one had servos you could
                    send an 8 or 16
                    > bit position to and have it go there until commanded otherwise.
                    >
                    > If someone made an alternate board you could hook up to the guts
                    of an RC servo
                    > that did I2C or something, that would solve a LOT of people's
                    problems.
                    >
                    >
                    > Visit the SRS Website at http://www.seattlerobotics.org
                    > Yahoo! Groups Links
                    >
                    >
                    >
                    >
                    >
                    >
                    >
                    >
                    > [Non-text portions of this message have been removed]
                  • barryschrag
                    Ok, a very strange thing is happening. I decided to try this line: DDRC |= (BV( 2 ) | BV( 5 )); and we are rolling! I turned off the ARC board, pulled out
                    Message 9 of 19 , Dec 1, 2004
                    • 0 Attachment
                      Ok, a very strange thing is happening. I decided to try this line:

                      DDRC |= (BV( 2 ) | BV( 5 ));

                      and we are rolling! I turned off the ARC board, pulled out the ESC
                      connector from the right port, moved the Servo connector to the right
                      port in its place, then I commented out the DDRC line and redeployed -
                      - to check my sanity.

                      The servo moves on the right servo port without the DDRC setting. I
                      thought the port should not provide output without the setting, so
                      what am I misunderstanding here? Why does the servos work without
                      the setting, but the ESC doesn't?


                      --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                      <dhylands@b...> wrote:
                      > Hi Barry,
                      >
                      > Did you modify the C code to use Port C?
                      >
                      > The GeneratePulse routine I provided is hardcoded to use Port D.
                      >
                      > And oh - yeah - You'll need to configure the pins to be output pins
                      too.
                      >
                      > I forgot to include that code. You'll need to do something like
                      this for
                      > port D:
                      >
                      > DDRD |= (BV( 2 ) | BV( 6 ));
                      >
                      > Hmm - you said it positions a servo fine? Is the servo on the same
                      pins
                      > as the ESC? (i.e. you unplugged one and then plugged in the other?)
                      >
                      > --
                      > Dave Hylands
                      > Vancouver, BC, Canada
                      > http://www.DaveHylands.com/
                      >
                      > > -----Original Message-----
                      > > From: barryschrag [mailto:barryschrag@y...]
                      > > Sent: Wednesday, December 01, 2004 3:27 PM
                      > > To: SeattleRobotics@yahoogroups.com
                      > > Subject: [SeattleRobotics] ESC control with ARC in C
                      > >
                      > >
                      > >
                      > >
                      > > yummm... code
                      > >
                      > > I used the MegaBitty code on the ARC AVR board (at 8Mhz internal
                      I
                      > > think), and it correctly positions a servo. Thanks!
                      > >
                      > > I have had no success enabling the external 16Mhz clock, so if
                      this
                      > > is a problem I may need instruction.
                      > >
                      > > Next, I attempted to use the same code to control an R/C speed
                      > > controller (I assume the ESC uses is a servo PWM signal, because
                      the
                      > > following BASCOM servo sample code makes motors tied to the ESC
                      run..)
                      > >
                      > > Sub Left_servo(byval Pulse As Word)
                      > > Disable Interrupts
                      > > Pulseout Portc , 2 , Pulse
                      > > Enable Interrupts
                      > > End Sub
                      > > Sub Right_servo(byval Pulse As Word)
                      > > Disable Interrupts
                      > > Pulseout Portc , 5 , Pulse
                      > > Enable Interrupts
                      > > End Sub
                      > >
                      > > However, I can't get the R/C speed controller to work with this C
                      > > code!
                      > >
                      > > #define LEFTSERVO 2
                      > > #define RIGHTSERVO 5
                      > > cli();
                      > > GeneratePulse( Steer_cmd, LEFTSERVO );
                      > > GeneratePulse( Power_cmd, RIGHTSERVO );
                      > > sei();
                      > >
                      > > Switching back to the BASCOM servo positioning code worked
                      correctly
                      > > for the servo as well as the R/C speed controller, without
                      touching
                      > > the hardware. Switching the servo to the other port works fine in
                      C,
                      > > so I believe this is somehow related to the waveform. Since I
                      don't
                      > > have access to an O-Scope, (I need one badly to troubleshoot
                      this),
                      > > does anyone have an idea why the C code would position a servo,
                      but
                      > > not an R/C speed controller?
                      > >
                      > > Barry
                      > >
                      > >
                      > > --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                      > > <dhylands@b...> wrote:
                      > > > Hi Barry,
                      > > >
                      > > > Here is some code I wrote for the MegaBitty, which is similar
                      to the
                      > > > ARC. The MegaBitty has a 16-MHz crystal on it. I configured
                      Timer2
                      > > as
                      > > > follows:
                      > > >
                      > > > //--------------------------------------------------------------
                      ----
                      > > ----
                      > > > ----
                      > > > // Timer/Counter 2
                      > > > //
                      > > > // We run Timer 2 in free running mode, 8us/tick
                      > > >
                      > > > #define TCCR2_CLK_DIV_128 ( BV( CS22 ) | BV( CS20 ))
                      > > >
                      > > > #define TCCR2_INIT TCCR2_CLK_DIV_128 // 16000000/128 =
                      125000
                      > > > ticks/sec 1/125000 = 8 usec/tick
                      > > >
                      > > > And Timer 2 is initialized using:
                      > > >
                      > > > TCCR2 = TCCR2_INIT;
                      > > >
                      > > > The width passed to the GeneratePulse function is the number of
                      8
                      > > usec
                      > > > ticks to wait. It only generates a single pulse, so you need to
                      > > call it
                      > > > every 20-50 msec (which I did from my main loop).
                      > > >
                      > > > You should also be able to set things up to use interrupts so
                      you
                      > > just
                      > > > set the pulse width, and it sends it out in the background.
                      > > >
                      > > > void GeneratePulse( uns8 width, int pin )
                      > > > {
                      > > > // Wait for the timer/counter to roll over
                      > > >
                      > > > while ( TCNT2 != 0xFF )
                      > > > {
                      > > > ;
                      > > > }
                      > > >
                      > > > // Wait for the 0xFF --> 0x00 rollover
                      > > >
                      > > > while ( TCNT2 != 0 )
                      > > > {
                      > > > ;
                      > > > }
                      > > >
                      > > > PORTD |= BV( pin );
                      > > >
                      > > > // Now wait for the width of the pulse
                      > > >
                      > > > while ( TCNT2 < width )
                      > > > {
                      > > > ;
                      > > > }
                      > > >
                      > > > PORTD &= ~BV( pin );
                      > > >
                      > > > } // GeneratePulse
                      > > >
                      > > > --
                      > > > Dave Hylands
                      > > > Vancouver, BC, Canada
                      > > > http://www.DaveHylands.com/
                      > > >
                      > > > > -----Original Message-----
                      > > > > From: barryschrag [mailto:barryschrag@y...]
                      > > > > Sent: Tuesday, November 30, 2004 10:16 AM
                      > > > > To: SeattleRobotics@yahoogroups.com
                      > > > > Subject: [SeattleRobotics] Servo control with ARC
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > > Can anyone point me to a sample of how to set a servo
                      position
                      > > using
                      > > > > an ARC AVR board in C? I am moving some control code from
                      > > BASCOM to
                      > > > > C, and I see samples of setting motor speed with PWM, but can
                      the
                      > > > > same code be used for controlling servo?
                      > > > >
                      > > > > Barry
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > > Visit the SRS Website at http://www.seattlerobotics.org
                      > > > > Yahoo! Groups Links
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > > > >
                      > >
                      > >
                      > >
                      > >
                      > >
                      > > Visit the SRS Website at http://www.seattlerobotics.org
                      > > Yahoo! Groups Links
                      > >
                      > >
                      > >
                      > >
                      > >
                      > >
                      > >
                      > >
                      > >
                    • Larry Barello
                      The line you added changes the I/O port from an INPUT to an OUTPUT port. WHen it is an INPUT port, writing to the PORT register will switch on/off ~50kohm pull
                      Message 10 of 19 , Dec 1, 2004
                      • 0 Attachment
                        The line you added changes the I/O port from an INPUT to an OUTPUT port.
                        WHen it is an INPUT port, writing to the PORT register will switch on/off
                        ~50kohm pull up resistor. When configured as an OUTPUT, writing to the PORT
                        register will drive the line high/low. Sooo, apparently, the pullup
                        resister was sufficient to drive the servo, but not the ESC. Possibly the
                        ESC has photo-isolators on the input and require a few hundred ohm drive vs
                        50k.

                        Cheers!

                        -----Original Message-----
                        From: barryschrag [mailto:barryschrag@...]
                        Sent: Wednesday, December 01, 2004 7:56 PM
                        To: SeattleRobotics@yahoogroups.com
                        Subject: [SeattleRobotics] Re: ESC control with ARC in C




                        Ok, a very strange thing is happening. I decided to try this line:

                        DDRC |= (BV( 2 ) | BV( 5 ));

                        and we are rolling! I turned off the ARC board, pulled out the ESC
                        connector from the right port, moved the Servo connector to the right
                        port in its place, then I commented out the DDRC line and redeployed -
                        - to check my sanity.

                        The servo moves on the right servo port without the DDRC setting. I
                        thought the port should not provide output without the setting, so
                        what am I misunderstanding here? Why does the servos work without
                        the setting, but the ESC doesn't?


                        --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                        <dhylands@b...> wrote:
                        > Hi Barry,
                        >
                        > Did you modify the C code to use Port C?
                        >
                        > The GeneratePulse routine I provided is hardcoded to use Port D.
                        >
                        > And oh - yeah - You'll need to configure the pins to be output pins
                        too.
                        >
                        > I forgot to include that code. You'll need to do something like
                        this for
                        > port D:
                        >
                        > DDRD |= (BV( 2 ) | BV( 6 ));
                        >
                        > Hmm - you said it positions a servo fine? Is the servo on the same
                        pins
                        > as the ESC? (i.e. you unplugged one and then plugged in the other?)
                        >
                        > --
                        > Dave Hylands
                        > Vancouver, BC, Canada
                        > http://www.DaveHylands.com/
                        >
                        > > -----Original Message-----
                        > > From: barryschrag [mailto:barryschrag@y...]
                        > > Sent: Wednesday, December 01, 2004 3:27 PM
                        > > To: SeattleRobotics@yahoogroups.com
                        > > Subject: [SeattleRobotics] ESC control with ARC in C
                        > >
                        > >
                        > >
                        > >
                        > > yummm... code
                        > >
                        > > I used the MegaBitty code on the ARC AVR board (at 8Mhz internal
                        I
                        > > think), and it correctly positions a servo. Thanks!
                        > >
                        > > I have had no success enabling the external 16Mhz clock, so if
                        this
                        > > is a problem I may need instruction.
                        > >
                        > > Next, I attempted to use the same code to control an R/C speed
                        > > controller (I assume the ESC uses is a servo PWM signal, because
                        the
                        > > following BASCOM servo sample code makes motors tied to the ESC
                        run..)
                        > >
                        > > Sub Left_servo(byval Pulse As Word)
                        > > Disable Interrupts
                        > > Pulseout Portc , 2 , Pulse
                        > > Enable Interrupts
                        > > End Sub
                        > > Sub Right_servo(byval Pulse As Word)
                        > > Disable Interrupts
                        > > Pulseout Portc , 5 , Pulse
                        > > Enable Interrupts
                        > > End Sub
                        > >
                        > > However, I can't get the R/C speed controller to work with this C
                        > > code!
                        > >
                        > > #define LEFTSERVO 2
                        > > #define RIGHTSERVO 5
                        > > cli();
                        > > GeneratePulse( Steer_cmd, LEFTSERVO );
                        > > GeneratePulse( Power_cmd, RIGHTSERVO );
                        > > sei();
                        > >
                        > > Switching back to the BASCOM servo positioning code worked
                        correctly
                        > > for the servo as well as the R/C speed controller, without
                        touching
                        > > the hardware. Switching the servo to the other port works fine in
                        C,
                        > > so I believe this is somehow related to the waveform. Since I
                        don't
                        > > have access to an O-Scope, (I need one badly to troubleshoot
                        this),
                        > > does anyone have an idea why the C code would position a servo,
                        but
                        > > not an R/C speed controller?
                        > >
                        > > Barry
                        > >
                        > >
                        > > --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                        > > <dhylands@b...> wrote:
                        > > > Hi Barry,
                        > > >
                        > > > Here is some code I wrote for the MegaBitty, which is similar
                        to the
                        > > > ARC. The MegaBitty has a 16-MHz crystal on it. I configured
                        Timer2
                        > > as
                        > > > follows:
                        > > >
                        > > > //--------------------------------------------------------------
                        ----
                        > > ----
                        > > > ----
                        > > > // Timer/Counter 2
                        > > > //
                        > > > // We run Timer 2 in free running mode, 8us/tick
                        > > >
                        > > > #define TCCR2_CLK_DIV_128 ( BV( CS22 ) | BV( CS20 ))
                        > > >
                        > > > #define TCCR2_INIT TCCR2_CLK_DIV_128 // 16000000/128 =
                        125000
                        > > > ticks/sec 1/125000 = 8 usec/tick
                        > > >
                        > > > And Timer 2 is initialized using:
                        > > >
                        > > > TCCR2 = TCCR2_INIT;
                        > > >
                        > > > The width passed to the GeneratePulse function is the number of
                        8
                        > > usec
                        > > > ticks to wait. It only generates a single pulse, so you need to
                        > > call it
                        > > > every 20-50 msec (which I did from my main loop).
                        > > >
                        > > > You should also be able to set things up to use interrupts so
                        you
                        > > just
                        > > > set the pulse width, and it sends it out in the background.
                        > > >
                        > > > void GeneratePulse( uns8 width, int pin )
                        > > > {
                        > > > // Wait for the timer/counter to roll over
                        > > >
                        > > > while ( TCNT2 != 0xFF )
                        > > > {
                        > > > ;
                        > > > }
                        > > >
                        > > > // Wait for the 0xFF --> 0x00 rollover
                        > > >
                        > > > while ( TCNT2 != 0 )
                        > > > {
                        > > > ;
                        > > > }
                        > > >
                        > > > PORTD |= BV( pin );
                        > > >
                        > > > // Now wait for the width of the pulse
                        > > >
                        > > > while ( TCNT2 < width )
                        > > > {
                        > > > ;
                        > > > }
                        > > >
                        > > > PORTD &= ~BV( pin );
                        > > >
                        > > > } // GeneratePulse
                        > > >
                        > > > --
                        > > > Dave Hylands
                        > > > Vancouver, BC, Canada
                        > > > http://www.DaveHylands.com/
                        > > >
                        > > > > -----Original Message-----
                        > > > > From: barryschrag [mailto:barryschrag@y...]
                        > > > > Sent: Tuesday, November 30, 2004 10:16 AM
                        > > > > To: SeattleRobotics@yahoogroups.com
                        > > > > Subject: [SeattleRobotics] Servo control with ARC
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > > Can anyone point me to a sample of how to set a servo
                        position
                        > > using
                        > > > > an ARC AVR board in C? I am moving some control code from
                        > > BASCOM to
                        > > > > C, and I see samples of setting motor speed with PWM, but can
                        the
                        > > > > same code be used for controlling servo?
                        > > > >
                        > > > > Barry
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > > Visit the SRS Website at http://www.seattlerobotics.org
                        > > > > Yahoo! Groups Links
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > > > >
                        > >
                        > >
                        > >
                        > >
                        > >
                        > > Visit the SRS Website at http://www.seattlerobotics.org
                        > > Yahoo! Groups Links
                        > >
                        > >
                        > >
                        > >
                        > >
                        > >
                        > >
                        > >
                        > >





                        Visit the SRS Website at http://www.seattlerobotics.org
                        Yahoo! Groups Links
                      • Rich Chandler
                        ... Could be a signal strength issue. I know Victors need amplification with certain RC receivers.
                        Message 11 of 19 , Dec 2, 2004
                        • 0 Attachment
                          barryschrag wrote:
                          >
                          > I ran the values from 0 to 255 and there is no detectable output
                          > from that ESC. Any idea which end of the range the ESC might want?

                          Could be a signal strength issue. I know Victors need amplification with
                          certain RC receivers.
                        • barryschrag
                          That makes sense, I had no idea. Thanks! ... port. ... on/off ... the PORT ... Possibly the ... drive vs ... right ... redeployed - ... without ... pins ...
                          Message 12 of 19 , Dec 2, 2004
                          • 0 Attachment
                            That makes sense, I had no idea.

                            Thanks!

                            --- In SeattleRobotics@yahoogroups.com, "Larry Barello" <yahoo@b...>
                            wrote:
                            > The line you added changes the I/O port from an INPUT to an OUTPUT
                            port.
                            > WHen it is an INPUT port, writing to the PORT register will switch
                            on/off
                            > ~50kohm pull up resistor. When configured as an OUTPUT, writing to
                            the PORT
                            > register will drive the line high/low. Sooo, apparently, the pullup
                            > resister was sufficient to drive the servo, but not the ESC.
                            Possibly the
                            > ESC has photo-isolators on the input and require a few hundred ohm
                            drive vs
                            > 50k.
                            >
                            > Cheers!
                            >
                            > -----Original Message-----
                            > From: barryschrag [mailto:barryschrag@y...]
                            > Sent: Wednesday, December 01, 2004 7:56 PM
                            > To: SeattleRobotics@yahoogroups.com
                            > Subject: [SeattleRobotics] Re: ESC control with ARC in C
                            >
                            >
                            >
                            >
                            > Ok, a very strange thing is happening. I decided to try this line:
                            >
                            > DDRC |= (BV( 2 ) | BV( 5 ));
                            >
                            > and we are rolling! I turned off the ARC board, pulled out the ESC
                            > connector from the right port, moved the Servo connector to the
                            right
                            > port in its place, then I commented out the DDRC line and
                            redeployed -
                            > - to check my sanity.
                            >
                            > The servo moves on the right servo port without the DDRC setting. I
                            > thought the port should not provide output without the setting, so
                            > what am I misunderstanding here? Why does the servos work
                            without
                            > the setting, but the ESC doesn't?
                            >
                            >
                            > --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                            > <dhylands@b...> wrote:
                            > > Hi Barry,
                            > >
                            > > Did you modify the C code to use Port C?
                            > >
                            > > The GeneratePulse routine I provided is hardcoded to use Port D.
                            > >
                            > > And oh - yeah - You'll need to configure the pins to be output
                            pins
                            > too.
                            > >
                            > > I forgot to include that code. You'll need to do something like
                            > this for
                            > > port D:
                            > >
                            > > DDRD |= (BV( 2 ) | BV( 6 ));
                            > >
                            > > Hmm - you said it positions a servo fine? Is the servo on the same
                            > pins
                            > > as the ESC? (i.e. you unplugged one and then plugged in the
                            other?)
                            > >
                            > > --
                            > > Dave Hylands
                            > > Vancouver, BC, Canada
                            > > http://www.DaveHylands.com/
                            > >
                            > > > -----Original Message-----
                            > > > From: barryschrag [mailto:barryschrag@y...]
                            > > > Sent: Wednesday, December 01, 2004 3:27 PM
                            > > > To: SeattleRobotics@yahoogroups.com
                            > > > Subject: [SeattleRobotics] ESC control with ARC in C
                            > > >
                            > > >
                            > > >
                            > > >
                            > > > yummm... code
                            > > >
                            > > > I used the MegaBitty code on the ARC AVR board (at 8Mhz internal
                            > I
                            > > > think), and it correctly positions a servo. Thanks!
                            > > >
                            > > > I have had no success enabling the external 16Mhz clock, so if
                            > this
                            > > > is a problem I may need instruction.
                            > > >
                            > > > Next, I attempted to use the same code to control an R/C speed
                            > > > controller (I assume the ESC uses is a servo PWM signal, because
                            > the
                            > > > following BASCOM servo sample code makes motors tied to the ESC
                            > run..)
                            > > >
                            > > > Sub Left_servo(byval Pulse As Word)
                            > > > Disable Interrupts
                            > > > Pulseout Portc , 2 , Pulse
                            > > > Enable Interrupts
                            > > > End Sub
                            > > > Sub Right_servo(byval Pulse As Word)
                            > > > Disable Interrupts
                            > > > Pulseout Portc , 5 , Pulse
                            > > > Enable Interrupts
                            > > > End Sub
                            > > >
                            > > > However, I can't get the R/C speed controller to work with this
                            C
                            > > > code!
                            > > >
                            > > > #define LEFTSERVO 2
                            > > > #define RIGHTSERVO 5
                            > > > cli();
                            > > > GeneratePulse( Steer_cmd, LEFTSERVO );
                            > > > GeneratePulse( Power_cmd, RIGHTSERVO );
                            > > > sei();
                            > > >
                            > > > Switching back to the BASCOM servo positioning code worked
                            > correctly
                            > > > for the servo as well as the R/C speed controller, without
                            > touching
                            > > > the hardware. Switching the servo to the other port works fine
                            in
                            > C,
                            > > > so I believe this is somehow related to the waveform. Since I
                            > don't
                            > > > have access to an O-Scope, (I need one badly to troubleshoot
                            > this),
                            > > > does anyone have an idea why the C code would position a servo,
                            > but
                            > > > not an R/C speed controller?
                            > > >
                            > > > Barry
                            > > >
                            > > >
                            > > > --- In SeattleRobotics@yahoogroups.com, "Dave Hylands"
                            > > > <dhylands@b...> wrote:
                            > > > > Hi Barry,
                            > > > >
                            > > > > Here is some code I wrote for the MegaBitty, which is similar
                            > to the
                            > > > > ARC. The MegaBitty has a 16-MHz crystal on it. I configured
                            > Timer2
                            > > > as
                            > > > > follows:
                            > > > >
                            > > > > //------------------------------------------------------------
                            --
                            > ----
                            > > > ----
                            > > > > ----
                            > > > > // Timer/Counter 2
                            > > > > //
                            > > > > // We run Timer 2 in free running mode, 8us/tick
                            > > > >
                            > > > > #define TCCR2_CLK_DIV_128 ( BV( CS22 ) | BV( CS20 ))
                            > > > >
                            > > > > #define TCCR2_INIT TCCR2_CLK_DIV_128 // 16000000/128 =
                            > 125000
                            > > > > ticks/sec 1/125000 = 8 usec/tick
                            > > > >
                            > > > > And Timer 2 is initialized using:
                            > > > >
                            > > > > TCCR2 = TCCR2_INIT;
                            > > > >
                            > > > > The width passed to the GeneratePulse function is the number
                            of
                            > 8
                            > > > usec
                            > > > > ticks to wait. It only generates a single pulse, so you need
                            to
                            > > > call it
                            > > > > every 20-50 msec (which I did from my main loop).
                            > > > >
                            > > > > You should also be able to set things up to use interrupts so
                            > you
                            > > > just
                            > > > > set the pulse width, and it sends it out in the background.
                            > > > >
                            > > > > void GeneratePulse( uns8 width, int pin )
                            > > > > {
                            > > > > // Wait for the timer/counter to roll over
                            > > > >
                            > > > > while ( TCNT2 != 0xFF )
                            > > > > {
                            > > > > ;
                            > > > > }
                            > > > >
                            > > > > // Wait for the 0xFF --> 0x00 rollover
                            > > > >
                            > > > > while ( TCNT2 != 0 )
                            > > > > {
                            > > > > ;
                            > > > > }
                            > > > >
                            > > > > PORTD |= BV( pin );
                            > > > >
                            > > > > // Now wait for the width of the pulse
                            > > > >
                            > > > > while ( TCNT2 < width )
                            > > > > {
                            > > > > ;
                            > > > > }
                            > > > >
                            > > > > PORTD &= ~BV( pin );
                            > > > >
                            > > > > } // GeneratePulse
                            > > > >
                            > > > > --
                            > > > > Dave Hylands
                            > > > > Vancouver, BC, Canada
                            > > > > http://www.DaveHylands.com/
                            > > > >
                            > > > > > -----Original Message-----
                            > > > > > From: barryschrag [mailto:barryschrag@y...]
                            > > > > > Sent: Tuesday, November 30, 2004 10:16 AM
                            > > > > > To: SeattleRobotics@yahoogroups.com
                            > > > > > Subject: [SeattleRobotics] Servo control with ARC
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > > Can anyone point me to a sample of how to set a servo
                            > position
                            > > > using
                            > > > > > an ARC AVR board in C? I am moving some control code from
                            > > > BASCOM to
                            > > > > > C, and I see samples of setting motor speed with PWM, but
                            can
                            > the
                            > > > > > same code be used for controlling servo?
                            > > > > >
                            > > > > > Barry
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > > Visit the SRS Website at http://www.seattlerobotics.org
                            > > > > > Yahoo! Groups Links
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            > > > Visit the SRS Website at http://www.seattlerobotics.org
                            > > > Yahoo! Groups Links
                            > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            > > >
                            >
                            >
                            >
                            >
                            >
                            > Visit the SRS Website at http://www.seattlerobotics.org
                            > Yahoo! Groups Links
                          • Rich Chandler
                            ... I missed the earlier link, but I looked at this one. That s one slick chip. Pretty expensive though, $17 for the 8 servo version and $21 for the 16
                            Message 13 of 19 , Dec 2, 2004
                            • 0 Attachment
                              tbrenke@... wrote:
                              >
                              > the link I put up was for a single chip that will run 16 servos with simple I2C.
                              > commands AND you can order the chip with 3 different addresses for running 48
                              > servos all from the same 3 io lines of your micro.
                              >
                              > how simple and easy is that?
                              > if you do not want to design the board for the chip to plug into, then get one of
                              > the RCB boards and plug the chip in.
                              >
                              > http://www.totalrobots.com/access_files/general_mods.htm#rcbv2
                              >
                              > (no, I do not work for them)

                              I missed the earlier link, but I looked at this one. That's one slick chip.
                              Pretty expensive though, $17 for the 8 servo version and $21 for the 16
                              (Assuming $1.85 per british pounds, and let's not forget shipping).

                              I wonder if there's a US supplier of anything similar.
                            • tbrenke@verizon.net
                              funny you should say that.... Brian of BDmicro (the mavric) is designing one like this with more features. I do not know when he will have this ready though.
                              Message 14 of 19 , Dec 2, 2004
                              • 0 Attachment
                                funny you should say that....
                                Brian of BDmicro (the mavric) is designing one like this with more features.
                                I do not know when he will have this ready though.


                                ----- Original Message -----
                                From: Rich Chandler
                                To: SeattleRobotics@yahoogroups.com
                                Sent: Thursday, December 02, 2004 1:10 PM
                                Subject: Re: [SeattleRobotics] Servo control with ARC



                                tbrenke@... wrote:
                                >
                                > the link I put up was for a single chip that will run 16 servos with simple I2C.
                                > commands AND you can order the chip with 3 different addresses for running 48
                                > servos all from the same 3 io lines of your micro.
                                >
                                > how simple and easy is that?
                                > if you do not want to design the board for the chip to plug into, then get one of
                                > the RCB boards and plug the chip in.
                                >
                                > http://www.totalrobots.com/access_files/general_mods.htm#rcbv2
                                >
                                > (no, I do not work for them)

                                I missed the earlier link, but I looked at this one. That's one slick chip.
                                Pretty expensive though, $17 for the 8 servo version and $21 for the 16
                                (Assuming $1.85 per british pounds, and let's not forget shipping).

                                I wonder if there's a US supplier of anything similar.


                                Visit the SRS Website at http://www.seattlerobotics.org
                                Yahoo! Groups Links









                                [Non-text portions of this message have been removed]
                              Your message has been successfully submitted and would be delivered to recipients shortly.