First off, an apology: this is probably going to be the stupidest question ever written on this forum, but I feel like here is probably the best place to ask and get a definitive answer.
So at the moment, I’m working on an rc robot. Previous robot builds of mine have always used brushed motors from old wheelchairs, but this one needs to be as efficient as possible (within reason anyway) so I’ve elected to use brushless motors. On my previous builds, I’ve typically used something like a sabretooth dual motor controller (the kind designed for battlebots and other similar such robots), which have this nifty feature called “mixed mode” wherein I can control the forward/back and left/right movement of the robot from a single joystick on the transmitter by making the motors spin/reverse to go forward/back or making one motor spin forward and the other back to make it turn left/right.
While searching for a similar such controller for bldc motors, I came across Odrive’s Odesc dual bldc controller (literally about two hours ago) but most of the info I’ve seen (mostly youtube videos) have just used them in forward/back operations. Before I do anymore research on the Odesc dual controller, is it able to handle such forward/reverse; left/right driving or is it designed to be used in conjunction with servos to make the left/right movement work?
Many thanks in advance
Hi there! Not a stupid question!
The ODrive is generally designed to work alongside an external motion controller - e.g. to execute external pos/vel/torque commands given to it from a microcontroller / computer / etc. As such, it doesn’t have native support for channel mixing, or general fancy input signal processing, since it’s designed to be used in systems that already have external computers/microcontrollers. A really easy way of doing this would be to use an Arduino to take in the PWM channels with pulseIn(), calculate the left/right speeds, and control the ODrive over UART.
Note the Odesc is an off-brand ODrive - would definitely recommend a genuine ODrive (the S1 is the new-generation and has a bunch of improvements over the v3.6), since the knockoffs are really low quality and have all sorts of issues.
Hi @solomondg ,
Thanks for taking the time to reply, and sorry for my delayed response to you.
In the time between posting and your reply, I read through the Odrive documentation (particularly this) so I’m a now a little confused.
This states that I can plug the receiver directly into the controller for pwm signals. Furthermore, a video from one of the chinese knockoff box shifters (flipsky i think?) shows them doing just that with their version of the controller I mentioned earlier.
My question is this: Am I confusing two things (if so, please could you elaborate?) or do I need a microcontroller in order to do the mixed mode I am interested in?
Thanks in advance (again)
Sorry for the delay myself things have been busy!
So, the PWM inputs are direct maps between the PWM source and e.g. velocity. So in this case you’d be able to connect the receiver to the ODrive and have e.g. each joystick axis the velocity of one motor. But then for instance the joystick forward/back would control the left motor and the joystick left/right would control the right motor - not a very intuitive method of control. If you want the channel mixing, where forward/back controls velocity of both motors and left/right controls a differential velocity for steering, then you’d need a microcontroller. The Flipsky boards are designed for hobby applications, and as such have features like channel mixing - that’s not typically a use case with ODrive, as it’s more intended for precision control, where things like mixing aren’t usually needed.