Pros and cons of CAN and PWM?

For us, the question is quite simple.

Simple connections
Streamlined code

Fewer options for the motor controllers

Students learned more advanced programming and diagnostic concepts.
More functionality for advanced motor controllers.
Sometimes, easier troubleshooting when things go awry.

Cabling is more complicated (this is a perspective thing. CAN has fewer wires, but if they come unplugged, there are more devastating effects, all other controllers after stop working, also, there is more of a chance you have to make your own cables)
Programming is more complicated
You have to have specific version software (We use Python, so PWM can run essentially using the WPILIB, but with CAN, we need the specific software and firmware, and it needs to all be up to date. This is easier this year now that we can update all CAN devices through CAN) .

Overall, the pros for CAN outweigh the cons for us. This is especially true with the support of CD and all the resources available here when we get into trouble.

~Mr. R^2


Not sure what you meant by fewer options, so I thought I would clarify for anyone reading this. Hardware wise, both the Talon SRX and Spark Max can be wired via PWM. Software wise, that does mean they can only run in percent input voltage mode, and none of the more advanced modes (eg closed loop control) are available.


That is exactly what I meant. Pwm actually has more options as to which motor contorllers you can use (victors and regular Sparks do not support CAN, but talons and Spark Maxes support both), but it only supports basic operation (percent V Bus).

I also realized that we labored over this decision our second year, and when we switched to CAN, we have had much more reliable robots. Now, I know this is not the only reason, but it is certainly one of the reasons.

It also forced us to learn more about how our robot worked (we learned how to make reliable motor connections, and dove deeper into really understanding how to program an effective robot).

It should be noted that we also switched from Labview to Python at the same time.

One other suggestion, if a team is looking for reliable hardware connections and warry of CAN, the jst connector boards that Swyft sell seem totally worth the investment (we bought some this year).