1um precision CNC mill

Sorry to resurrect an old thread, but I was looking for information about using ODrive in CNC machines and I found this claim. What do you mean by that? I thought ODrive is limited to what the encoder outputs, so you can have as many steps as you want with encoder that’s sensitive enough. Am I missing something?

The encoder as specified has 8192 steps. Sure you can use any encoder with any amount of steps but at some point you’ll reach the limits of the controller.

The motor encoder resolution is overall not that important. A standard 5mm pitch ballscrew moves 0.00061mm per encoder tick.

Hi, it depends on your reduction gear/belt drive and how good the machine is at taking out the backlash, I should imagine it’s very difficult to get a machine down to micrometers and be able to measure it accurately. Although using a glass scale feedback as the controlling input, it may be possible with very slow and controlled movements. I am converting my CNC mill with ODrives as I type this ;-D.

Project on here too.

2 Likes

I also would like to understand where this 8192 value comes from exactly and what you mean by “the encoder as specified”. If you could elaborate on this, I would greatly appreciate it. Thanks.

This is a quote from another thread called [oDrive precision] (oDrive precision) regarding this:

Also, a stepper system always has limitations when it comes to the number of reliably achievable shaft positions in one revolution that make it necessary to use timing belt reductions for ultra-precision applications approaching single-digit micrometer scale, also because it is not easy to find C0-class ballscrews in extremely slow pitches below 5mm. Microstepping above a certain ratio does not lead to an increased count in positions the system can move to and I always consider a 200-step stepper motor a 2000-position device to be realistic.
Dan Gelbart talks about this in the comments of the video of his air bearing lathe that uses steppers, 4mm pitch C0 ballscrews and a 2:1 timing belt reduction transmission with pulleys carefully fabricated to very high levels of geometrical accuracy.
A simple 2000ppr / 8000cpr quadrature encoder with a good motor on an ODrive and a solid mechanical execution should exceed a stepper’s positioning and also dynamic performance and can drive a ballscrew directly if desired, eliminating the transmission and its compliance and other issues. Also, we can swap out the encoder with for example a 10,000ppr one to achieve on-paper positioning steps of 0.125µm on a 5mm screw or 0.5µm on a more common pitch of 20mm, if you use a beefy motor to direct-drive it. Of course stick-slip (and compliance and flexing of the structure if it was not designed for this mode of operation, the ballscrew bearing mounts, compliance and radial error etc.) will make single-µm positioning mostly unachievable in practice but who knows, maybe someone uses hydrostatic guides, does not want to or can’t use linear motors and gets lucky with a golden sample C0 screw in a well-designed low-force machine. So I do not quite follow the recommendation to look towards steppers over the ODrive for such an application. The timing belt transmissions are just a huge risk and source of compliance, let alone cost.

Go to the shop. There’s a 8192 count encoder on sale there. That one.

Yes, you can easily use an encoder with a higher resolution. But at some point you’ll run into the limitation of the boards ability to move the motor in small enough increments, ie the precision doesn’t necessarily increase. You may also run into the problem of 32 bit values and count frequency.

Also steppers can easily do 16x microstepping. They can easily do 128x microstepping. They’re good and reliable systems that are used all over for that exact reason.

Regardless of the motor system. To reach that kind of precision you need direct feedback from linear encoders that cost way too much for anyone to buy.

Not necessarily!
I bought some “digital caliper” style linear scales from machine-DRO.co.uk years ago, and used an AVR micro (essentially an Arduino) to read the data out of them at about 10Hz.
They may be slow, but they are accurate, and if fed into a state estimator / model-based controller, you could use them to compensate out for backlash, elastic deflection etc.
Turns out that almost all “digital calipers” have a data port with some open-collector pins, and can be put into a “high speed” mode which is about 10Hz.

Also, I’d avoid the stock 8192 count encoder because it’s a single-ended incremental interface (and also has friction) whereas using an AS5047p SPI sensor (or similar), you have absolute feedback (i.e. NO calibration on start-up, which could be highly problematic for a milling machine, and no lost steps due to noise spikes), Zero friction (non-contact sensor!) and 16384 counts to boot. It’s also a lot cheaper. I don’t know why anyone uses anything else tbh.

They have resolution of 0.01 and accuracy if 0.03. To get to micron accuracy you need scales with sub-micron resolution and accuracy.

The conventional wisdom is you need 10x the accuracy you intend to measure.

1 Like

True, but you’re never going to get micron accuracy out of a milling machine. :rofl:
Micron precision is always possible - accuracy not.

Tell that to kern :stuck_out_tongue:

My point still stands… :stuck_out_tongue_winking_eye:
Unless you happen to have a million euro or two to buy one off Kern

That was some machining porn though… Thanks! :joy:

1 Like

Thank you for clearing this up. But this is not the resolution of the ODrive, it is just a random encoder. That is what was a bit confusing in your earlier posts.

Well, this specifically is what I would like to hear more about and I think this is not fully clear. This limitation has to do with the granularity of current control in ODrive and its resolution but also the ability of the ODrive to stay within a few counts of error will (depending on how many counts per revolution we are talking about here) have something to do with motor construction such as pole and slot configurations and motor radius, to an extent. Maybe someone can shed some more light on this.

Yes, steppers are great and we love them. But they can only do one thing at a time, precision or moving at (modest) speeds. And that makes them very unsuitable if you want both in one machine. You can micro-step 1000x or ∞x and drive them with pure sine, it never will solve the problem that the number of individual positions a 1.8° stepper can turn to in one revolution in a reliable manner is not much above 2000, maybe 4000 if you are lucky and loads are very low. So for a ballscrew, you need to gear down until the error of the stepper becomes noise in the equation, which means precision pulleys. If you begin with a no-backlash electromagnetical system (permanent magnet synchronous machine servo) direct-driving a no-backlash preloaded mechanical rolling element transmission (ballscrew), you have a far superior starting point and actually save yourself from having to manufacture very precise pulleys and also you do not need to obsess over keeping the forces as low since there is less compliance in the system.

Not so much I think… If you consider for example that “bang-bang controller” can achieve good positioning, but only has one bit of current control resolution!

Yes, specifically cogging, which is effectively a torque disturbance as a function of position. Slotless (aka coreless) motors do not have any cogging, and so are much easier to control precisely.
But really even with high cogging, the main limitation is encoder resolution. Although it can be difficult to precisely control high-cogging motors especially if they have a low inertia.
At this point you are limited by the bandwidth of the current controller (which is often a function of voltage. This is partly why industrial servos run at 600V bus voltages even if the back EMF is only a few volts). However there is an upper limit on control bandwidth, because the controller runs in discrete-time, at a maximum loop rate of 8kHz on ODrive. This means that time itself is quantised from the controller’s point of view, so if the change you are interested in (a 10 count movement on a 1mppr encoder, with a coggy, low-inertia motor) happens in les than 1/8 msec, you’re toast.

1 Like

Thanks towen, this is quite interesting and helpful. Indeed, we of course have a frequency limit for changes in position which gets very obvious if we have a very high number of counts even for a few degrees of movement, creating a specific resolution-based positional change limit of a different kind than simply pulsetrain or electrical commutation frequency limits. That is another problem altogether to consider.

You mentioned increasing inertia in another thread which could limit the acceleration rate that is likely to occur in a given system and thus act as a mechanical intertia-based low-pass filter that would counteract this.

A really good point.

This is quite fascinating though. If we consider a large-ish custom made and well-fabricated ironless axial flux disc motor in a low speed system with a very high resolution absolute encoder, we may even be able to achieve an arcsecond resolution direct drive turntable with an ODrive. However, the holding of the position may be compromised if chaotic (fast) forces are acting on the system because of the above mentioned issue where fast changes are impossible to manage down to this resolution. Again, having a high mass turntable (and an arcsecond turntable would be heavy anyhow, so this is a given) may be a benefit here because the mass could be deliberately sized to make it difficult to accelerate and decelerate the system fast enough to get affected by the 8kHz limitation, but this would have to be calculated based on the actual inertias and the specific application. A very interesting idea indeed.

Yes, and this of course only works for a direct-drive system, geared systems are not able to take advantage of the turntable’s inertia, because there is a (small but nonetheless fatal) backlash between the motor and load.

I want one of those for my ebike. Where can I get one? :stuck_out_tongue:
No, seriously, it would be really good as a hub motor because ironless motors also have no magnetic hysteresis drag, which means it can be used for regen, without causing a continuous drag on the bike even while powered off.

I know, aww I love them so much! I really want one too but I have not gotten around to doing such a thing. Since the electrical steel laminations or even more specific other core materials are kind of the most odd and difficult element of an electric machine to manufacture for a custom prototype motor, making a coreless machine is relatively easy if you have some patience and like that sort of work. Alex Borg has a site called amazingdiyprojects.com and he has made a little ebook about this, it is called build your own electric motor. I really liked his very practical approach that I found very refreshing to take as a base idea to develop from. You can also see his motor on youtube, it is quite cool for such a low-tech approach. Also there is lots of more academic content on the topic of ironless axial flux BLDC machines.
In my bookmarks, I found http://scolton.blogspot.com/search/label/axial%20motor
and http://build-its-inprogress.blogspot.com/2015/02/coreless-axial-flux-motors.html for more personal blog examples of such things.

I think this is a question for madcowswe to answer. I don’t think this has been explored before.

Speaking of this, does anybody know of a fitting 21+bit absolute encoder that is obtainable from accessible sources?

Not unless you have hundreds per encoder to pay for it. You also need SSI to use them.

Broadcom has some new magnetics but I think they only sell to OEMs.

Thanks Roiki. I had a feeling. So SSI is preferred in these ultra high resolution encoders because of the differential signal integrity, making it a logical choice for top of the line servo systems with utmost reliability? I have seen some info about a 20-bit encoder that has an SPI option, but I am not too familiar with the absolute encoder landscape. What is the highest resolution SPI magnetic absolute you are aware of that can be purchased? If they cost a few hundreds, that may be acceptable for what it is.

SSI(and Biss) and rs485 are the standards in the industry for digital connections. Canopen and ethercat are the latest preferred ones. Also SPI is not really meant for outside-board communication, it’s meant for interboard communication between ICs where traces are short and EMI is low. This is why it’s not used on industry grade products.

I’m not aware of any that go that high, especially with SPI. Magnetics just aren’t advanced enough yet. Broadcom aeat-6000 is 16 bits for slow rotation speeds but you need an extra expensive programmer to program the chip for use. AS33-M50M, also from broadcom, is 18 bit single turn but is available only to OEMs on bulk order. None of these have SPI, only SSI, Biss-c and rs485.

If you need that high of a resolution you need to look at optics but they’re pricey and bulky.