Legacy Forum: Preserving Nearly 20 Years of Community History - A Time Capsule of Discussions, Memories, and Shared Experiences.

Roboard HiTec Motors

Based on DMP's Vortex processor / SoC this board is a full computer capable of running a standard Windows and Linux installation on the backpack of your robot.
5 postsPage 1 of 1
5 postsPage 1 of 1

Roboard HiTec Motors

Post by jlmunix » Wed Mar 17, 2010 6:45 pm

Post by jlmunix
Wed Mar 17, 2010 6:45 pm

Its possible to connect another model of hitec servo motors to the Roboard?
I want to connect a HS-645MG servos to my roboard. The current RoBoIo can control this type of servos? Anyone has a simple program or a fully feature program?

Its impossible to retrieve the current position in HS-645MG servo?
Its possible to connect another model of hitec servo motors to the Roboard?
I want to connect a HS-645MG servos to my roboard. The current RoBoIo can control this type of servos? Anyone has a simple program or a fully feature program?

Its impossible to retrieve the current position in HS-645MG servo?
jlmunix
Newbie
Newbie
Posts: 4
Joined: Tue Mar 16, 2010 11:42 pm

Post by PaulL » Wed Mar 17, 2010 8:54 pm

Post by PaulL
Wed Mar 17, 2010 8:54 pm

I believe the HSR's are the only servos that can give feedback for position, but if others can, I'm sure someone here will know.

It's ABSOLUTELY possible to connect JUST ABOUT ANY SERVO to this board!!! There are some tweaks you can do in the RoboIO source code to optimize the output PWM signal as needed. Also, you can use the servo profile that I believe is called something like "STANDARD_SERVO" or some such, that should work for just about any, but like I said, you can add a custom PWM setup pretty easily in the source code (RCSERVO.CPP). There's a SWITCH block that can be added to for your custom servo settings, search for KONDO or HITEC in that file, and you'll find it. You'll also see that some of the setups are recursive, meaning the code there calls itself to set things, then modifies those settings to alter a few other settings.
I believe the HSR's are the only servos that can give feedback for position, but if others can, I'm sure someone here will know.

It's ABSOLUTELY possible to connect JUST ABOUT ANY SERVO to this board!!! There are some tweaks you can do in the RoboIO source code to optimize the output PWM signal as needed. Also, you can use the servo profile that I believe is called something like "STANDARD_SERVO" or some such, that should work for just about any, but like I said, you can add a custom PWM setup pretty easily in the source code (RCSERVO.CPP). There's a SWITCH block that can be added to for your custom servo settings, search for KONDO or HITEC in that file, and you'll find it. You'll also see that some of the setups are recursive, meaning the code there calls itself to set things, then modifies those settings to alter a few other settings.
PaulL
Savvy Roboteer
Savvy Roboteer
Posts: 423
Joined: Sat Sep 15, 2007 12:52 am

Post by jlmunix » Thu Mar 18, 2010 11:46 pm

Post by jlmunix
Thu Mar 18, 2010 11:46 pm

RN1AsOf091407 wrote:I believe the HSR's are the only servos that can give feedback for position, but if others can, I'm sure someone here will know.

It's ABSOLUTELY possible to connect JUST ABOUT ANY SERVO to this board!!! There are some tweaks you can do in the RoboIO source code to optimize the output PWM signal as needed. Also, you can use the servo profile that I believe is called something like "STANDARD_SERVO" or some such, that should work for just about any, but like I said, you can add a custom PWM setup pretty easily in the source code (RCSERVO.CPP). There's a SWITCH block that can be added to for your custom servo settings, search for KONDO or HITEC in that file, and you'll find it. You'll also see that some of the setups are recursive, meaning the code there calls itself to set things, then modifies those settings to alter a few other settings.


Thanks, im trying to do that with the Roboard and Hitec 645MG, but i can´t enable the PWM of the RoboIO nothing in the output of my oscilloscope is shown.

This is the code im using:

Code: Select all
#include "roboard.h"

int main(void)
{

   if(rcservo_Initialize(RCSERVO_USECHANNEL0))
     printf("Initialized Ok!\n");
   else
     {
        printf("Initialization failed!\n");
        return -1;
  }
  /* if(rcservo_SetServo(RCSERVO_USECHANNEL0,RCSERVO_SERVO_DEFAULT_NOFB))
     {
        printf("Initialize for hitec servo Ok!\n");
     }
   else
     {
        printf("initialization Failed!\n");
        return 0;
     }*/
   rcservo_EnterPWMMode();
   unsigned long PWM_period = 10000L; //10000us
   unsigned long PWM_duty   = 1500L; //1500us
   unsigned long count      = 10000L;

   rcservo_SendPWMPulses(RCSERVO_USECHANNEL0, PWM_period, PWM_duty, count);
   while (!rcservo_IsPWMCompleted(RCSERVO_USECHANNEL0))
     {
           //
           //can do something here when sending PWM pulses
           //
     }


i don´t know what is wrong! I take this code from the RoBoard...trainging .pdf
RN1AsOf091407 wrote:I believe the HSR's are the only servos that can give feedback for position, but if others can, I'm sure someone here will know.

It's ABSOLUTELY possible to connect JUST ABOUT ANY SERVO to this board!!! There are some tweaks you can do in the RoboIO source code to optimize the output PWM signal as needed. Also, you can use the servo profile that I believe is called something like "STANDARD_SERVO" or some such, that should work for just about any, but like I said, you can add a custom PWM setup pretty easily in the source code (RCSERVO.CPP). There's a SWITCH block that can be added to for your custom servo settings, search for KONDO or HITEC in that file, and you'll find it. You'll also see that some of the setups are recursive, meaning the code there calls itself to set things, then modifies those settings to alter a few other settings.


Thanks, im trying to do that with the Roboard and Hitec 645MG, but i can´t enable the PWM of the RoboIO nothing in the output of my oscilloscope is shown.

This is the code im using:

Code: Select all
#include "roboard.h"

int main(void)
{

   if(rcservo_Initialize(RCSERVO_USECHANNEL0))
     printf("Initialized Ok!\n");
   else
     {
        printf("Initialization failed!\n");
        return -1;
  }
  /* if(rcservo_SetServo(RCSERVO_USECHANNEL0,RCSERVO_SERVO_DEFAULT_NOFB))
     {
        printf("Initialize for hitec servo Ok!\n");
     }
   else
     {
        printf("initialization Failed!\n");
        return 0;
     }*/
   rcservo_EnterPWMMode();
   unsigned long PWM_period = 10000L; //10000us
   unsigned long PWM_duty   = 1500L; //1500us
   unsigned long count      = 10000L;

   rcservo_SendPWMPulses(RCSERVO_USECHANNEL0, PWM_period, PWM_duty, count);
   while (!rcservo_IsPWMCompleted(RCSERVO_USECHANNEL0))
     {
           //
           //can do something here when sending PWM pulses
           //
     }


i don´t know what is wrong! I take this code from the RoBoard...trainging .pdf
jlmunix
Newbie
Newbie
Posts: 4
Joined: Tue Mar 16, 2010 11:42 pm

Post by PaulL » Fri Mar 19, 2010 1:40 am

Post by PaulL
Fri Mar 19, 2010 1:40 am

Try calling "EnableMultiPWM" for all servo channels (FFFFFFFF), let me know if that works or not, I can dig deeper if that doesn't work. :)
Try calling "EnableMultiPWM" for all servo channels (FFFFFFFF), let me know if that works or not, I can dig deeper if that doesn't work. :)
PaulL
Savvy Roboteer
Savvy Roboteer
Posts: 423
Joined: Sat Sep 15, 2007 12:52 am

Post by roboard » Fri Mar 19, 2010 12:10 pm

Post by roboard
Fri Mar 19, 2010 12:10 pm

jlmunix wrote:Thanks, im trying to do that with the Roboard and Hitec 645MG, but i can´t enable the PWM of the RoboIO nothing in the output of my oscilloscope is shown.

This is the code im using:
......


Hi,

RCSERVO_USECHANNEL0~23 are only used in multi-channel functions, such as rcservo_Initialize() and rcservo_ReadPositions(), to indicate multiple channels. So don't use them in single-channel functions, such as rcservo_SetServo() and rcservo_SendPWMPulses().

In calling a single-channel function, just use an integer to indicate the channel. So you should write

Code: Select all
rcservo_SendPWMPulses(0, PWM_period, PWM_duty, count);
while (!rcservo_IsPWMCompleted(0))
{


instead of rcservo_SendPWMPulses(RCSERVO_USECHANNEL0, ......
jlmunix wrote:Thanks, im trying to do that with the Roboard and Hitec 645MG, but i can´t enable the PWM of the RoboIO nothing in the output of my oscilloscope is shown.

This is the code im using:
......


Hi,

RCSERVO_USECHANNEL0~23 are only used in multi-channel functions, such as rcservo_Initialize() and rcservo_ReadPositions(), to indicate multiple channels. So don't use them in single-channel functions, such as rcservo_SetServo() and rcservo_SendPWMPulses().

In calling a single-channel function, just use an integer to indicate the channel. So you should write

Code: Select all
rcservo_SendPWMPulses(0, PWM_period, PWM_duty, count);
while (!rcservo_IsPWMCompleted(0))
{


instead of rcservo_SendPWMPulses(RCSERVO_USECHANNEL0, ......
roboard
Savvy Roboteer
Savvy Roboteer
Posts: 302
Joined: Fri Jul 03, 2009 4:44 am


5 postsPage 1 of 1
5 postsPage 1 of 1