BLDC sensor-less control - how to ?
Wassim wrote 01/03/2019 at 10:42 • 0 pointsEdit : Thanks for all those who provided valuable references and comments, I realized that sensor-less is not a good idea for my application, as it is low speed and as sensors are becoming more available with reasonable integration effort.
____________________________________________________________________
Hi all, I would like to develop a #Self standing balancing robot , I selected BLDCs with low KV and not servomotors or steppers so that it is as fluent as cameras gimbals control. Wrote a pseudo sine flow control https://github.com/nRFMesh/nRF52_Mesh/blob/master/drivers/bldc.c
Now I'm not sure if that would work in open loop? If possible to have torque control (limited breaking force) ?
How to know what is the maximum current that can go through the coils without damaging them (wire of 0.15 mm) ?
Any hints or links for BLDC sensor-less position control, BLDC based balancing robots, or just ideas or comments would be appreciated.
Note that I'll be 3d printing the robot, so position sensors or encoders would greatly complicate the conception.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
I'd suggest using a proper encoder.
But if you're interested in sensorless mode, search for "high frequency injection". Advanced stuff, good for low speed. ODrive plans to implement it in one way or another.
I played around with the concept, have a project here.
Are you sure? yes | no
Yeah that's a wise advice, I realized that "sensor-less" is a fancy wording, but only effective in some application ranges and is a head-ache in some others.
I started checking on encoders for two reasons, bench-marking and testing, but also for deployment. I'm currently testing a 600ppr encoder, see my log here : https://hackaday.io/project/162973-self-standing-balancing-robot/log/157866-encoder-for-the-bldc-test-bench
But that is way out of size for a small robot, I'm considering hall effect sensors, which I believe are more reliable as they have a positioning that is really referenced to the rotor and not to the steps. With a normal encoder, I guess it is still required to identify the poles offset, and skipping encoder steps is not good, I'm struggling a bit with a qdec peripheral from nRF52.
Thanks for the "high frequency injection" reference, I'll check that out.
Are you sure? yes | no
Why did you not want to use stepper motors?
If you get a good 400 Steps/Rev motor and a driver with 256 microstepping (either with an interpolated STEP/DIR interface or controlled via SPI), a stepper motor would definitely stay nice and fluent, but would require less feedback.
Are you sure? yes | no
I'm using a BLDC with 12N14P, the only difference with a stepper is that in stead of 14 Poles, the stepper wold have 400. I do not mind stepping on the stepper's field. The issue I have is that it's not clear to me how to perform the torque control. I would like the motor to be reversible. That let's say the robot falls and has to counter with an arm, it should not hit the ground (or someone's face) like a rock, rather applying torque on the axis motor would allow it immediately to lean back in case the torque is higher than a certain amount. I think that a very high number of pole such as in a stepper, would immediately lose the step if acted upon and forced to move. The BLDC would have a higher margin within which the other sensors would react (motion sensor).
But maybe I'm wrong, if you see examples of reversible steppers, or torque controlled steppers, please let me know.
In any case, I think that given the size and direct axis connection required (ideally no reduction), I might have to fall back on an even higher number of poles, and then I would already be in the low step count steppers filed.
Thanks for your suggestion, it made me consider again steppers.
Full explanation of the context and the project is here : #Self standing balancing robot if there is a particular stepper that would fit the power and weight (20 ~ 50 g) links would be appreciated.
Are you sure? yes | no
I think what you need is not a stepper, but rather the Trinamic stepper motor drivers.
They feature a built in phase shift detection, effectively allowing the driver to monitor load on the stepper motor. The driver can be set to increase motor power to prevent failure, and the MCU could also read out the torque value from the driver via SPI and initiate a safe power down, as you described, once the torque hits a certain safety margin
Are you sure? yes | no
reply to your last comment (Trinamic drivers).
That's a wise recommendation, thank you.
I had these Trinamic drivers on my scope when I made a review about different controllers.
https://onedrive.live.com/redir?resid=FD7137F2BE60A0A8%211482&authkey=%21AGZQGU9mEMj2Cps&page=View&wd=target%28Motors.one%7C777a617d-50cd-47a7-8b8b-0adbec69cfff%2FControllers%7Cc95b0c9f-fc5f-4833-86a9-81ddad186f3f%2F%29&wdorigin=703
If the Trinamics fits a reasonably compact design for a small Robot, I would use them, don't want to reinvent the wheel.
But I'll also focus on understanding how they work, detecting the step skip is likely to include back-emf and the torque control has most likely a current limitation.
I realized that the controller I'd like to use (nRF52) does have a comparator, which is the only why to make a fast enough current limiter.
Are you sure? yes | no
@Xasin , I took the time to look deeper into the stepper motors, and I must admit that your recommendation is fully justified as I did not provide all details of my application. I try to build a self standing robot, that will have to carry its own weight including the motors.
When I searched for stepper motors, for example : https://www.pololu.com/category/87/stepper-motors
most of the steppers I find are very heavy in comparison of the holding toque they produce, they do of course guarantee that max current can be permanently applied and heat is well dissipated.
I will nevertheless order one or two steppers and put them on my test bench, let me know if you have any reference of a stepper with same range as this bldc
https://hobbyking.com/en_us/turnigy-hd-2212-brushless-gimbal-motor-bldc.html
most important : weight 50 g, torque depends still not sure ~ 600 ~ 1000 g.cm
Are you sure? yes | no
Hm... Your weight requirement is very low. Steppers obviously have a ton of torque but a lot of weight. A BLDC will get you a lot of RPM and low weight, but you'll need a gearbox to get the appropriate torque, if I remember them correctly - I might be wrong about their holding torque. I'm interested to see what you'll come up with as a good solution!
Are you sure? yes | no
Yeah I'd like the robot not to be very big so that it's not more expensive, and the motor weights decision is like a chicken-egg problems for robots that have to carry their own weight. Bigger motors need bigger batteries. You're right about the reduction, we can see examples of hackaday projects, this one for example #OpenTorque Actuator used in #Blackbird Bipedal Robot , has a bldc with a planetary gear stage.
I will update when I get something meaningful to show.
Are you sure? yes | no
http://blog.dzl.dk/2018/02/27/finally-that-sbldc-experiment/
Are you sure? yes | no
Thank you for the link Jarret, actually the application note from ST is nice,
despite old STM7 but the BLDC part is still in perfect shape. It is back-emf based, which is a common sensor-less technique, though might not be efficient for low speed or stop.
I do have motion sensors that might help same as in gimbals, but I'm thinking that adding an encoder might be reasonable way which would change the topic scope "sensor-less".
https://www.st.com/content/ccc/resource/technical/document/application_note/aa/b4/69/3f/75/58/4a/a1/CD00020086.pdf/files/CD00020086.pdf/jcr:content/translations/en.CD00020086.pdf
Are you sure? yes | no
Hello, have a look through the ODrive docs (and discord), There is certainly some ability to use lock in drive with the controller, I am not sure whether true sensorless (I assume you mean back emf based control) is implemented. None the less that community is exactly the correct group to ask.
However I would recommend encoders. 3D printing mounts for them is not difficult, you would certainly see lots of people doing similar things on the ODrive discord. The performance of the board with low KV motors, good encoders and a LiPo battery is pretty terrifying!
Are you sure? yes | no
Thanks for the hints, very helpful, I'll have a look. By sensor-less, yeah back-emf could be included but not necessarily as it's apparently only helpful at high speed and noisy at low speed and of course null at stop. Maybe it's true, that with encoders life is easier and the control is much more reliable. I just received a 600p encoder for test purpose, rather big and heavy for a small robot, but I'll search for ways how to have smaller integrations.
ODrive docs and discord then, thanks.
https://odriverobotics.com/
Are you sure? yes | no
The CUI encoders that are usually used with the odrive are reasonable compact, and are very high resolution, 8192 p I think. roughly 15usd from digikey I think. If your motor has dual shafts, that is a nice way of mounting without the encoders limiting access to the pulleys/ wheels etc. Lock in drive works fine even at low speed, though as it is treating them like poorly designed stepper motors it is not efficient, encoders drops power use to only that which is needed to drive the wheels. I hope you find what you are looking for. (I am shilling only due to the fact I am using these drivers myself, also check out VESC, which is similar.)
Are you sure? yes | no
Thank you @Joshua Elsdon , Odrive is a great project, I took the time to have a look at it. Not only the encoders are reasonable to use, but they are also in two variants, optical and hall effect.
The ones with index pulse are good to avoid cumulative issues or errors, and the ones with hall effect being aligned to poles, would not even require complicated calibration every startup.
The Odrive itself is unfortunately a bit over-scale to my application, I plan to use approximately 50g bldc motors, the VESC is also big, I'm searching for some sort of mini-VESC or mini-ODrive.
Are you sure? yes | no