Hello all, My team is experimenting with an off season swerve drive for our t-shirt shooting robot. Since our budget is not unlimited, I was thinking of a cheaper option than 8x$75 ($600) for motor controllers and using a generic PWM ESC for hobby motors. They are rated for 40A and seem to be feasible. I was wondering if it would be even plausible to continue with this idea. Any insights or suggestions would be helpful.
-also, would existing libraries for PWM Speed controllers work for any generic PWM motor controller?
The biggest issue would be that 40A rating. Is that continuous or peak? If continuous, what is the peak, and vice versa? In any case, if you use typical FRC drive motors you’d need to do voltage ramping or other limiting to keep the ESCs alive.
The FRC PWM motor controllers are compatible with generic hobby ESCs as far as the pulse width - to - duty cycle mapping; this shouldn’t be an issue.
EDIT/ADDED: Oh, now I see below that you intend to use NEOs. From the NEO product page:
NEO has been optimized to work with the REV SPARK MAX Motor Controller to deliver best-in-class performance and feedback. Brushless motors like the NEO can ONLY be driven using brushless motor controllers, and will be damaged if used incorrectly. Currently the only FRC legal brushless motor controller is the SPARK MAX.
So it doesn’t say that there aren’t other brushless controllers that might work with it, but it doesn’t suggest any others, either.
Why are you asking for a SparkMAX alternative, as opposed to a generic cheap speed controller? Are you using NEOs or DC motors?
What are you hoping to learn from this iteration of a Swerve Drive?
(How much value would there be in the programming process being 1:1 to a competition robot?)
We are using neo motors and hope to use a brushless PWM ESC. We hope to learn enough from this iteration of swerve to determine: if we are ready to implement swerve next season, and to teach people the programming of a drive base that isnt west coast.
Gonna be completely honest - swerve is expensive. No way around it.
I’m working on one using ODrives for a personal project (I’m waiting on the ODrive right now) and that’s a little cheaper and I would trust it a lot more than generic brushless controller.
If you are planning on steering with Neos def suggest either a SparkMax or some other sensored controller just so it has some hope of closing the loop.
Neither of those will control brushless motor controllers. Jaguars also aren’t a great option considering that they’ve been discontinued for years and Sparks are more compact and easier to find.
I’d recommend to pick a path: either use mini-CIMs with DC controllers (and external encoders) or SparkMAXes with NEOs (and have the roboRIO read the NEO encoders through the MAXes).
There’s a whole set of brushless motor control problems that the SparkMax makes invisible to the end user, and I don’t think you should set yourself up for those problems and then have your team decide to never pursue Swerve for that reason.
If you have engineering mentor support, maybe work with them to pick a sensored brushless controller, but then you’re still going to have to build a custom circuit to split the encoder output so that both the controllers & RIO can read the encoders directly and safely (optical isolators are your friend). The PWM protocol won’t let the controller tell the roboRIO what the encoder is seeing. A SparkMAX on the CANbus is capable of telling the roboRIO what the encoder sees.
You may find that the SparkMAX is actually pretty cheap, in comparison to external encoders or the custom circuit I described.
If you’re worried about power output just make sure you’re underweight by the same ratio as the power difference between the motors (30% less power? build to 30% less weight [ie 120lbs becomes 85lbs limit].)
ok yea he didn’t say anything about brush less but you can find them for hobby stuff on amazon. That is why I only had 1 brushed because they weren’t there
Can your team afford to buy sufficient parts and materials for several iterations of swerve drive chassis?
Several years ago, I spoke with some members of Team 16 at Houston Champs. They said it took them 5 years to get their swerve drive to the point that it gave them a competitive advantage.
To be fair, that was before the era of COTS modules, thousands of existing and tested designs (and even a few good ones), publicly available code, and a robot controller with a less laughably underpowered CPU.
If you are investing in NEO motors to use for competition, then you should also be investing in SparkMAX controllers. You can’t use NEOs on an FRC robot without using SparkMAXs to control them. It seems silly to pay $40 for a NEO motor if you can’t use it in competition by also buying a legal motor controller.
If you are just wanting to do some experimenting with swerve, as you have indicated, then pull some brushed motors out of your inventory like CIMs or miniCIMs and grab whatever motor controllers you have in inventory to run them with. You should not need to buy new motors or controllers for offseason experimenting unless you are specifically experimenting with the motors. Any outer loop programming and learning you can do with a hobby motor controller hooked to a NEO can also be done with a brushed motor and controller. The inner loop program (PID tuning, etc.) should be done with the motors and controllers you intend to use for competition.
We competed with 775 PROs for drive in 2017 and miniCIMs for drive in 2018 and AM9015s for steering both years. This year we switched to NEOs for drive and switched to RS550s for steering. You don’t necessarily need 8 NEOs to do swerve. You certainly don’t need NEOs for experimenting with swerve.
Anything sensored should work, but probably will end up being more trouble than it’s worth. An odrive could be nice, but that’s like, the same price per motor. Sensorless won’t cut it.
It is not clear that the OP is using COTS swerve modules.
If the OP is going to use motor controllers that are not FRC-legal, they will have to buy at least two sets of motor controllers in order to use swerve in competition.
It’s SLIGHTLY cheaper…
$130 (for 2 channels) vs $150 for 2 Spark Maxes - Or for a 4 wheel swerve - $520 vs $600. Not really a big deal. I went with ODrives because they are easier to interface to a Jetson Nano. We’ll see how much of a pain getting Neos spinning is with them.
easy for swerve drive and very usefully
You also can test functionality etc with just using two module, and omni wheels in the other corners, it will give you full holonomic motion and swerve behavior for half the price. Combine that with using brushed motors for steering and your options go up a lot.
He is using neos, the only option are the spark maxes and a generic pwm motor controller since it is brushless.
You’re operating one level down the decision tree from where I’m making a suggestion.
My most important question is what OP wants to learn from this exercise - that goal is what needs to guide architecture choices like the motor+controller+sensor suite.
OP doesn’t need to use NEOs. A miniCIM bolts up to the same pattern, has the same 8mm output shaft and weight, and is substantially easier to find a cheap and effective controller for. A CIM bolts up to the same pattern, has the same 8mm output shaft, similar power output, and is substantially easier to find a cheap and effective controller for.
Second, there are technical reasons why I’ve made my suggestions.
It’s irresponsible to say OP can use a “generic PWM motor controller” - none of the 48 first-page Amazon results for “motor controller” will work in a Swerve application with NEOs. (Of the three first-page brushless results, none include encoder inputs.)
A generic pwm brushless non-sensored motor controller will not be able to control the NEO accurately enough to steer the module, and will struggle to drive the wheel. Non-sensored controllers have awful spin-up characteristics and rely on motor inertia achieve controllability; this is ok for quadcopters & RC cars that have a single direction of spin and only “spin up” once, but if literally every movement is a spin up operation you won’t have consistent and effective results with this class of controller.
A generic pwm brushless sensored motor controller that can accept 42 count/rev encoder input might work OK, because you’ll have a chance of consistent spinup behavior… but OP won’t be able to use the integrated NEO sensor for both motor controller feedback and roboRIO feedback without a custom circuit to allow both devices to read the integrated sensor independently, so now you’re buying/building external encoders or custom circuits because you didn’t want to upgrade to sparkMaxes. This is not an optional expense, swerve is not controllable without sensor feedback on at least the Yaw (angle).
Finally, Page2067 has the most important and effective cost-saving measure:
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.