603,326 active members*
3,194 visitors online*
Register for free
Login
Results 1 to 13 of 13
  1. #1
    Join Date
    Mar 2004
    Posts
    185

    Accuracy Question

    Those of you out in the know, what kind of accuracy
    would you expect from the following,

    P4 2.5 GHz desktop
    Mach 3
    DB1 Breakout board.
    Amteck DC servos 60v
    gecko 320`s
    us digital 500cpr mounted on ballscrews
    25mm dia,10mm lead precision ground ballsrews
    with zero backlash nuts
    on the x,y and z axis of a Chinese Mill drill.

    I have 2/1 timing pulleys on the X and Y
    and 3/1 timing pulleys on the Z axis setup with a gas strut.

    What I would like to know is what accuracy would you expect
    with a dial gauge.
    My guess is around 0.005mm (0.0001")
    am I dreaming.

    I don't know whether am loosing steps or with a coarse ballscrew
    thread (10mm) and higher encoder count its the best I can do
    which is any where from 0.04mm (0.0015") to 0.15mm (0.0059").

    I have tried 250 cpr encoders on the motors but accuracy is worst.
    I can also guarantee, by dial gauge that there is no backlash.

    Could I try linear encoders,if so do they work with mach 3.

    Any help/thoughts would be great.

  2. #2
    Join Date
    Jan 2005
    Posts
    15362
    Hi jubee

    You will need better encoders than the 500cpr something more in the
    2048x4cpr would be close to what you want the higher count the better
    but your control & software will also have to be able to handle the larger
    count your computer ( control ) that you have can handle it no problem
    Mactec54

  3. #3
    Join Date
    Apr 2006
    Posts
    225
    I'm not 100% sure but im pretty confident that your guess was wrong... first what acurracy class is you ballscrew? C5, C3, C1.... ? There are many things to consider on that case, theorical acurracy is different of real prescision, how did you test your actual acurracy?

  4. #4
    Join Date
    Jan 2005
    Posts
    15362
    Hi Brenck

    Jubee had all ready said that he has zero backlash in his machine
    and that his ballscrews are precision ground did not say what grade
    but they are 10mm pitch which is 2.54 turns per 1" or 25.4mm

    The motors on the X & Y are 2/1 ratio so the encoder count at the
    screw will be half of what is on the motor

    Jubee is trying to achieve a Machine resolution of .0001 /.005mm at the screw to do this he will need a 2048 encoder on the motor

    a 1024x4 encoder will give his machine in the X & Y a resolution of
    .00124"/ . 031496mm this is not what he wanted to achieve

    So a 2048x4 encoder is the next best thing and will give his machine a resolution of .000620"/.015748mm

    The machine resolution of .0001"/.005mm you need first then you can tune the rest of the machine for acurracy

    The machine will also run a lot smoother with higher count encoders

    Benck
    To gain the acurracy with in the ballscrews a C5 is more than enough
    for normal mill with a lead acurracy of around .0005" per 12"or better in most
    cases of travel it can easly be taken care of in the screw maping in your control software

    I use C3 my self but is not worth the extra money they cost, most CNC mills
    use C5 Grade ball screws
    Mactec54

  5. #5
    Join Date
    Mar 2004
    Posts
    185
    Thanks guys for your feedback.

    The ballscrews I have are c5 class accuracy.

    I was thinking of changing the pulley ration from 2/1
    to 4/1 would this help to achieve better accuracy ,or am I
    better off going with the higher count encoders(1024 cpr)

    I thought using higher count encoders on course pitch
    ballscrew you ended up with more errors?

    Thanks again.

  6. #6
    Join Date
    Jan 2005
    Posts
    15362
    Hi Jubee

    Say with the 2/1 and go with the 1024 and that will bring it close to
    what you want

    Don't go 4/1 that will put you back to where you were with the 500cpr
    encoders
    Mactec54

  7. #7
    Join Date
    Mar 2004
    Posts
    185
    Thanks Mactec54
    On your first reply, you mentioned 2048 cpr encoders,was that
    if I enstalled them on the motors and the 1024 cpr encoders if positioned on the ballscrews.

    I think Iam confusing myself and making it more difficult then what it is.

    When you talk encoder counts i.e., say 500cpr.
    Is this the figure you divide into your screw pitch to obtain your predicted movement
    of the axis.
    i.e. 10 mm ball screw (10 / 500 = 0.02 mm resolution)
    or
    Having 500 cpr equates to 2000 counts (being quadrature )
    so (10 /2000 = 0.005mm)

    and on configuring the motors you divide 1 unit ( i.e. 1mm) by encoder counts
    to obtain the steps assuming the encoders are mounted on the ends of the ballscrews.

    I`ll get this eventually.

  8. #8
    Join Date
    Jan 2005
    Posts
    15362
    Hi jubee
    Its getting late here almost 12.00 midnight your late morning I gess
    Yes 2048 was if the encoders were on the motor
    if its on the ballscrew you could use the 1024 encoder
    your 10mm pitch ballscrews will turn 2.54 times to 1"or 25.4mm
    1024x4=4096/2.54=.000620" if the encoder is on the screw
    if your encoder is on the motor which is 2/1 you will need to X2 the
    encoder to 2048 to get the same resolution
    Good luck I'm a KIWI here to help if I can
    Mactec54

  9. #9
    Join Date
    Jan 2007
    Posts
    210
    I don't mean to be a smart a** but this certainly has me confused,

    The first place I'm messed up at is " My guess is around 0.005mm (0.0001")" ( I get 0.0002").

    The second place is "a 1024x4 encoder will give his machine in the X & Y a resolution of .00124"/ . 031496mm" ( I get 10mm = .3937" per rev/4096 counts = .000096" (.002mm).

    The third spot is "Don't go 4/1 that will put you back to where you were with the 500cpr encoders". Isn't the smaller pulley on the motor? If so doubling the ratio would double the resolution (if the encoders are on the motors).

    Have I got something backwards here? Or maybe its just a late night math mistake.

    Servo motors always prefer to have their encoders mounted directly to the motor shaft. Higher count encoders are easier to tune and run smoother (faster feedback to the servo loop). You get very little gain above 2000 lines (8000 counts) as the motor has a hard time responding to increments this small. 500 lines (2000 counts/rev) at the motor is as about as low as you would normally want to go to get a stable servo loop.

    System resolution and accuracy are two totally different things. Servos are always in error when running at any kind of speed. I design for +/- 10 counts to my desired accuracy.
    Bob
    Bob
    You can always spot the pioneers -- They're the ones with the arrows in their backs.

  10. #10
    Join Date
    Jan 2005
    Posts
    15362
    Hi carbidebob
    The 2/1 drive is the motor has the small gear/pulley the motor will turm
    twice the number of turns to one turn of the screw that is the reason
    for the larger encoder

    No you are not messed up .005mm is ( .0002 ) I did not check Jubees
    numbers and just put what he had in his post as he wanted to acheive
    a .0001 machine resolution so I was working with .0001

    Also 1024x4= 4096/2=2048/.3937=.0001922 you forgot the motor is 2/1
    so you have to divide the encoder count by 2 This is not the number
    Jubee is trying to acheive so the next best thing is a 2048x4 encoder
    Mactec54

  11. #11
    Join Date
    Jan 2007
    Posts
    210
    jubee,
    With those nice ballscrews you should be able to achieve a .0001 inch repeatability but it will take some work. (and probably some different encoders and a lot of testing)
    Please explain how you are checking the accuracy. What do you have as far as electrical test equipment? (for checking the servo loop)
    I'm surprised that the accuracy was worse with the 250 line encoders on the motor. (I'm assuming you meant 250 line which = 1000 count per rev after quadrature decode)
    Did you retune the servos after changing encoders? I've downloaded the info on the Gecko 320 drives and it seems there is no way to control the integrator on the PID loop.This will make tuning interesting as changing the encoder count will change the integrators response.
    High encoder counts may be a problem if we run into a pulse speed limit from Mach 3.
    Have you ever done a servo size/inertia analysis on this machine?
    How deep do you want to get into this? The math behind servo control can get pretty confusing but I think I can lead you through it if you want to take the time.
    On the idea of using linear encoders, I'd just forget about it for now. The hardware you have won't handle it and even with big buck hardware it's a real pain.
    I'll be glad to help you out but I'm afraid I can't give you a "just bolt this on" answer.
    Maybe someone here has built the exact same combination of parts and can come up with a simple fix.
    BTW, congrats on getting as far as you have.
    Bob :cheers:
    You can always spot the pioneers -- They're the ones with the arrows in their backs.

  12. #12
    Join Date
    Mar 2004
    Posts
    185
    Thanks for all your input guys,
    Sorry about the calculations as Iam a metric man
    and seem to think anything after the forth decimal place doesn't matter
    which it dose in inch calc`s ie 0.0001968498=0.002 I rounded down instead
    of up.

    carbidebob,all very interesting ,things are starting to make sense but I don't think Iam ready to travel down
    the electronic path just yet "control the integrator on the PID loop Etc"but I might have too soon.

    Answer to your some of your questions,
    "Please explain how you are checking the accuracy"The only way so far that I have been checking the accuracy is purely mechanical ,through
    the use of a dial indicator and jogging the axis ,short steps and long steps eg .02mm (0.00078`) to 150mm(5.90549`) .G0 x0.002 etc
    And the best I could do in a single jog would be .05mm (0.002`) ,the axis wouldn't move for anything less.
    Then when repeating a longer move eg 150mm (5.905`) it would be out by 0.04mm (0.00156`) to 0.15mm (0.00590`).on returning to 0

    I have since pulled the machine apart as I think there might be a binding issue going on,and so in the coming weeks
    will knock up a basic oiling system. Can only help and should of been done to start with.
    However
    Pulled the z axis apart and couldn't even move the section that holds the motor/gearbox ,I think I did the gibs up
    to tight? whoops.
    The x and y axis I cant explain.
    Did you retune the servos after changing encoders?
    I didn't retune the servos after changing encoders as I thought by halving the encoder count (500 to 250 )and then putting them
    on the motors was the same thing ,since I have 2 to 1 pulley ratio,maybe I should have,retune that is.

    Have you ever done a servo size/inertia analysis on this machine ?
    No, all with trial and error(with lots of error).


    High encoder counts may be a problem if we run into a pulse speed limit from Mach 3
    Iam thinking of going with the g100 grex from gecko drives ,it seems it will provide the pulses I require.
    With a maximum of 45Khz from Mach 3 at the moment and 2048 cpr encoders on the motors ,by calculation the best I WILL get is
    about 60 or so inches per minute,any thoughts.

    With those nice ballscrews you should be able to achieve a .0001 inch repeatability but it will take some work. (and probably some different encoders and a lot of testing)
    Are there any encoders that you recommend.
    From what I have read I think 2048 cpr ,mounted on the motors should get the required accuracy. Testing I can handle pulling the machine down
    again ,I cant.

    Thanks again for your info.

  13. #13
    Join Date
    Jan 2007
    Posts
    210
    jubee
    Quote: "From what I have read I think 2048 cpr ,mounted on the motors should get the required accuracy. "
    Normally I'd jump up and down with agreement on this one. However there have been some posts that imply that the 320 drives don't like too high of an encoder count.
    This may be due to the fact that the "I" term in the PID loop is not adjustable or it may just be servo mismatch/tuning errors.
    By changing the encoder resolution you change the amount of correction from the integrator.

    BTW , I never use encoder counts like 1024, 2048, etc. I almost always use 1000 or 2000 line encoders as this works out to an even number of counts for the system resolution.
    an example:
    1000 line x 4 = 4000 counts per motor rev.
    10mm lead with 2:1 pulley = 5mm motion per motor revolution.
    5mm/4000 counts = .00125 mm per count or 800 counts per mm.

    A 1024 line encoder gives you 0.0012220703 mm per count or 819.2 counts per mm. I also rarely use 3:1 belt ratios for the same reasons.
    Of course sometimes you'll want to use whatever you can get for the lowest price. You just have to be sure that the software handles the rounding errors correctly. Many high end systems use different screw/pulley/encoder combinations for metric and english models so that the counts per distance comes out to an even number.

    I'm thinking a 1000 line encoder on the motor with a 2:1 reduction would be a good starting point for testing. I would never attach the encoder to the ballscrew as this raises stability problems in the servo loop forcing you to use "softer" tuning values.

    Quote: "And the best I could do in a single jog would be .05mm (0.002`) ,the axis wouldn't move for anything less."
    This is very interesting. The real question is does the servo amp know that this error exists? By checking the voltage at the "Position Error" test point you should be able to tell if the amp has been able to close up the error.
    I would run your test while monitoring this signal. I suspect that you will see a corresponding error between this test point and what you indicator says. ( 5 volts = zero error, 5.04 volts = 1 count error, 5.08 volts = 2 counts error, .. etc). This would tell us that the integrator isn't putting out enough power to overcome the friction or drag torque of the system.
    The integrator is responsible for closing up or zeroing the following error of the servo. The way it works is basically as follows:
    Say you command a move of .005 mm. The integrator circuit sees an error of 4 counts (using the above encoder and pulley). This 4 counts is converted to a small output current which is supposed to move the motor. Now since there is some fixed friction that we have to overcome this is probably not enough power to get things moving.
    After some fixed amount of time the integrator looks at this error and sees that it has not changed. So the circuit then applies more power to the motor. This loop continues until the motor finally gets enough power to move.
    Most integrators will have some fixed or adjustable limit on the amount of power that will be fed to the motor.
    It's looking like you're not getting enough output from this part of the circuit to get the motor to move. Overly tight gibs or high friction loads will cause this problem. It's important that the servo be able to start the motion with very little effort. You should be able to move the table at low speed by rotating the pulleys by hand with very little force. Even overly tight belts can contribute to these errors.

    Quote:"Pulled the z axis apart and couldn't even move the section that holds the motor/gearbox "
    Woops, did I miss something? This is the first mention I've seen of a gearbox involved in this system.

    Quote:"Iam thinking of going with the g100 grex from gecko drives"
    I sure do like this idea. There is a definite limit to what you can pump through a printer port even if you get underneath the operating system by using real time extensions. This circuitry was never designed for high speed pulse use. However at this point we aren't worried about top speed yet so anything that will output pulses to the drive will work.

    You're really not testing accuracy. What you're testing is positional repeatability. But you've got to get this repeatability working first before you worry about accuracy.

    In summary I'd try a higher count encoder mounted on the motor, retune the drive, and then repeat your test while monitoring the error output voltage. Try to eliminate as much drag as possible so the motors can move the axis with a very small amount of force. The P, I, and D factors interact with each other to form a stable servo loop. Higher P (gain) adjustments on the amp will also help reduce this error but will cause oscillation if it gets too high. Higher D "damping" helps control this oscillation but too high of damping values causes rough running at high speeds and high freq oscillations (buzzing motors).
    Bob :wave:
    You can always spot the pioneers -- They're the ones with the arrows in their backs.

Similar Threads

  1. Ballscrew pitch accuracy question
    By pstockley in forum Linear and Rotary Motion
    Replies: 1
    Last Post: 04-23-2006, 11:32 AM
  2. Linear rail accuracy question
    By pstockley in forum Linear and Rotary Motion
    Replies: 3
    Last Post: 02-20-2006, 02:37 PM
  3. Accuracy
    By zoltan in forum SheetCam
    Replies: 5
    Last Post: 12-14-2005, 04:14 PM
  4. Accuracy determination & accuracy improvement
    By rweatherly in forum DIY CNC Router Table Machines
    Replies: 5
    Last Post: 08-11-2005, 02:37 PM
  5. Stepper RPM and Accuracy Question. Please Help!
    By David Bord in forum Stepper Motors / Drives
    Replies: 3
    Last Post: 05-25-2005, 08:27 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •