1HCL closed loop steppers on CoreXY
-
Hey All,
I have just implemented a set of 1HCL boards and a set of 17HS19-2004D-E1000 (link). They are installed on the XY(AB) on my Voron 2.4.
Overall its pretty slick system. I only have 2 small prints completed but I am impressed with the completeness given the short development cycle. The closed loop system seems to cut back on ringing by a good margin as well.
I was reading in the main Closed-Loop thread about issues with CoreXY. Things seem to be ok functionality wise, but the system is LOUD. I am assuming because the steppers are coupled they are constantly fighting each other. I followed the tuning guide and it caused the printer to sound like it was running on old Pololu stepper drivers on an 8 bit system.
I was able to cut the noise back by dropping the D parameter back significantly. I am going to try increasing the holding current from 10% to 75% and see if that helps.
Any other ideas? I am also more than willing to help out on the testing side.
-
@alex-cr I am aware that the motors connected to the EXP1HCL are often noisy when moving. We have plans to further develop the EXP1HCL firmware and reducing noise will be one of our aims.
-
That’s good news. Regardless, I am super impressed. Thanks for putting out a great product.
-
@alex-cr one of the issues is that with an encoder resolution of 1000 cpr the best resolution we can possibly get is 4000 transitions per revolution, which for a 1.8deg motor is equivalent to x20 microstepping. Whereas in open loop mode the driver can do interpolation up to x256 microstepping.
It may be that we could implement a hybrid mode, basically open loop most of the time with the firmware switching to closed loop when the encoder indicates an unacceptable deviation from target.
-
@dc42
That would also act as audible-alarm, so the user knows something is wrong when the motors start to get noisy -
@dc42 I saw you posted about the noise using the HCL boards. Is that in both open and closed loop modes that you will try and reduce noise as man it’s loud. I thought it was because I put sides on it that’s making it noisey but I took them off and it’s still noisey.
-
@samlogan87 in open loop mode the motor should be quiet, assuming you have microstep interpolation enabled as usual, because then the stepper driver chip operates just as on the MB6HC. How quiet depends on the motor. In my tests with a large Nema 34 motor, it is quiet in open loop mode but somewhat noisy in closed loop mode.
-
@dc42 hmm, I may need to play around with it then. I have done a major upgrade to the printer with new mounts made of aluminium and changing belts from 6mm to 9mm and then the new boards and it is substantially louder. Here is a video of it now. I will find one previously
-
@samlogan87 were you running on open or closed loop mode when you made that video?
-
@dc42 that was open loop. I am waiting until LDO have their “fast” steppers sorted with encoders before I use the board to its full potential. I am running the boards at 48v’s if that means anything/ helps
-
@samlogan87 please post your config.g file.
-
@dc42 Hi David, Sorry was away on holiday. Please see my config file
; Configuration file for Duet 3 (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.10 on Wed Dec 08 2021 21:12:19 GMT+1300 (New Zealand Daylight Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Sam's Printer" ; set printer name M669 K1 ; select CoreXY mode ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P10.0 S1 F8 ; physical drive 10.0 goes forwards M569 P11.0 S1 F8 ; physical drive 11.0 goes forwards 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 X16 Y16 Z16:16:16:16 U16 V16 W16 E16 I1 ; configure microstepping with interpolation M92 X80 Y80 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 ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X363.5 Y352 Z412:412:412:412 U412 V412 W412 S0 ; set axis maxima M671 X-45:-46:408:405 Y92:296:300:92 S3.0 ; Define the X and Y coordinates of the lead screw. Motor order: FL (1), RL (2), RR (3), FR (4).Snn Maximum correction in mm to apply to each leadscrew ; Endstops M574 X1 S1 P"10.io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin 11.io0.in M574 Y1 S1 P"10.io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin 11.io2.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P8 R1.0 C"!^20.io2.in" H5 F250 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X0 Y0 Z-0.20 ; set Z probe trigger value, offset and trigger height M557 X0:363.5 Y0:352 S20 ; define mesh grid ; Heaters M308 S0 P"spi.cs0" Y"rtd-max31865" ; configure sensor 0 as PT100 on pin spi.cs1 M950 H0 C"out1" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 R0.200 K0.148:0.000 D38.10 E1.35 S1.00 B0 ; disable bang-bang mode for the nozzle heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S150 ; set temperature limit for heater 0 to 150C M308 S1 P"20.temp0" Y"pt1000" ; configure sensor 1 as PT1000 on pin 123.temp0 M950 H1 C"20.out0" T1 ; create nozzle heater output on 123.out0 and map it to sensor 1 M307 H1 R2.366 K0.162:0.000 D9.88 E1.35 S1.00 B0 V24.0 ; PID control Magnum Plus PT1000 ;M307 H1 R2.104 C430.2 D9.13 S1.00 V24.2 ; PID control Magnum Plus PT1000 M143 H1 S400 ; set temperature limit for heater 1 to 400C ; Fans ; Part Cooling Pump M950 F3 c"out2" Q25000 ; Assign Part Cooling Fan to Heater Port 2 M106 P3 X0.5 B0 H-1 C"Part Cooling" ; Part Cooling Fan Remap to Heater 2 ; Water Cooling M950 F4 c"!out6+out6.tach" ; Water Cooling Pump Output M106 P4 H1 B15 L0.2 X.75 T50 C"Extruder" ; Water Cooling Pump Start M308 S10 P"temp0" Y"thermistor" A"Water Temp" T10000 B3950 ; Create Heater for Cooling Water M950 F0 c"!out9" Q25000 ; Assign Fan 0 to Fan 0 Port and Inverse M106 P0 H10 L.3 B.5 T60:80 C"Radiator" ; Set fan 4 PWR fan. Turns on when Radiator temperature (heater 103), hits 30C and full speed when the temperature reaches 60C ;Board Cooling Fan M308 S20 P"mcutemp" Y"mcutemp" A"Duet Board" ; Map Duet MCU to the Extra Table M308 S21 P"10.mcutemp" Y"10.mcutemp" A"Board 10 MCU" ; Map Duet Drivers to the Extra Table M308 S22 P"11.mcutemp" Y"11.mcutemp" A"Board 20 MCU" ; Map Duex2 Driver to the Extra Tabl M308 S23 P"20.mcutemp" Y"20.mcutemp" A"Tool Board MCU" ; Map Duex2 Driver to the Extra Tabl M308 S24 P"temp1" Y"thermistor" A"Control Area" T100000 B3950 ; Create Virtual Heater for Control Area M950 F1 c"!out4+out4.tach" Q25000 ; Assign Fan 1 to Fan 1 Port and Inverse M106 P1 L.3 B.5 T40:65 H20 C"Duet Fan" ; Set fan 1 PWR fan. Turns on when MCU temperature, hits 45C and full when the MCU temperature reaches 65C or if any TMC2660 drivers (virtual M950 F2 c"!out5+out5.tach" Q25000 ; Assign Fan 2 to Fan 2 Port and Inverse M106 P2 L.3 B.5 T40:65 H22 C"Control Area" ; Set fan 2 PWR fan. Turns on when MCU temperature, hits 45C and full when the MCU temperature reaches 65C or if any TMC2660 drivers (virtual ; Tools M563 P0 S"Extruder 1" D0 H1 F3 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M955 P20.0 I24 ; Accelerometer M572 D0 S0.005 ; Pressure Advance ;M592 D0 A0.009541 B0.001755 ; Non Linear Extrusion 0.4mm pla M593 P"zvddd" F60 ; Input Shaping ;Filament out sensor M591 D0 P3 C"20.io1.in" S0 R70:130 L26.26 E3.0 ; magnet sensor for extruder 0 is connected to E2 endstop input, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length 25.88 M591 D0 ; display filament sensor parameters for extruder drive 0 ;Tool Board Buttons M950 J10 C"20.button1" M581 T2 P10 S1 ; Custom settings are not defined ; Miscellaneous M911 S20 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
Cheers Sam
-
@samlogan87 thanks.
I am wondering whether microstep interpolation is working. If you send M350 X16 Y16 I0 does the motor get noisier, still in open loop mode? If you then send If you send M350 X16 Y16 I1 does it get quieter?
-
@dc42 said in 1HCL closed loop steppers on CoreXY:
M350 X16 Y16 I0
Hi David, I gave it a go and it was much worse without the interpolation. On a side note, it doesn't seem you can change that parameter on the fly as I was getting this error and the printer would unhome x and y, but the z was fine
4/20/2022, 6:50:19 AM M350 X16 Y16 I1 Cancelled printing file 0:/gcodes/Voron_Design_Cube_v7.gcode, print time was 0h 3m Error: G0/G1: insufficient axes homed 4/20/2022, 6:46:38 AM M32 "0:/gcodes/Voron_Design_Cube_v7.gcode" File 0:/gcodes/Voron_Design_Cube_v7.gcode selected for printing 4/20/2022, 6:45:32 AM M350 X16 Y16 I0 Cancelled printing file 0:/gcodes/Voron_Design_Cube_v7.gcode, print time was 0h 1m Error: G0/G1: insufficient axes homed 4/20/2022, 6:44:00 AM M32 "0:/gcodes/Voron_Design_Cube_v7.gcode" File 0:/gcodes/Voron_Design_Cube_v7.gcode selected for printing
Regards,
Sam -