Delta Calibration Not Completing

  • My custom delta build is almost complete, but I'm having a weird issue with performing the Delta Calibration. A few weeks ago I had no issues with this, and now it's not working anymore and I'm not sure how to fix it.

    I'm using a Duet 3 6HC in SBC mode with a Duet3D Smart Effector with firmware 3.2.0 beta 2 from the unstable repository and all other packages up to date.

    While doing the calibration, the print head will often tap the same location 2-3 times, then skip the next point or two in the sequence. It doesn't matter if I set it to 3-3-1 or 12-6-1 or any other number of probing points in between, or whether I'm doing a 6-factor or 8-factor or any other calibration, the issue persists every time. At the end of the calibration attempt, I get either no feedback at all, or some very random error messages like:

    "Error: Bed calibration : 6 factor calibration requested but only X points provided" (the number of points provided changes every time, is often 0)

    There's been other errors, but I can't remember them and I can't reproduce them right now. I've generated the bed.g file using both the RepRapFirmware Configuration Tool and the Escher3D Bed Wizard

    I can confirm that the LED on the Smart Effector is flashing every time it taps the bed. I've got a REALLY consistent trigger height at every location I've tested manually. I really don't get what I'm doing wrong.

    Here is my config.g file:

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ; General preferences
    G90                                           ; send absolute coordinates...
    M83                                           ; ...but relative extruder moves
    M665 L600:600:600 R305 H774 B290              ; Set delta radius, diagonal rod length, printable radius and homed height
    M666 X0.533 Y0.079 Z-0.612                    ; put your endstop adjustments here, or let auto calibration find them
    ; Drives
    M569 P0.0 S1 V100                                ; physical drive 0.0 goes forwards
    M569 P0.1 S0 V46                                 ; physical drive 0.1 goes backwards
    M569 P0.2 S0 V46                                 ; physical drive 0.2 goes backwards
    M569 P0.3 S0 V46                                 ; physical drive 0.3 goes backwards
    M584 E0.0 X0.1 Y0.2 Z0.3                         ; set drive mapping
    M350 X16 Y16 Z16 I1                              ; configure microstepping with interpolation
    M350 E8 I0                                       ; extruder X8 microstepping with no interpolation
    M92 X160.00 Y160.00 Z160.00 E1900                ; set steps per mm
    M566 X1200.00 Y1200.00 Z1200.00 E6               ; set maximum instantaneous speed changes (mm/min)
    M203 X12000.00 Y12000.00 Z12000.00 E2400         ; set maximum speeds (mm/min)
    M201 X1000.00 Y1000.00 Z1000.00 E120             ; set accelerations (mm/s^2)
    M906 X1400 Y1400 Z1400 E400 I30                  ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                          ; Set idle timeout
    ; Axis Limits
    M208 Z-3 S1                                    ; set minimum Z
    ; Endstops
    M574 X2 S1 P""                          ; configure active-high endstop for high end on X via pin
    M574 Y2 S1 P""                          ; configure active-high endstop for high end on Y via pin
    M574 Z2 S1 P""                          ; configure active-high endstop for high end on Z via pin
    ; Z-Probe
    M558 P8 R0.4 C"" H5 F1200 T6000  ; set Z probe type to effector and the dive height + speeds
    G31 P100 X0 Y0 Z-0.14                           ; set Z probe trigger value, offset and trigger height
    M557 R280 S80                                  ; define mesh grid
    ; Heaters
    M308 S2 P"temp2" Y"thermistor" T100000 B4138 A"Bed"     ; configure sensor 2 as thermistor on pin temp2
    M950 H0 C"out2" T2                                      ; create bed heater output on out2 and map it to sensor 2
    M307 H0 B0 S1.00 F10                                    ; disable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                                 ; map heated bed to heater 0
    M143 H0 S170 A0                                         ; set temperature limit for bed
    M308 S1 P"temp1" Y"thermistor" T500000 B4723 C1.196220e-7 A"Hotend"  ; configure sensor 1 as thermistor on pin temp1
    M950 H1 C"out1" T1                                      ; create nozzle heater output on out1 and map it to sensor 1
    M307 H1 B0 S1.00                                        ; disable bang-bang mode for nozzle heater and set PWM limit
    M143 H1 S425 A0                                         ; set temperature limit for nozzle
    M308 S0 P"temp0" Y"thermistor" T100000 B4138 A"Chamber Monitor" ; configure sensor 0 as thermistor on pin temp 0
    M308 S3 P"temp3" Y"thermistor" T100000 B4138 R4400 A"Chamber Heaters" ; configure sensor 3 as thermistor on pin temp3 (2 connected in series)
    M950 H2 C"out3" T3                                      ; create chamber heater output on out3 and map it to sensor 3
    M307 H2 B0 S1.00 F10                                    ; disable bang-bang mode for the chamber heater and set PWM limit
    M141 H2                                                 ; map chamber to heater 2
    M143 H2 T0 A2 S120                                      ; set temperature limit for chamber based on secondary probe
    M308 S4 Y"drivers" A"Drivers"                           ; configure sensor 4 as temperature warning and overheat flags on the TMC2660 on Duet
    M308 S5 Y"mcu-temp" A"MCU"                              ; configure sensor 5 as thermistor on pin eltemp for left stepper
    ; Fans
    M950 F0 C"out8" Q500                              ; create fan 0 on pin out8 and set its frequency
    M106 P0 S0 H-1 C"Part cooling"                    ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"out7" Q500                              ; create fan 1 on pin out7 and set its frequency
    M106 P1 H1 T45 C"Hotend"                          ; set fan 1 value. Thermostatic control is turned on
    M950 F2 C"!out4" Q2500                            ; create fan 2 on pin out4 and set its frequency
    M106 P2 H4:5 L0.50 X1 B0.3 T35:50 C"Electronics"  ; set fan 2 value. Thermostatic control is turned on
    ; Tools
    M563 P0 D0 H1 F0                              ; define tool 0
    G10 P0 X0 Y0 Z0 R0 S0                         ; set tool 0 axis offsets and set active and standby temperatures to 0C
    ; Custom settings
    M207 S1.5 F900                                ; firmware retraction
    M376 H10                                      ; taper off bed compensation by 5mm height
    ; Miscellaneous
    M501                                          ; load saved parameters from non-volatile memory
    T0                                            ; select first tool

    (the M666 commands are derived from a previous auto calibration I performed successfully weeks ago)

    Here's the current bed.g file, though I've gone through countless permutations at this point:

    M561 ; clear any bed transform
    G28  ; home all towers
    ; bed.g file for RepRapFirmware, generated by Escher3D calculator
    ; 16 points, 6 factors, probing radius: 280, probe offset (0, 0)
    G30 P0 X0 Y279.9 H0 Z-99999
    G30 P1 X242.4 Y-139.95 H0 Z-99999
    G30 P2 X-242.4 Y-139.95 H0 Z-99999
    G30 P3 X0 Y139.9 H0 Z-99999
    G30 P4 X121.16 Y-69.95 H0 Z-99999
    G30 P5 X-121.16 Y-69.95 H0 Z-99999
    G30 P6 X0 Y0 H0 Z-99999 S6
    ;G29 S1   ; load current bed mesh compensation map

    And this is my homedelta.g file, since that gets called by bed.g:

    ; homedelta.g
    ; called to home all towers on a delta printer
    G91                           ; relative positioning
    G1 H1 X1305 Y1305 Z1305 F6000 ; move all towers to the high end stopping at the endstops (first pass)
    G1 H2 X-5 Y-5 Z-5 F1800       ; go down a few mm
    G1 H1 X10 Y10 Z10 F360        ; move all towers up once more (second pass)
    ;G1 Z-5 F6000                  ; move down a few mm so that the nozzle can be centred
    G90                           ; absolute positioning
    ;G1 X0 Y0 F6000                ; move X+Y to the centre

    There are no M665 or M666 commands in my config-override.g since that's what I'm trying to generate with auto calibration.

  • That sounds like the issues with beta 2 rather than your setup.
    Either roll back to 3.1.1 or wait for beta 3 to be released.

  • Ugh, I already tried that and it's not trivial. My SD card is super difficult to get to right now, otherwise I'd just flash a new image. If it is something wrong with beta 2, I haven't seen any activity about it in github, so it's likely something that still needs fixing. I'd like to hear from the devs to confirm or deny it.

  • It's to do with macros that are called being processed out of order.
    I reported it pretty much as soon as beta 2 was released last month. It's also covered in the release notes for the imminent beta 3.
    Beta 3 was due on Monday but that got missed...

  • @jay_s_uk When I tried to revert the software back to 3.1.1, I was having issues with DCS connecting to the board. Am I correct in assuming that this is caused by the board firmware being at 3.2 and not being compatible with 3.1.1 software on the SBC? Can I downgrade the firmware before downgrading the software packages?

  • Yes, that's correct. They changed the SPI protocol in beta 2 and it can't connect to any version of DSF below that.
    To downgrade from beta 2 to anything beneath you must first downgrade the firmware on the board to the version you are aiming for.
    After that, you can downgrade the software on the pi

  • @jay_s_uk Thank you!

  • That works as expected now and I was able to complete the calibration

Log in to reply