Page 1 of 1

MindSensors GlideWheel-M tests

Posted: 19 Jul 2012, 15:59
by inxt-generation
MindSensors kindly sent me some GlideWheel-Ms to test. Here are my tests, and their results:


Speed test.

I wanted to see how fast the GlideWheel-M could go before it broke, or started to lose encoder counts. Also how well it handled different motors directly connected to it, as well as PWM. It's probably better explained in the video;



So, it handles most motors pretty well. PF-XL seems to be the best, with RC motor (obviously) doing worst. The GlideWheel-M can easily handle speed exceeding 1000 RPMs, though I don't really see a application that would be using that :wink:

Just some pics of the setup and motors.

Image

Image

Image

Programs are in RobotC.

Code: Select all

task SpeedAdjust();

task main()
{
  nxtDisplayCenteredTextLine(0, "Do you want");
  nxtDisplayCenteredTextLine(1, "PID control?");
  nxtDisplayCenteredTextLine(2, "This will give");
  nxtDisplayCenteredTextLine(3, "speeds like the");
  nxtDisplayCenteredTextLine(4, "MindStorms NXT");
  nxtDisplayCenteredTextLine(5, "Servo Motor.");
  nxtDisplayCenteredTextLine(7, "No.        Yes.");

  while(nNxtButtonPressed == kNoButton);

  if(nNxtButtonPressed == kLeftButton) nMotorPIDSpeedCtrl[motorA] = mtrNoReg;
  else nMotorPIDSpeedCtrl[motorA] = mtrSpeedReg;

  while(nNxtButtonPressed != kNoButton);

  eraseDisplay();

  nxtDisplayCenteredTextLine(7, "DEC         INC");

  StartTask(SpeedAdjust);

  while(true)
  {
    time1[T1] = 0;

    nMotorEncoder[motorA] = 0;

    while(nMotorEncoder[motorA] < 360 && nMotorEncoder[motorA] > -360);

    nxtDisplayCenteredTextLine(2, "Mtr RPM = %d", 60000 / time1[T1]);
    nxtDisplayCenteredTextLine(3, "Mtr RPS = %d", 1000 / time1[T1]);
  }
}

task SpeedAdjust()
{
  int speed = 0;

  while(true)
  {
    if(nNxtButtonPressed == kLeftButton) speed -= 1;
    if(nNxtButtonPressed == kRightButton) speed += 1;

    if(speed > 100) speed = 100;
    if(speed < -100) speed = -100;

    nxtDisplayCenteredTextLine(0, "Mtr speed = %d", speed);
    nxtDisplayCenteredTextLine(1, "Mtr PWM = %d", motorPWMLevel[motorA]);

    motor[motorA] = speed;

    wait1Msec(100);
  }
}

Encoder test.

Not much to this one. Run a NXT motor and PF-XL with the GlideWheel-M for 1000 revolutions, and see how much they drifted.



GlideWheel-M encoder accuracy is equal to, or better than the NXT motor.

Code: Select all

#pragma config(Motor,  motorC,          ,              tmotorNormal, PIDControl, reversed, encoder)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

task main()
{
  long MtrBTtlEncdr = 0;
  long MtrCTtlEncdr = 0;

  for(int i = 1; i <= 1000; i++)
  {
    nMotorEncoder[motorB] = 0;
    nMotorEncoder[motorC] = 0;

    nMotorEncoderTarget[motorB] = 360;
    nMotorEncoderTarget[motorC] = 360;

    motor[motorB] = 50;
    motor[motorC] = 50;

    while(nMotorRunState[motorB] != runStateIdle && nMotorRunState[motorC] != runStateIdle);

    motor[motorB] = 0;
    motor[motorC] = 0;

    MtrBTtlEncdr += nMotorEncoder[motorB];
    MtrCTtlEncdr += nMotorEncoder[motorC];

    nxtDisplayCenteredTextLine(2, "NXT Encdr: %d", MtrBTtlEncdr);
    nxtDisplayCenteredTextLine(3, "PF Encdr: %d", MtrCTtlEncdr);
    nxtDisplayCenteredTextLine(5, "Revolutions: %d", i);
  }
}
So, there they are. I could've done better, but I was pressed for time (BrickWorld, cleaning up, etc). I also used these in my BrickWorld 2012 BOTS challenge robot, but that's another post.

Re: MindSensors GlideWheel-M tests

Posted: 21 Jul 2012, 01:51
by jwiger
Well done!

Re: MindSensors GlideWheel-M tests

Posted: 21 Jul 2012, 15:57
by inxt-generation
Thanks! :mrgreen: