Duet 3 delta xy not square



  • Hi All,

    I recently upgraded from a Duet 0.6 to the new Duet 3.
    I got the printer to work, but my prints are not square in the xy plane, definitely less so than with the duet 0.6

    Since this is a delta printer, I assume it has to be software (also, since it worked fine with the older board).

    Any suggestions what could cause this on my delta printer?

    config.g

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Nov 02 2020 22:58:05 GMT+0100 (Central European Standard Time)
    
    ; General preferences
    G90                                                   ; send absolute coordinates...
    M83                                                   ; ...but relative extruder moves
    M550 P"Duet 3"                                        ; set printer name
    M665 R173 L350 B130 H470.20                             ; 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
    
    ; Drives
    M569 P0.0 S1                                          ; physical drive 0.0 goes forwards
    M569 P0.1 S1                                          ; physical drive 0.1 goes forwards
    M569 P0.2 S1                                          ; physical drive 0.2 goes forwards
    M569 P0.3 S1                                          ; physical drive 0.3 goes forwards
    M584 X0.0 Y0.1 Z0.2 E0.3                              ; set drive mapping
    M350 X16 Y16 Z16 E16 I1                               ; configure microstepping with interpolation
    M92 X160.00 Y160.00 Z160.00 E401.44                   ; 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 X1000.00 Y1000.00 Z1000.00 E1000.00              ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z1000 E800 I30                       ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                               ; Set idle timeout
    
    ; Axis Limits
    M208 Z0 S1                                            ; set minimum Z
    
    ; Endstops
    M574 X2 S1 P"io0.in"                                  ; configure active-high endstop for high end on X via pin io0.in
    M574 Y2 S1 P"io1.in"                                  ; configure active-high endstop for high end on Y via pin io1.in
    M574 Z2 S1 P"io2.in"                                  ; configure active-high endstop for high end on Z via pin io2.in
    
    ; Z-Probe
    ;M558 P1 C"io6.in" H5 F60 T6000                        ; set Z probe type to unmodulated and the dive height + speeds
    M558 P1 C"io6.in" H5 F120 T6000 A5 S0.03 ; Set Z probe type to unmodulated and the dive height + speeds. Prod 5 times max to reach 0.03 tollerance https://forum.duet3d.com/topic/11412/dc42-ir-probe-readings-not-consistent/4
    ;M558 H30                                              ;*** Remove this line after delta calibration has been done and new delta parameters have been saved
    G31 P500 X0 Y0 Z2.3410                                   ; set Z probe trigger value, offset and trigger height - https://duet3d.dozuki.com/Wiki/Calibrating_a_delta_printer
    M557 R85 S10                                          ; define mesh grid
    
    ; Heaters (see: https://duet3d.dozuki.com/Wiki/Connecting_thermistors_or_PT1000_temperature_sensors)
    ;M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
    M308 S0 P"temp0" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin temp0
    M950 H0 C"out0" T0                           ; create bed heater output on out0 and map it to sensor 0
    ;M307 H0 B0 S1.00                             ; disable bang-bang mode for the bed heater and set PWM limit
    M307 H0 A89.9 C101.4 D2.8 V24.2 B0
    M140 H0                                      ; map heated bed to heater 0
    M143 H0 S120                                 ; set temperature limit for heater 0 to 120C
    ;M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1
    M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.060000e-8   ; 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 heater  and set PWM limit
    M307 H1 A346.6 C140.0 D2.4 S1.0 V24.2 B0		;Heater 1 model: gain 346.6, time constant 140.0, dead time 2.4, max PWM 1.00, calibration voltage 24.2, mode PID
    
    ; Fans
    M950 F0 C"out7" Q10                                   ; create fan 0 on pin out7 and set its frequency
    M106 P0 S1 H1 T45                                     ; set fan 0 value. Thermostatic control is turned on
    
    ; Tools
    M563 P0 D0 H1 F0                                      ; 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
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M501                                                  ; load saved parameters from non-volatile memory
    

    there is no config-override.g file

    m122
    === Diagnostics ===
    RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (SBC mode)
    Board ID: 08DJM-956L2-G43S8-6JKDL-3S86R-183QF
    Used output buffers: 1 of 40 (10 max)
    === RTOS ===
    Static ram: 154604
    Dynamic ram: 161756 of which 108 recycled
    Exception stack ram used: 224
    Never used ram: 76524
    Tasks: NETWORK(ready,1980) HEAT(blocked,1200) CanReceiv(suspended,3820) CanSender(suspended,1488) CanClock(blocked,1436) TMC(blocked,204) MAIN(running,5064) IDLE(ready,76)
    Owned mutexes:
    === Platform ===
    Last reset 00:00:37 ago, cause: software
    Last software reset at 2020-11-03 00:24, reason: User, spinning module LinuxInterface, available RAM 76044 bytes (slot 0)
    Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0444a000 BFAR 0x00000000 SP 0xffffffff Task MAIN
    Error status: 0
    MCU temperature: min 28.2, current 28.6, max 28.7
    Supply voltage: min 24.2, current 24.3, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes
    12V rail voltage: min 12.1, current 12.1, max 12.2, under voltage events: 0
    Driver 0: standstill, reads 50024, writes 14 timeouts 0, SG min/max 0/0
    Driver 1: standstill, reads 50024, writes 14 timeouts 0, SG min/max 0/0
    Driver 2: standstill, reads 50025, writes 14 timeouts 0, SG min/max 0/0
    Driver 3: standstill, reads 50025, writes 14 timeouts 0, SG min/max 0/0
    Driver 4: standstill, reads 50029, writes 11 timeouts 0, SG min/max 0/0
    Driver 5: standstill, reads 50029, writes 11 timeouts 0, SG min/max 0/0
    Date/time: 2020-11-03 00:25:10
    Slowest loop: 4.12ms; fastest: 0.14ms
    === Storage ===
    Free file entries: 10
    SD card 0 not detected, interface speed: 37.5MBytes/sec
    SD card longest read time 0.0ms, write time 0.0ms, max retries 0
    === Move ===
    Hiccups: 0(0), FreeDm: 375, MinFreeDm: 375, MaxWait: 0ms
    Bed compensation in use: none, comp offset 0.000
    === MainDDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0  CDDA state: -1
    === AuxDDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0  CDDA state: -1
    === Heat ===
    Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
    === GCodes ===
    Segments left: 0
    Movement lock held by null
    HTTP* is ready with "M122" in state(s) 0
    Telnet is idle in state(s) 0
    File is idle in state(s) 0
    USB is idle in state(s) 0
    Aux is idle in state(s) 0
    Trigger* is idle in state(s) 0
    Queue is idle in state(s) 0
    LCD is idle in state(s) 0
    SBC is idle in state(s) 0
    Daemon* is idle in state(s) 0
    Aux2 is idle in state(s) 0
    Autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 1.43ms; fastest: 0.01ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
    HTTP sessions: 0 of 8
    - Ethernet -
    State: disabled
    Error counts: 0 0 0 0 0
    Socket states: 0 0 0 0 0 0 0 0
    === CAN ===
    Messages sent 101, longest wait 0ms for type 0
    === Linux interface ===
    State: 0, failed transfers: 0
    Last transfer: 22ms ago
    RX/TX seq numbers: 808/810
    SPI underruns 0, overruns 0
    Number of disconnects: 1
    Buffer RX/TX: 0/0-0
    === Duet Control Server ===
    Duet Control Server v3.1.1
    Trigger:
    Finishing macro config.g, started by system
    > Next stack level
    Code buffer space: 4096
    Configured SPI speed: 8000000 Hz
    Full transfers per second: 27.99
    

  • Moderator



  • @sylvaindc said in Duet 3 delta xy not square:

    there is no config-override.g file

    please run the calibration and save it with M500



  • @Phaedrux everything therr, except making sure it's all squared apparently...

    So back to squaring 🙂



  • To what degree is it not square?

    If you're under .5mm of X/Y distance, you'll be looking for something you think it insignificant or really small value changes in the configuration. I've seen .2-.3 mm differences clear up with a brand new nozzle (and come back the first time I run it into the bed...lol).

    The auto calibration can account for many slightly off values that are not the squareness of the frame (and really you're not going to try to physically adjust for 1% tower placements for example). There's also movement based mechanical issues so belt tightness, carriage movement, arm joints can also play havok with this too. Static mechanical issues such as the arms themselves being as close to the exact same length as possible is important, if you have different lengths within a pair you'll add twist to the effector, which you don't have calibration adjustments for, but if you have them exactly the same within pairs and different between the towers you can compensate for this software wise as well.


Log in to reply