Symptom โ cause โ fix. Use this when a motor is behaving wrong and you need to diagnose it in under 5 minutes. Also includes a pit diagnostic protocol for between-match emergencies.
| Symptom | Most likely cause | Fix |
|---|---|---|
| Motor overheating (temp warning on Brain) | Gear ratio too high, mechanism jammed, or motor running stalled against hard stop | Check for jams. Verify the gear ratio matches the motor's RPM setting in code. Add motor temperature monitoring with motor.get_temperature(). Consider a different cartridge. |
| Port not responding (Brain shows "?" on port) | Loose cable connection, damaged port, or wrong port number in code | Reseat the cable both ends โ firm click. Try a different known-good port. Swap cable. If port is dead, reassign to an open port and update code. |
| Motor runs at wrong speed or reverses unexpectedly | Wrong cartridge installed, reversed polarity in code, or incorrect gear ratio | Check physical cartridge color (red=100rpm, green=200rpm, blue=600rpm) matches code. Check port sign โ negative reverses direction. Verify gear ratio constant. |
| Motor shakes or vibrates under load | Shaft misalignment, loose shaft collar, or missing bearing | Every shaft needs support on both ends. Check all collars. Verify shaft is not bent โ roll on flat surface. Add bearing block if missing. |
| Motor makes grinding noise | Mechanism collision inside motor, gear mesh too tight, or debris in gearbox | Run motor unloaded โ still grinding? Replace motor. If only under load: check gear mesh distance and alignment. |
| Motor loses position under load (arm drops) | PID not tuned for holding, or brake mode not set | Set motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD). Alternatively add position hold in code: if joystick near zero, hold last position. |
| Motor spins freely when it should hold | Brake mode set to COAST instead of HOLD | Check brake mode setting in code. Should be HOLD for arms and lifts, BRAKE for drive motors. |
| Motor stutters or cuts out intermittently | Damaged cable, borderline port connection, or brownout under load | Wiggle cable while robot is running โ if symptoms change, replace cable. Check battery charge. Add current limiting in code if motor draws spikes. |
| Motor draws too much current (brownout) | Mechanism physically blocked, or too much load on cartridge | Check for jams at full range of motion. Consider higher-torque cartridge (lower RPM). Distribute load across more motors if possible. |
| All motors slow down simultaneously | Battery low or bad connection | Check battery level. Swap for a fully charged battery. Check battery cable seating. Inspect battery connector pins for damage. |
| Temperature | Status | Action |
|---|---|---|
| Under 40ยฐC | Normal operating temperature | None needed |
| 40โ55ยฐC | Warm but functional | Monitor. Consider reducing load or speed |
| 55โ65ยฐC | Hot โ performance may reduce | V5 motors throttle power above 55ยฐC. Fix the root cause (jam, ratio, overuse) |
| 65ยฐC+ | Motor protecting itself | Stop immediately. Let cool 5+ minutes. Diagnose root cause before running again |
Read temperature in code: int temp = motor.get_temperature(); โ returns Celsius as integer.