Title. I’m working on a personal project that requires very high speed positional control loops. Under normal circumstances I would just use a Talon SRX (which has a 20ms control loop), but I’m not super jazzed about paying $90 per controller. I understand the concept of “you get what you pay for”, but are there any (cheaper) alternatives to creating a 20ms positional control loop using a 12v motor and an encoder?
You might be able to use a cheap hobby ESC and do the actual closed loop control on an arduino or other MCU that reads the encoder and spits out the proper PWM value for the motor controller.
If you would’ve asked this question about a month ago you could’ve picked up a knockoff Talon DMC60C for like $10 each
I think the SparkMax can also run a 20ms control loop, and is slightly cheaper than the TalonSRX. The VictorSPX is cheaper, but you’ll need to get the encoder on the CAN network somehow else.
There are many options, it mainly depends on how turn-key you want/need, what sensors you need to incorporate, and how much power (type of motor and loads) is required. A Google search on “12v brushed dc motor controller programmable” will turn up a long list.
Assuming you don’t want to design/build something from parts and do all the programming yourself, this page has some decent options. But you could wind up back in the same price range. You can probably find cheaper with some digging, but it depends on the exact requirements.
Just to clarify, the Talon SRX (and Victor and Talon FX) has a 1ms internal control loop.
A standard robot program using the WPILib framework runs at 20ms intervals.
As for your original question, spec the controller you need based on your electrical requirements - if your application is low current, you can likely find some fairly inexpensive hobby controllers with a limit of a few amps. You would need to then write the control loop yourself on another device.
Beyond “you get what you pay for” in terms of quality components, the general trade off you’ll see is cost vs time. Generally (but not always), using less expensive components comes at the tradeoff of having to do more of the work yourself - the optimal point between the two for your application depends entirely on you and the project requirements/constraints.
Obviously this is more expensive, but here is a project some guy is working on that is pretty cool
Basically a more expensive version of what you’re looking for
Sort of. It is for brushless motors and drives two of them.
It will drive a neo with some work but I haven’t tried a neo 550 yet since I haven’t had a reason to order any.
These are great I have used them for college projects. Highly recommend, but do yourself a favor and print a cover.
Generally speaking, “smart” motor controllers are a thing that are primarily found in various forms of educational robotics (or industrial automation). Most hobby grade ESCs (electronic speed controllers) don’t have the features that FRC customers have come to expect with the recent generations of speed controllers. A lot of the RC car/boat/plane and combat robotics markets that drive the development of budget speed controllers don’t really incorporate much closed loop control, and when sensor inputs and closed loops are required, that is typically passed off to an external microcontroller (such as an arduino). Those hobby grade controllers typically emphasize other features (small size/weight, dual channel support, input mixing, etc) instead.
Not knowing more about your project, you may want to consider either servos or stepper motors as potential options.
A valid thought, but servos or steppers would be too slow. What I’m driving with the position control loop is a linear actuator consisting of two pulleys and an open ended belt, with the belt being mounted to a carriage. Essentially just a 3D printer / CNC sort of actuator. It also has to move as much as 25 cm in a (very small) fraction of a second. If that sound excessive or dangerous, it probably is.
What is your target budget per controller and are you at all interesting in trying brushless motors?
Servomotors can be plenty fast (and what you’re attempting to create with your ESC is, in essence, a servo). There may be solutions out there that already meet your requirements, although it will very much be a “get what you pay for” scenario once again.
Take a look at the BasicMicro Roboclaw motor controllers. A number of versions depending on your current draw are available, and the lower current capable models are pretty cheap compared to talons. In addition, they’re dual channel (meaning 2 individually controlled motors per controller). The 15a continuous model is $45 per channel if I recall correctly (so half the cost of the talon per motor controlled).
I’ve got some experience with them and they’re relatively easy to use, but I’d suggest looking into it yourself, of course.
They have a few closed loop options as well.
Maybe start a “Wanted: Talon SRX for cheap” or “Convert your extra Talon SRX’s to cash” thread (unless this is against the rules) and see if anyone has extras they would be willing to sell you for less than $90. I agree the $90 seems expensive at first, but when you compare the capabilities to the available alternatives and the cost of your time, maybe it is not really so bad.
Again not knowing too much about this project, you may want to check out hobby BLDC motors. Odrive has been recommended in this thread, but I would also recommend the Moteus r4.3. From what I’ve heard it can be cheaper per axis due to the built in encoder. moteus r4.3 controller – mjbots Robotic Systems
Do you have exp with the moteus? I’ve followed it’s development but went with odrive for a personal project due to what I’d hoped was better documentation. (It’s ok)
But the form factor is less than optimal for me.
Do you know if the moteus is based at all on the FW/HW of the Mini Cheetah controller or if the vague resemblance is just a coincidence?
I am surprised no one has mentioned the VESC. You can do closed-loop positional control and has CAN support. They have a large range of versions due to being open source. If you need something cheap maybe the VESC 4.12 would work $55. The rest of the VESC line up is going to be about the same price or more expensive than the CTRE product.
I was going to mention VESC, but it’s not exactly a drop-in replacement for the Talon SRX. As far as I know, with the the way the firmware is set up you can only have one sensor for both commutation and closed loop position control. I have seen some unofficial firmware that’s robotics-oriented floating around, but I haven’t tested it myself.