1HCL Issues
-
Hey Everyone,
After reading about not using 0.9 degree steppers, I have got myself some 1.8 degree stepper with extended shafts for the original encoders. They are HS28A based encoders with a CPR of 2500. I have them all running and configured, however I can not calibrate them. I am getting the following fault:
M98 P"0:/macros/Positioning" Warning: Driver 10.0 warning: tuning failed Warning: Driver 10.0 new tuning error(s): The measured motion was inconsistent.
When I run a
M569.3 P10
I get this
M569.3 P10 Error: M569.3: Driver number 10 out of range
Can anyone shed any light on what might be happening. I made sure that the encoder height on the shaft was the same between the two steppers and the back plates we drilled by LDO for them. The shafts seemed to protrude the same distance.
Here is my config
; Drives M569 P10.0 D4 S0 F8 ; Configure the motor on the 1HCL at can address 50 as being in closed-loop drive mode (D4) and not reversed (S0) M569 P11.0 D4 S0 F8 ; Configure the motor on the 1HCL at can address 51 as being in closed-loop drive mode (D4) and not reversed (S0) M569.1 P10.0 T2 C12.5 R110 I5000 D0.15 ; Configure the 1HCL board at CAN address 10 with a quadrature encoder on the motor shaft that has 20 steps per motor full step M569.1 P11.0 T2 C12.5 R110 I5000 D0.15 ; Configure the 1HCL board at CAN address 11 with a quadrature encoder on the motor shaft that has 20 steps per motor full step M569 P0.2 S0 F10 ; physical drive 0.2 goes forwards M569 P0.3 S0 F10 ; physical drive 0.3 goes forwards M569 P0.4 S1 F10 ; physical drive 0.4 goes forwards M569 P0.5 S1 F10 ; physical drive 0.5 goes forwards M569 P20.0 S1 ; physical drive 20.0 goes forwards M584 X10.0 Y11.0 Z0.2:0.3:0.4:0.5 E20.0 P6 ; set drive mapping M350 X32 Y32 ; configure microstepping M350 Z16:16:16:16 U16 V16 W16 E16 I1 ; configure microstepping with interpolation M92 X160 Y160 Z400:400:400:400 U400 V400 W400 E690 ; set steps per mm M566 X800 Y800 Z120:120:120:120 U120 V120 W120 E300 ; set maximum instantaneous speed changes (mm/min) M203 X60000 Y60000 Z400:400:400:400 U400 V400 W400 E7200 ; set maximum speeds (mm/min) M201 X30000 Y30000 Z250:250:250:250 U250 V250 W250 E10000 ; set accelerations (mm/s^2) M906 X1550 Y1550 Z1800:1800:1800:1800 U1800 V1800 W1800 E1200 I60 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M917 X75 Y75 ; Set the closed loop axes to have a holding current of zero
and the positioning Macro
G90 ; absolute positioning G1 X50 Y50 F3000 ; Move to a known-safe position M400 ; Wait for the move to complete G4 P500 ; Wait for the motor to settle M569 P10.0 D4 ; Turn closed loop back on M569.6 P10.0 V1 ; Perform the tuning manoeuvres for a quadrature encoder X M400 ; Wait for the move to complete G4 P500 ; Wait for the motor to settle M569 P11.0 D4 ; Put Driver back into Closed Loop Mode M569.6 P11.0 V1 ; Perform the tuning manoeuvres for a quadrature encoder Y
Cheers,
Sam -
@samlogan87 said in 1HCL Issues:
When I run a
M569.3 P10I get this
M569.3 P10
Error: M569.3: Driver number 10 out of rangeShould be: M569.3 P10.0
However, that command is only supported on Hangprinter with ODrives connected.
Which firmware versions are you using on the main board and on the EXP1HCL boards?
-
@dc42 Yeah I corrected that issue after I posted
I was running 2.4.3 but have now upgraded as I wanted to use the auto tune function for the closed loop. I have managed to sort the issue. It seemed when I disconnect the motors to swap them over, I must of got the encoder cables crossed. It it working now.
On a side note, what is the backlash readings? I haven't seen any documentation on it yet?
Cheers
Sam -
@samlogan87 the backlash reading is a measure of how much stiction you have in your motor and the mechanics that constrain the rotation of the motor. The maximum allowed by the firmware is currently 0.22 full steps. The measured value typically reduces if motor current is increased.
-
-
-
@dc42 Hi David,
I am finally getting back to my printer. Is backlash compensation able to fix this as it seems to not. I still have not been able to actually print anything with the encoders as I seem to keep having issues. Is there anything I can do to fix it?
Cheers
Sam -
@dc42
Hi David,I have managed to finally get it to print by running the positioning multiple times over. Now it is printing I am running a calibration cube for some new filament and the noise is almost unbearable. What would be causing it. It is coming from the motors, as it is much much quieter when I revert back to not using the closed loop
Sam
-
@samlogan87 the noise is caused by a combination of excessive P value (which the current closed loop tuning plugin encourages), limited encoder resolution, and backlash. You can reduce it by choosing a lower P value (e.g. 40), then use the closed loop tuning plugin to find appropriate D and I values.
We have further work planned to reduce closed loop noise before we release RRF 3.5.
-
@dc42 I used the auto tuning function and it gave me quite low values however there was no D value given
; Drives M569.1 P10.0 T2 C2500 R30 I9000 D0 ;1HCL board at CAN addr 10 with a quad encoder with 12.5 steps per motor full step M569.1 P11.0 T2 C2500 R60 I4000 D0 ; 1HCL board at CAN addr 11 with a quad encoder with 12.5 steps per motor full step M569 P10.0 D4 S0 F8 ; Configure the motor on the 1HCL at can address 50 as being in closed-loop drive mode (D4) and not reversed (S0) M569 P11.0 D4 S0 F8 ; Configure the motor on the 1HCL at can address 51 as being in closed-loop drive mode (D4) and not reversed (S0) M569 P0.2 S0 F10 ; physical drive 0.2 goes forwards M569 P0.3 S0 F10 ; physical drive 0.3 goes forwards M569 P0.4 S1 F10 ; physical drive 0.4 goes forwards M569 P0.5 S1 F10 ; physical drive 0.5 goes forwards M569 P20.0 S1 ; physical drive 20.0 goes forwards M584 X10.0 Y11.0 Z0.2:0.3:0.4:0.5 E20.0 ; set drive mapping M350 X32 Y32 ; configure microstepping M350 Z16:16:16:16 U16 V16 W16 E16 I1 ; configure microstepping with interpolation M92 X160 Y160 Z400:400:400:400 U400 V400 W400 E690 ; set steps per mm M566 X800 Y800 Z120:120:120:120 U120 V120 W120 E300 ; set maximum instantaneous speed changes (mm/min) M203 X60000 Y60000 Z400:400:400:400 U400 V400 W400 E7200 ; set maximum speeds (mm/min) M201 X30000 Y30000 Z250:250:250:250 U250 V250 W250 E10000 ; set accelerations (mm/s^2) M906 X1550 Y1550 Z1800:1800:1800:1800 U1800 V1800 W1800 E1200 I60 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M917 X80 Y80 ; Set the closed loop axes to have a holding current of zero
The encoders I am using are 2500 CPR encoders so I do not know if this is not enough. They came off motors you were working with LDO on.
In terms of backlash, I am guessing you mean mechanical? If anything I think the belts might be too tight as I certainly can not get them much tighter.Is there anything that sticks out to you in my config?
Sam
-
@dc42 hey David,
Is there anything you can see or should I manually tune the PID until the autotune is sorted? I did read somewhere that changing D can reduce noise? Also just wanting to know what you meant by backlash?
Regards
Sam -
-
Hi David,
Sorry to keep hounding but are you able to give me anymore insight into what could be wrong. I have had to go back to non closed loop as it was too noisy it was annoying the wife who was watching tv 2 rooms awayKind regards,
Sam -
@samlogan87 the auto tune function attempts to tune for fastest response. To achieve lower noise, you probably need to use lower R values than the auto tune function suggests. As you are now using 30 and 40, try 15 or 10.
The forthcoming 3.5.0-beta.3 release allows you to specify a velocity feedforward term in the M569.1 command. That may also hep to reduce noise.
I will revisit the noise level of closed loop motors later this month/early next month.