NEO Motor & SPARK MAX problems

So we’ve been working with the NEO brushless motors from REV and today we’ve been having an astonishing amount of problems getting it to work correctly so we’re looking for suggestions. Our problem is as follows:
After about 35-40 seconds of turning on power to the robot (Applying power to the SPARK MAX and CAN bus), the motor begins stuttering heavily in Brake mode (it does the same in Coast mode, it’s just less noticeable. The robot then needs to be fully power throttled before the motors will function again, but it just goes back to the same state after the 35-40 seconds.

Things we’ve tried:
-Switching firmware versions = We’ve used v1.0.385 and v1.0.381, as well as the 1.1.26Beta version.
-Swtiching NEO Motors
-Swtiching SPARK MAX controllers

Here’s some videos of our tests:

  1. https://youtu.be/-5aC7GMnZis
  2. https://youtu.be/J8ff5tLwCJk
  3. https://youtu.be/j56qa_X6XGY

We’re open to suggestions, we’ve been at this for 4+ hours and we’ve only discovered more problem.

Thank you from Team 1310

We’re trying to recreate what you’re seeing over here. Can you try the same experiments with the CAN bus completely disconnected, and then again with CAN only and no USB?

@dyanoshak Our NEOs don’t function at all (through the client) without CAN connected

Something to note, our NEOs were working over CAN perfectly fine 6 hours ago, nothing has changed but they’re not functioning now.

I suspect that a parameter might have been inadvertently changed. We need to try to get it working with each individual interface.

It is odd that you are able to connect through the client to update firmware, but it doesn’t control the motor. Are you running the latest Client? Check and make sure that all of your parameters are set to their default values based on this parameter list: SPARK MAX Configuration Parameters.

There is a new command in the beta release called RestoreFactoryDefaults() if you would rather do that. This requires both the beta firmware and the beta API.

Also, please send me your code, either in this thread or to [email protected].

A few more questions: Could you elaborate on what behavior you are seeing? What does the Status LED indicate when it stopped working? Does the motor spin differently than you expect it to, or does it not spin at all?

Our code can be found at: https://github.com/RunnymedeRobotics1310/2019_Robot
The SPARK MAX’s are still running default parameters, the only thing we’ve changed around in the CAN ID’s.

When connected via CAN the status LED blinks back and forth between light blue (brushless, brake) and the colour for it’s corresponding direction (either red or green), that’s what we believe is causing the stuttering. And to elaborate, when we run the motors via CAN, the motors function fine for 30-40 seconds and then begin aggressively shuttering until power to the robot is completely restarted.

To clarify, did you verify recently that the parameters are set to default? There is a chance that during CAN ID assignment that another parameter was toggled in the Client that you didn’t intend to change. I don’t meant to badger the point, I’m just asking for clarification of your previous statement.

In summary so far:

  • CAN and USB both physically connected
    • Commands from USB
      • Stuttering after 30 - 40s
    • Commands from CAN
      • Unknown at this time
  • USB connection only (CAN physically unplugged)
    • You stated that it doesn’t work, but I am still unclear as to what you are observing. e.g. Status LED and other behaviors
  • CAN connection only (USB physically unplugged)
    • Worked for 6 hours, then started showing the 30-40s stutter.

Please let me know if my summary is incorrect and please fill in any gaps if you can.

Also, how is your battery charge? You mentioned nothing changing after 6 hours of successful operation. Was the battery ever swapped out during this time?

It is possible that after 30 - 40s of operation with a discharged battery, the controller is browning out momentarily. This will stop the motor, temporarily bring the voltage back up, the motor will turn back on, and then the startup current causes a quicker brownout that starts the oscillation you’re seeing that manifests as stuttering.

So after some more testing and troubleshooting, we were able to get all but 2 motor controllers functional. We still have one controller that is completely unresponsive, as well as another that won’t take new firmware (It’s stuck on version 1.0.367, all the rest are running 1.0.385).

I have the exact same problem except the issue starts instantly. Any ideas?

1 Like

Sorry for the late reply, but if it still isn’t working try updating to the latest firmware, the client likely won’t work while CAN or PWM is connected. If they stutter while running them through the robot, try checking for bad connections (we had a couple CAN adapters with loose crimps).

Are you saying that CAN/PWM should be disconnected while configuring the Spark MAX? That sounds more than a little inconvenient.

Only while testing configuration changes via the client (i.e. using the motor testing panel). Through testing we determined that the SPARK MAX gets confused when it has more than 1 motor controlling system connecting (CAN, PWM, USB, etc.)

Ahh, that makes sense. Thanks!

Hi Did you get a resolution for your initial problem of stutters/jitters? We are having the exact same issue - happening in both brake and coast mode (brake is worse) with our group of drive train motors. The other neos on our robot don’t exhibit this problem. It happens with brand new fully charge batteries within seconds. It doesn’t appear to be a cam issue since other neo/sparks work and if we disconnect the rio and test each spark via usb they work fine. Any suggestions would be greatly appreciated.

Can you post your driverstation log file? Our robot has the same issues we believe are caused by brownouts from driving. We enabled current limiting as a band-aid fix.

Was that a typo? The latest Spark Max firmware is version 1.5.2. Before 1.5 you need to plug into each SM individually to update firmware.

This is incorrect.

SPARK MAXs with 1.4.0 firmware are updatable via CAN by a SPARK MAX that is on 1.5.0 or higher.

You can use the API calls noted in theSPARK MAX troubleshooting guide to narrow down the issue.

What does your code look like?

There are known SPARK MAX issues with .restoreFactoryDefaults() behaving strangely with .follow(). The symptoms seem similar.