Detect Motor Burnout?

We have seen many V5 motors go bad w/out any sort of indicator (light red, brain ‘sees’ it)

However with tandem motors (lift) this is an issue b/c it is not really apparent.

My Q is is there a was we can determine if a motor’s OK via VEXCode or ??

Looking at the motor() API it looks like everything is whilst the motor is already running.

So maybe a separate chk_motors program that .spins() each motor and looks for .isSpinning() or reads the encoder?

Any thoughts are appreciated!

Motor burnouts will be indicated on the brain log via the temperature levels.

2 Likes

Thanks - good idea - I’ll look at this! You mean after robot’s been run to look at this?

One of our teams brought us a problematic robot and suspect the motor’s temperature were all room temp.

For 393 motors we built a tester jig to test their performance. It was a motor that spun 4 wheels with an encoder on the shaft. We spun them forward for 5 seconds then backwards for 5 seconds and just looked at the values to tell the quality of the motor.

1 Like

great idea as well. However I was hoping to test motors on the robot - say between matches.

IDK why our school burns through them like we do - but you know that Murphy…:upside_down_face:

Yup. After it is run you can unplug a motor to get the screen pop up with the button for the log. If the motors reached the temperature limits it’ll list it there.

1 Like

Thanks all for your input.

What I wanted was a quick program students can run between matches to check motor’s working.

While not sophisticated, this is what I’d envisioned and welcome any input. The one thing I haven’t figured out is when motors are directly coupled If the encoder works but motors doesn’t this may send a false positive…

/void pre_auton(void) {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // set motor defayults
  setUpMotor(L_Drive, 10);
  setUpMotor(R_Drive, 10);
  setUpMotor(L_Lift, 10);
  setUpMotor(R_Lift, 10);
  setUpMotor(Claw, 10);

} // end pre_auton

// DEFAULT MOTOR SETTINGS
void setUpMotor(motor(M),int D) {
  M.value();
  M.setMaxTorque(90, percentUnits::pct); // set torque
  M.setTimeout(3, timeUnits::sec);       // set motor timeout
  M.resetRotation();                     // reset encoders
  M.setStopping(hold);                   // hold
  M.spinTo(D, deg, 15, velocityUnits::pct);
  dspMotor();
  wait(2, seconds);
}

void dspMotor() {
  Controller1.Screen.clearScreen();
  Controller1.Screen.setCursor(1, 1);
  Controller1.Screen.print("Drive L: %3d R: %3d",
                           L_Drive.current(amp)/1000,
                           R_Drive.current(amp)/1000); // L&R DRIVE
  Controller1.Screen.setCursor(2, 1);
  Controller1.Screen.print("Lift  L: %3d R: %3d",
                           L_Lift.current(amp)/1000,
                           R_Lift.current(amp)/1000); // L&R LIFT
  Controller1.Screen.setCursor(2, 1);
  Controller1.Screen.print("Claw: %3d",
                           Claw.current(amp)/1000); // CLAW

} // END TEST MOTOR

Oh, that sounds pretty cool! I find it easier to just go through the log but if you want you can try adding temperature like this:

Motor.temperature(percent);

I’ve never used this before but if you want to try it it may be worth a shot.

2 Likes

maybe this’ll help you out, but you’ll have to convert it to vexcode-c++:

2 Likes

Thanks - yes, the temperature and current are great metrics - just not sure how to log these & get kids to read the log…

you don’t. My reference to a log was to the one automatically generated by your brain when you plug in motors, unplug them, when a motor overheats, etc.

1 Like

thanks - this is good info !

U got me thinking & it hurts! :face_with_raised_eyebrow:

1 Like

got to look at that! I knew the brain would throw messages and display real-time stats - must be a way to query this

Again - our kids are middle school and it’s hard enough getting them to remember to check fasteners - asking them to rifle through brain menus equates to work & guarantees they won’t…

Totally get it. If you have any trouble finding it I can work up a gif tomorrow if you’d like.

2 Likes

that’s mighty kind of you - you prompted a change in code - instead of using motor position I am reading the motor current! seeing motor.stop(hold) anything with a load should show up - the problem is drive motor but that’s easy to tell anyway…

Still got to look at the brain’s data - that’s a good one…

As a side note, the prefered way to get to the Event Log is here: https://help.vex.com/article/464-how-to-access-event-log-on-the-v5-brain

The Event log can be checked while a program is running too.

The hardware is designed to handle hot plugging, but by unplugging the motor to get the pop-up error, it does create unnecessary events in the log.

5 Likes