1um precision CNC mill

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.

Right, that makes perfect sense and I figured so. Well, it would be a nice future addition to the ODrive to include SSI.

Are you talking about units such as these large Heidenhain ring-shaped large through-bore encoders? Yes, I guess I am following what you say about magnetics. I suppose for a turntable of 1 million counts or more, the natural choice would always be a large-diameter true material pattern brute-force precision device that would most of the time be optical.

It would be but it’s some work to get it done. I’ve been looking at putting an ethercat board on it but rtos programming is too bothersome. I’ll just use a teensy in the middle.

There are many kinds. The cheapest I’ve found were broadcom AS37 and AS38, they’re about 200.

You can get magnetic rings and encoders from rls. Both incremental and absolute if ring form is what you need. The cheapest is about 120 and the absolute one I think is about 400. You can get different sized rings(with different pole count) and the read head specifies the resolution(you can get 8192 per pole with 72 poles = 589k counts.) but they their speed is limited by the speed of the counter.

In my earlier employment, we used 22+14 bit absolute multi-turn encoders from Kűbler with SSI or BiSS option. They also had a SIL 3 rated sin/cos output for safe velocity monitoring.
The BiSS/SSI output was absolute over 10^14 (16384) turns.
They cost about 3 grand each. :rofl:

That’s industrial for you. :man_shrugging: