closed loop using linear scales vs rotary encoders

More
10 years 11 months ago #65061 by axk
Hi, Ive searched and couldn't find a similar situation so please pardon me if this is a redundant question.

I've got a smooth-stepper based milling machine with Teco servos and Teco drives. It is being run by Mach3 as a step-direction setup.
I need a bit more accuracy out of the machine than I am getting.

I'd love to have absolute table position fed back to linux cnc so I can be rid of backlash issues (I've got around .001" or .002" on x,y,z), but over the course of a three hour job the Y-zero will drift a tiny bit. Maybe I've got the backlash wrong? Anyhow, I wanted to close the loop and feed positional data back to the PC.

Can LinuxCNC use the current setup run in step-dir mode with the teco drive closing the loop to the servo AND take into account data from a linear scale for absolute positioning?
OR must linuxcnc also have servo encoder data in addition to the linear scales?

The reason I'd go with closed loop to the servo drive is for simplicity sake, and utilize the linear scale data for positioning. I was wondering if lacking the servo encoder input will make the system oscillate or never reach a steady position due to backlash, or am I over thinking it?

thanks in advance

Please Log in or Create an account to join the conversation.

More
10 years 11 months ago #65072 by andypugh
Yes, this can be done. There are a number of ways, but a fairly simple one would be to have a PID with limited authority tweaking the value of an "offset" HAL component.

The usual way, though, would be to have two pid loops in parallel, but that means converting your current step/dir position control to velocity mode with a position PID. wiki.linuxcnc.org/cgi-bin/wiki.pl?Combin..._Devices_On_One_Axis

I think that the "offset" idea might work better in your case. linuxcnc.org/docs/2.7/html/man/man9/offset.9.html

Depending on the scale resolution, you might be able to do it with a single layer of PID.
The following user(s) said Thank You: axk

Please Log in or Create an account to join the conversation.

More
10 years 11 months ago #65080 by Todd Zuercher
I have a machine set up using step/dir controlled servos with position feedback to Linuxcnc. While this machine is only using the encoder feedback from the servo motors. I see no reason why the feed back could not be from another source (such as linear scales), as long as that feed back is high enough resolution.

I am using a Mesa 5i25/7i85S combination for the hardware step generation and encoder reading, and the stepgen is controled in velocity mode by a single PID loop in Linuxcnc.

While this works fine, I am not sure there was any real advantage to it compared to the more traditional open loop hardware stepgen. The main advantage i saw was simplified tuning from having the encoder feed back available in Linuxcnc, and not having to hook a scope up to the drives to tune them. That and not having to home the axis all the time to find out where the axis was, just once at power up. Before I had the encoder feed back, the machine had to be re-homed any time a drive was disabled.

I think absolute encoders are a little trickier to configure. (Never tried to use one with Linuxcnc myself.)
The following user(s) said Thank You: axk

Please Log in or Create an account to join the conversation.

More
10 years 11 months ago #65083 by axk
Gentlemen, thanks for the replies.

You've both mentioned the resolution of the linear scale. How fine a scale should I need?
If the scale is graduated to .0001" is that sufficient? I'd like to keep accuracy of the table's position to .0005" or even within .001" of what the glass scale reads, assuming I can get good repeatability.

As it stands I'm +/- .001" for repeatability on a return-to-zero after homing/zeroing, but over a long job the zero will drift from cumulative back and forth error. If I didn't have that drifting zero I'd probably be OK with the whole system as is. I suppose if there was a way to home it a few times during the job, I'd be OK too.

Todd, just curious if you have you measured the accuracy improvement to your system by using feedback from servo encoder feedback? If you disabled it and measured absolute movement with an indicator would it be less accurate than a measurement taken with the encoder feedback enabled?

Andy, thanks for the pointers to the wiki. Are there any example ini files available that would show what an actual configuration would look like? I'm still very new to this and hope to get better acquainted with linuxcnc when I order my 7i80 and try to get it communicating to my spare box.

Please Log in or Create an account to join the conversation.

More
10 years 11 months ago #65086 by LearningLinuxCNC
Just one note that if you have mechanical backlash in the system of 0.002" you still may not get the results you are looking for. As the cutting forces may move the mechanics when the direction of the cutting forces change. This will happen before the PID loop can correct for it possibly giving you less than desirable results.

Make sure the linear scales are attached to the mechanics after the source of backlash. This will minimize the error but it will still be susceptible to the above problem.

Please Log in or Create an account to join the conversation.

More
10 years 11 months ago #65088 by axk
If I go that route, the plan was to install linear scales (likely glass scales) in the same locations as a typical DRO would go. I'd be installing the X-axis scale straight to the table, the Y-axis scale to the saddle, and the Z-axis scale on the column and head.

Thanks for the feedback. That was the type of oscillation I was a little concerned about using just linear scales as input.

Please Log in or Create an account to join the conversation.

Time to create page: 0.177 seconds
Powered by Kunena Forum