View Full Version : DIY Rotary Encoders?

14-09-2013, 08:49 PM
Although my CNC build is not completed yet, I'm a little concerned about poor accuracy caused by "lost steps". Stepper motors are obviously the most "cost effective" way for DIY CNC, but I wonder if these can be vastly improved with a "cost effective" encoder system? I've seen the hybrid stepper motors (http://www.zappautomation.co.uk/en/easy-servo-stepper-motors-closed-loop-stepper-system/882-es-m22430-3nm-holding-torque.html) with built-in encoders but they're not cheap. I guess THESE (http://www.zappautomation.co.uk/en/encoders/605-hkt300635-301g-1024b-5l-1024-line-optical-encoder.html) add-on encoders are decent value at 30 each, but I can't help thinking that it can be done for less.

Has anyone here experimented with DIY encoders? Maybe something like this? Rotary magnetic encoder modules (http://rls.si/en/rotary-magnetic-encoder-modules--15875)

14-09-2013, 10:21 PM
What control software are you using.? MACH3 can not do closed loop. FULL STOP . . It can read encoders and display the real position, there are also scripts or plug-in's that will let you define a following error +/- value and monitor the Encoder so if it goes out side these parameters generates an E-stop. But it will not correct any error nor can it tell Mach to do it.!

The Closed loop stepper system is FULL closed loop and does all the corrections within the drive so Mach or the control software doesn't need to do anything or even know it's happened. . . . That's the beauty and real benefit of them.!

I believe Linux Cnc can do closed loop with Encoders or glass scales but from what I've read it's not easy or simple setup with lots of messing around with PID settings. They also seem struggle to setup and get reliable results has due to nature of steppers using steps they can settle either side and throw PID settings etc off.?

Know Being honest closed loop correction is good and all that but if you've lost position and gone to far the damage is done anyway so it's only real benefit is if not gone far enough or to wrong place it can correct and get there. . . . Often thou if there's error then damage is done or work spoilt.!!

Don't be concerned with poor accuracy from steppers, they can be just has accurate as servos and far more reliable and easy to setup.
Secret with steppers is the tuning.!! . . if you tune them correctly and don't be greedy with Acceleration and Velocity then you'll not lose any steps or position. When you see people losing steps or position then 99% of time it's they have over tuned the motors or got a problem with machine binding or sticking robbing power/torque at higher speeds.

Buy decent digital drives and you won't have any troubles.

15-09-2013, 02:15 PM
I will be using LinuxCNC which IS capable of handling closed loop feedback. From what I've read, it's just a case of using a servo profile and editing the parameters to match the motor and encoder.

I've never used a stepper driven CNC, but have worked in engineering for 22 years. The idea of controlling a precision drive system without any feedback seems to go against basic engineering principles as you never know the exact state or position of the machine. I guess that's the trade off from doing it "on the cheap"?

15-09-2013, 03:09 PM
One thing that stands out about those encoders, is the +/- 0.5deg accuracy. On a stepper system, that is less than a full step, and provided you're not expecting huge accuracy then they may be OK. One thing I do wonder is just how uniform the output would be. You may find that if you turn the motor at a constant slow speed, the output pulses may not be uniform due to the inaccuracy.
And having just checked the datasheet for the RMB28, they only go upto 64ppr/256cpr in 5V incremental version, which is only good to 1.4deg.

That's why most accurate positioning uses optical sensing like those encoders from Zapp. With 1024ppr/4096cpr, they're guaranteed to give you an accurate step every 0.09deg.

One thing to be wary of, is you don't exceed the sampling rate of whatever you're connecting the encoders to, however that's more a servo issue when spinning at higher speeds. Using a 1024cpr you hit 25khz input at just above 1400rpm, which you really don't want to be spinning steppers at, however if you were to do something daft like put 4096cpr encoders on, then you're looking at hitting the limit around 350rpm.

I did look at moving to linuxcnc last year, however the lack of information on running closed loop (I found a few people who'd done it, but very little instructions on how to acheive it), and the need to buy additional input cards to gain high enough sampling rates, made me opt for a KFlop instead.