Dual X-Axis



  • Hey group, I've been using the Duet Wifi to drive a dual x-axis lead screw 3d printer with a fixed bed and moving gantry. It's been working out great. Most people don't like the idea of a lead screw 3d printer because of backlash and speed issues. But I've been using high helix multi-start screw with anti backlash nuts and the machine performs. Attached is a copy of my firmware files. Also I published everything opensource on Thingiverse if anyone wants to try to build one themselves. I do suggest using the expansion board on this build to help with mesh leveling. We usually run an auto-level routine before mesh leveling to get the dual z-axis gantry parallel followed by a mesh leveling routine.

    Here's the Config:
    ; Configuration file for Duet WiFi (firmware version 1.20 or newer)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Thu Nov 16 2017 18:16:14 GMT-0600 (Central Standard Time)

    M111 S0 ; Debugging off
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves
    M555 P1 ; Set firmware compatibility to look like RepRapFirmare

    ; Motor remapping for dual X
    ;M584 X0:3 Y1 Z2 U3 E4 P3 ; Driver X0:3, 1 for Y, Z=2 U=3, Extruder 4; General preferences
    ;Motor remapping with U axis visible
    M584 X0:3 Y1 Z2:9 U3 E4 ; Driver X0:3, 1 for Y, Z2:9 , , U=3, Extruder 4; General preferences

    ; LEADSCREW POSTIONS
    M671 X-115:650 Y150:150 S5.0;

    ;oldfirmwareM911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000"'
    M911 S22 R25.0 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000"
    M208 X0 Y0 Z0 U0 V0 S1 ; Set axis minima
    M208 X600 Y300 Z235 U600 V210 S0 ; Set axis maxima

    ; Endstops
    M574 X1 Y2 Z2 U1 S1 ; Set active high endstops
    M558 P3 I1 H10 F600 T6000 ; Set Z probe type to switch and the dive height + speeds
    G31 P500 X15 Y15 Z0.6 ; Set Z probe trigger value, offset and trigger height
    M557 X20:480 Y20:300 S40 ; Define mesh grid

    ; Drives
    M569 P0 S1 ; Drive 0 goes X1 forwards
    M569 P1 S0 ; Drive 1 goes Y forwards
    M569 P2 S0 ; Drive 2 goes Z forwards
    M569 P3 S1 ; Drive 3 goes X2 forwards
    M569 P4 S0 ; Drive 4 goes E fowards
    M569 P5 S1 ;
    M569 P6 S0 ;
    M569 P7 S1 ;
    M569 P8 S1 ;
    M569 P9 S0 ; Drive 9 goes Z2 forward

    ; Configure Drives
    M350 X16 Y16 Z16 U16 V16 E16 I1 ; Configure microstepping with interpolation
    M92 X64 Y64 Z1259.843 U64 V1259.843 E418.5 ; Set steps per mm
    M566 X1200 Y1200 Z12 U1200 V12 E120 ; Set maximum instantaneous speed changes (mm/min)
    M203 X7200 Y7200 Z180 U7200 V180 E1200 ; Set maximum speeds (mm/min)
    M201 X500 Y500 Z250 U500 V250 E250 ; Set accelerations (mm/s^2)
    M906 X2300 Y2300 Z1400 E1200 U2300 V1400 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Heaters
    M140 H-1 ; Disable heated bed
    M305 P1 T100000 B4725 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 1
    M143 H1 S280 ; Set temperature limit for heater 1 to 280C

    ; Tools
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 X0 Y0 U0 V0 Z0 ; Set tool 0 axis offsets
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C

    ; Network
    M550 PWorkhorse ; Set machine name
    M552 S1 ; Enable network S1 router s2 hotspot
    ; Access point is configured manually via M587 by the user
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet

    ; SetNetwork macro to set up access to dummy test Wifi network
    ;M552 S0;
    ;G4 S5;
    ;M589 "network name" P"password" I192.168.1.117;
    ;G4 S5;
    ;M552 S2;

    ; Fans?
    M106 P0 S1 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H-1 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P2 S1 I0 F500 H-1 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off

    ; Custom settings are not configured

    ; Miscellaneous
    M501 ; Load saved parameters from non-volatile memory
    T0 ; Select first tool

    Here's the HomeX:
    ; homex.g
    ; called to home the X axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Thu Nov 16 2017 18:16:14 GMT-0600 (Central Standard Time)

    ; Lift Z relative to current position
    G91
    G1 S2 Z5 F2000
    G90

    ; Move quickly to X axis endstop and stop there (first pass)
    M584 X0 U3 ; Split X into 2 (X+U)
    G1 S1 X-605 U-605 F1500

    ; Go back a few mm
    G91
    G1 S2 X5 U5
    G90

    ; Move slowly to X axis endstop once more (second pass)
    G1 S1 X-605 U-605 F360

    M584 X0:3 ; Join U to X again

    ; Go back a few mm
    G91
    G1 S2 X5 U5
    G90

    ; Lower Z again
    G91
    G1 S2 Z-5 F2000
    G90
    ;;;;

    https://www.thingiverse.com/thing:2764064
    https://www.3ddistributed.com/
    https://www.youtube.com/watch?v=afbCD0LzNQE&t=100s

    alt text

    link text
    0_1539724921203_config.g 0_1539724934829_homeall.g 0_1539724938661_homex.g 0_1539724952377_homey.g 0_1539724957522_homez.g


  • administrators

    I saw a version of this machine at MRRF this year. Its a beast!

    Glad you have the dual leadscrew homing sorted Shane!



  • That looks like a solid machine. Nice work.


Log in to reply