Closed loop with linear scale
-
Can Duet 3 6HC do closed loop stepper control using a liner scale?
I would like to make a desktop CNC machining centre with steel frame & epoxy granite. It would be a rising gantry machine with 2 Y axis & 2 Z axis steppers.
Ball screws come in accuracy grades of C0 to C5 as precision ground ball screws and C7 to C10 rolled ball screws.
Commercial CNC machining centres have a accuracy/repeatability of 0.005 mm. The precision of a C7 rolled ball screw is 0.050mm per 300mm but 0.025 within one revolution. A C5 ground ball screw is 0.018 mm per 300mm but only 0.007-0.008 per revolution. (Link had to be removed)
Typical price for a 1000 long ball screw with support bearings is $200 for rolled C7 and $1 500 for ground C5.
Using a motor with a rotary encoder will not improve the precision above what the screw provides.
A linear scale from China is $200 and it resolves to 0.005 mm (Link had to be removed)So if a Duet board can be configured to drive a stepper using the linear scale for closed loop feedback then a C7 rolled ball screw + linear scale would be $400 and have precision better than C5 ground at $1 500.
Is this possible with a Duet board & accessories? I would be very interested if this could be discussed. Basically calculate the pulse rate to send to the stepper to achieve the desired speed, monitor the speed the linear scale is reading & adjust pulse rate accordingly. When close to the end point slow the pulse rate and continue till exactly at the end point.
I will be extremely happy if that is possible. I know it can be done with a Galil 4080 at vast expense.
-
@ralph-malan AFAIK you can use a linear scale as secondary device, but the closed loop sensor has to fixed to the motor shaft.
There is also a static definition for backlash compensation, but IDK if it works for closed loop or just adds some extra steps everytime the motor direction changes... -
@ralph-malan you would need to use a 1HCL on each axis: https://docs.duet3d.com/en/Duet3D_hardware/Duet_3_family/Duet_3_Expansion_1HCL
You would use a magnetic encoder board on the back of each stepper and then a linear encoder can be used on each axis.
-
@T3P3Tony . Many thanks for that. Is it not commonly done?
-
@T3P3Tony My machining centre would have 2 Y axis & 2 Z axis ball screws. Can I run each as a separate unit & they each do their own thing?
-
@ralph-malan Are your 2x Y axis & 2x Z axis ball screws driven by one motor each, ie 4 motors? You need a 1HCL for each motor, so you would need 4x 1HCL if each ball screw was driven by its own motor. Unfortunately you can't just put a linear scale on the axis and read the position; for full closed loop control you need an encoder on the motor shaft as well. The 1HCL supports this, using a magnetic encoder for the motor shaft, and a linear quadrature encoder for the carriage position. See https://docs.duet3d.com/en/Duet3D_hardware/Duet_3_family/Duet_3_Expansion_1HCL#compatible-encoders
Ian
-
@ralph-malan said in Closed loop with linear scale:
Is it not commonly done?
IMHO, if a system needs closed loop control it isn't engineered well. Steppers shouldn't lose steps under normal conditions.
But in your case it's about saving money, but still get good results. I hope it pays out.