SmartEffector calibration issues on AKLP
-
Hey All,
I have a heavily modified Anycubic Kossel that I have upgraded with an SKR2, E3D v6, Haydn magballs/arms, and a SmartEffector v3. I am running RepRapFirmware for STM32F4 based Boards 3.4.5+_107 (2023-05-24), with DWS version 2.1beta4. While I completed the upgrade a while ago, I have not had much luck getting the system calibrated, causing first layers to fail or at least come out poorly.
I notice when testing probe repeatability, I get the following results:
G32 bed probe heights: -0.405 -0.443 -0.455 -0.455 -0.430 -0.455 -0.455 -0.468 -0.468 -0.443, mean -0.448, deviation from mean 0.018
Any suggestions for correcting the probe height reading?
My config.g:
; Configuration file for BTT SKR 2 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.4.0-LPC-STM32+5 on Sun Feb 05 2023 12:03:53 GMT-0500 (Eastern Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Kossel" ; set printer name M665 R120 L288.12 B115 H217 ; Set delta radius, diagonal rod length, printable radius and homed height M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them ; Network M551 P"Ddr2@667mhz" ; set password M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards using default driver timings M569 P1 S1 ; physical drive 1 goes forwards using default driver timings M569 P2 S1 ; physical drive 2 goes forwards using default driver timings M569 P3 S0 ; physical drive 3 goes backwards using default driver timings M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z80.00 E425.68 ; set steps per mm M566 X1200.00 Y1200.00 Z1200.00 E1200.00 ; set maximum instantaneous speed changes (mm/min) M203 X18000.00 Y18000.00 Z18000.00 E1200.00 ; set maximum speeds (mm/min) M201 X3000.00 Y3000.00 Z3000.00 E3000.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z1200 E1340 I30 ; set motor currents (mA) and motor idle factor in per cent - Originally was set to 1000 for all motors M84 S30 ; Set idle timeout ; Axis Limits M208 Z-0.3 S1 ; set minimum Z. Original Z0 ; Endstops M574 X2 S1 P"xstop" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin xstop M574 Y2 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin ystop M574 Z2 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for high end on Z via pin zstop ; Z-Probe M558 P8 R0.4 C"probe+servo0" H5 F1200 T6000 ; set Z probe type to effector and the dive height + speeds G31 P100 X0 Y0 Z-0.1 ; set Z probe trigger value, offset and trigger height (trigger height is -0.1 due to Duet Smart Effector) M557 R110 S15 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bed" T0 ; create bed heater output on bed and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S285 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 C"Stepper Driver Fan" H0:10:11 T15:100 ; set fan 0 name and value. Thermostatic control is turned on M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 C"Hotend Fan" S1 H1 T65 ; set fan 1 name and value. Thermostatic control is turned on M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency M106 P2 C"Part-cooling Fan" S0 H-1 ; set fan 2 name and value. Thermostatic control is turned off ; Tools M563 P0 S"E3D v6" D0 H1 F2 ; 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 ; Sensors M308 S10 Y"mcu-temp" A"MCU" ; defines sensor 10 as MCU temperature sensor M308 S11 Y"drivers" A"Stepper Drivers" ; defines sensor 11 as stepper driver temperature sensor M501
-
@technokami the deviation isn't bad (0.018mm) but the combination of your M665 H parameter and G31 probe trigger height is out by about 0.43mm.
If it's the M665 H parameter that is out then if you home between running G32 and printing (e.g. because your slicer inserts a G28 command near the start of the file), that will mess up the initial height. Best practice is to run G32 before printing (which you can do manually, or in the start.g file, or in your slicer start GCode) but not re-home between that G32 and starting the print.
-
@dc42 I just checked the output of M665 and it shows the homed height as 216.653.
I also confirmed that G32 is run as part of my start G-code, and G28 is not being run before printing. I have also tried with UBL on and off, with no noticeable difference in printing outcome
It's really odd because the output from G32 seems to indicate that it has things pretty dialed in, but then fails miserably to print.
-
@technokami you could try to insert part of my start up script, just the part that probes the bed after preheating with the G30, to set Z=0
G28 ; home M104 S150 ; Precaliento nozzle M140 S[first_layer_bed_temperature] ; Caliento la cama M190 S[first_layer_bed_temperature] ; wait for bed temp M109 S150 ; wait for extruder temp G1 Z10 F6000 ; Bajo rapido para hacer el probe G30 ;Establezco altura Z para evitar error Z-datum y que cargue correctamente el offset del prob M98 P"0:/sys/00-Functions/print_area_mesh.g" A{first_layer_print_min[0]} B{first_layer_print_max[0]} C{first_layer_print_min[1]} D{first_layer_print_max[1]} M376 H5 ; turn on fade feature so it fades after 5mm height G1 X0 Y-190 Z80 F6000 ; Me pongo en posicion para limpiar el filamento M104 S[first_layer_temperature] ; set extruder temp M109 S[first_layer_temperature] ; wait for extruder temp G92 E0 ;zero the extruded length ;G1 F200 E30 ; Saca un poco de filamento ;G92 E0 ;zero the extruded length again ;M291 S3 R"Remove Filament from nozzle" P"Then press OK" ;G4 S4 ; Pausa de 8 segundos (por si no quiero el menu anterior) M400 M98 P"0:/sys/primeLine.g" ; Fichero de purga por el borde G92 E0.0
-
@apak Do you mean this part?
G1 Z10 F6000 ; Bajo rapido para hacer el probe G30 ;Establezco altura Z para evitar error Z-datum y que cargue correctamente el offset del prob M98 P"0:/sys/00-Functions/print_area_mesh.g" A{first_layer_print_min[0]} B{first_layer_print_max[0]} C{first_layer_print_min[1]} D{first_layer_print_max[1]} M376 H5 ; turn on fade feature so it fades after 5mm height
-
I spent most of yesterday testing probe points. I put together a macro that probes the centre of the bed first and then goes to all the bed.g points and probes to find the trigger height in that spot. Adding the height corrections to bed.g seems to have had no effect, it's almost like the printer is ignoring the corrections.
Running G32 shows "Calibrated 6 factors using 9 points, (mean, deviation) before (0.055, 0.027) after (-0.000, 0.004)", which as far as I understand is pretty good right?
In case it helps. Here is the bed.g file and the config-override.g
bed.g
; bed.g file for RepRapFirmware, generated by Escher3D calculator ; 10 points, 6 factors, probing radius: 115, probe offset (0, 0) M561 ; Clear bed transform G28 ; Home the effector G30 P0 X0.00 Y115.00 Z-99999 H-0.0400029 G30 P1 X99.59 Y57.50 Z-99999 H-0.0029763 G30 P2 X99.59 Y-57.50 Z-99999 H-0.0388076 G30 P3 X0.00 Y115.00 Z-99999 H-0.0384381 G30 P4 X-99.59 Y-57.50 Z-99999 H-0.2030215 G30 P5 X-99.59 Y57.50 Z-99999 H0.0401963 G30 P6 X0.00 Y57.50 Z-99999 H0.0718113 G30 P7 X49.80 Y-28.75 Z-99999 H-0.0086697 G30 P8 X-49.80 Y-28.75 Z-99999 H-0.0451099 S6 ;G30 P0 X0.00 Y115.00 Z-99999 H0 ;G30 P1 X99.59 Y57.50 Z-99999 H0 ;G30 P2 X99.59 Y-57.50 Z-99999 H0 ;G30 P3 X0.00 Y-115.00 Z-99999 H0 ;G30 P4 X-99.59 Y-57.50 Z-99999 H0 ;G30 P5 X-99.59 Y57.50 Z-99999 H0 ;G30 P6 X0.00 Y57.50 Z-99999 H0 ;G30 P7 X49.80 Y-28.75 Z-99999 H0 ;G30 P8 X-49.80 Y-28.75 Z-99999 H0 ;G30 P9 X0 Y0 Z-99999 S6 G1 X0 Y0 Z150 F15000 ; Move the effector 150mm above the bed M500 ; Save settings
config-override.g
; config-override.g file generated in response to M500 at 2023-08-13 01:10 ; This is a system-generated file - do not edit ; Delta parameters M665 L288.120:288.120:288.120 R139.781 H217.344 B115.0 X0.902 Y0.545 Z0.000 M666 X-0.627 Y0.542 Z0.085 A0.00 B0.00 ; Heater model parameters M307 H0 R0.258 K0.330:0.000 D5.15 E1.35 S1.00 B0 M307 H1 R2.229 K0.412:0.000 D4.53 E1.35 S1.00 B0 V12.0 ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00
-
@technokami yes the g30
-
@apak Tried the G30, no change. The printer still comes too close to the bed when printing.
Currently, I am waiting for a new set of feeler gauges and I will do some testing manually. Maybe the probe needs it's sensitivity increased.
-
@technokami I would delete the z offset saved on config_override.
the run again the z offset calibration procedure....make sure you do it after a g32 or g30 without rehome, so z=0 is set by probe and not by Height since you home on z max