• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

3 Independent Z Motors - Trouble with Autolevel

Scheduled Pinned Locked Moved
Firmware installation
3
19
514
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    austinious
    last edited by 16 Dec 2021, 00:29

    Hello! I designed and built this printer and it uses a Duet 3 6HC controller with 3 Z motors. It's Cartesian, I wanted direct drive and was concerned about weight on a core XY.

    Well, it works, sort of. It homes XY, and G30 works with the Z. The motors work fine, it heats, it extrudes, even the paneldue works.

    HOWEVER....I cannot for the life of me get the autolevel to work and am VERY new to duet and reprap. Lots of experience with Marlin and building standard direct drive and bowden cartesian printers.

    THE PROBLEM - G28 cannot find the endstops, even though I never specified endstops for the Z in the configuration tool. The BL Touch works absolutely fine, like I said G30 works great. Can someone point me to an explanation of homeall.g and homez.g? I think this is where it is having troubles.

    I HAVE....seen the link in the wiki on how to do 3 independent motors....it does not work. I have seen other articles and descriptions....no luck. I have even tried to bogart Jubilee code....still nothing.

    Any suggestions are appreciated.

    IMG_20211210_171902_01.jpg

    undefined 1 Reply Last reply 16 Dec 2021, 02:27 Reply Quote 0
    • undefined
      fcwilt @austinious
      last edited by 16 Dec 2021, 02:27

      @austinious

      Do you have an endstop sensor installed for each Z axis or do you want to home using the Z probe?

      Frederick

      Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

      undefined 1 Reply Last reply 16 Dec 2021, 02:34 Reply Quote 0
      • undefined
        austinious @fcwilt
        last edited by 16 Dec 2021, 02:34

        @fcwilt no endstops for the z, just the BLTouch. Not sure why I get the error, "G28 Z endstop not enabled". I didn't define an endstop in the config tool, just the probe. And G30 works like a charm.

        undefined undefined 2 Replies Last reply 16 Dec 2021, 02:57 Reply Quote 0
        • undefined
          fcwilt @austinious
          last edited by 16 Dec 2021, 02:57

          @austinious said in 3 Independent Z Motors - Trouble with Autolevel:

          @fcwilt no endstops for the z, just the BLTouch. Not sure why I get the error, "G28 Z endstop not enabled". I didn't define an endstop in the config tool, just the probe. And G30 works like a charm.

          Please copy-and-paste your configuration files here using the </> - one file per one </>.

          Frederick

          Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

          1 Reply Last reply Reply Quote 0
          • undefined
            engikeneer @austinious
            last edited by 16 Dec 2021, 08:12

            @austinious ^config.g and homing files

            E3D TC with D3Mini and Toolboards.
            Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
            i3 clone with a bunch of mods

            1 Reply Last reply Reply Quote 0
            • undefined
              austinious
              last edited by 16 Dec 2021, 14:26

              I do not have the exact bed file here at work, the only difference is the X,Y's are different than what I am posting here. I can post the exact file later today. Just a reminder as you look through this, everything works EXCEPT autolevel. G30 will home the z axis, and the probe works as intended.

              Thanks!

              config.g
              <; 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 Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)

              ; General preferences
              M575 P1 S1 B57600 ; enable support for PanelDue
              G90 ; send absolute coordinates...
              M83 ; ...but relative extruder moves
              M550 P"redacted" ; set printer name

              ; Network
              M551 P"nothingToSeeHere" ; set password
              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 P0.3 S1 ; physical drive 0.3 goes forwards
              M569 P0.4 S1 ; physical drive 0.4 goes forwards
              M569 P0.0 S1 ; physical drive 0.0 goes forwards
              M569 P0.5 S1 ; physical drive 0.5 goes forwards
              M584 X3 Y4 Z0:1:2 E5 ; set drive mapping
              M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
              M92 X160.00 Y160.00 Z8000.00 E409.00 ; set steps per mm
              M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
              M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min)
              M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2)
              M906 X800 Y1600 Z800 E800 I30 ; 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 X400 Y400 Z400 S0 ; set axis maxima

              ; Endstops
              M574 X1 S1 P"!io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin !io1.in
              M574 Y1 S1 P"!io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin !io2.in

              ; Z-Probe
              M950 S0 C"io4.out" ; create servo pin 0 for BLTouch
              M558 P9 C"io4.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
              G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height
              M557 X50:350 Y50:350 S25 ; define mesh grid

              ; Heaters
              M308 S0 P"temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 0 as thermistor on pin temp0
              M950 H0 C"out1" T0 ; create bed heater output on out1 and map it to sensor 0
              M307 H0 B1 S1.00 ; enable 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"temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp1
              M950 H1 C"out2" T1 ; create nozzle heater output on out2 and map it to sensor 1
              M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
              M143 H1 S280 ; set temperature limit for heater 1 to 280C

              ; Fans
              M950 F0 C"out8" Q500 ; create fan 0 on pin out8 and set its frequency
              M106 P0 C"HotEnd" S0 H1 T45 ; set fan 0 name and value. Thermostatic control is turned on
              M950 F1 C"out9" Q500 ; create fan 1 on pin out9 and set its frequency
              M106 P1 C"Blower" S0 H-1 ; set fan 1 name and value. Thermostatic control is turned off

              ; Tools
              M563 P0 S"HotEnd" D0 H1 F0:1 ; 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
              M671 X215:7:424 Y-14:395:395 S0.5

              bed.g
              <
              ; bed.g
              ; called to perform automatic bed compensation via G32
              ;
              ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
              M561 ; clear any bed transform
              G29 ; probe the bed and enable compensation
              G30 ; home Z by probing the bed
              G30 P0 X130 Y0 Z-99999 ; probe near a leadscrew
              G30 P1 X0 Y280 Z-99999 ; probe near a leadscrew
              G30 P2 X240 Y280 Z-99999 S3 ; probe near a leadscrew and calibrate 3 motors

              homeall.g
              <
              ; homeall.g
              ; called to home all axes
              ;
              ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
              G91 ; relative positioning
              G1 H2 Z5 F6000 ; lift Z relative to current position
              G1 H1 X-405 Y-405 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)
              G1 H2 X5 Y5 F6000 ; go back a few mm
              G1 H1 X-405 Y-405 F360 ; move slowly to X and Y axis endstops once more (second pass)
              G1 H1 Z-405 F360 ; move Z down stopping at the endstop
              G90 ; absolute positioning
              G92 Z0 ; set Z position to axis minimum (you may want to adjust this)

              ; Uncomment the following lines to lift Z after probing
              ;G91 ; relative positioning
              ;G1 Z5 F100 ; lift Z relative to current position
              ;G90 ; absolute positioning

              homex.g
              <
              ; homex.g
              ; called to home the X axis
              ;
              ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
              G91 ; relative positioning
              G1 H2 Z5 F6000 ; lift Z relative to current position
              G1 H1 X-405 F1800 ; move quickly to X axis endstop and stop there (first pass)
              G1 H2 X5 F6000 ; go back a few mm
              G1 H1 X-405 F360 ; move slowly to X axis endstop once more (second pass)
              G1 H2 Z-5 F6000 ; lower Z again
              G90 ; absolute positioning

              homey.g
              <
              ; homey.g
              ; called to home the Y axis
              ;
              ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
              G91 ; relative positioning
              G1 H2 Z5 F6000 ; lift Z relative to current position
              G1 H1 Y-405 F1800 ; move quickly to Y axis endstop and stop there (first pass)
              G1 H2 Y5 F6000 ; go back a few mm
              G1 H1 Y-405 F360 ; move slowly to Y axis endstop once more (second pass)
              G1 H2 Z-5 F6000 ; lower Z again
              G90 ; absolute positioning

              homez.g - This is the file I have messed with the most with no luck.
              <
              ; homez.g
              ; called to home the Z axis
              ;
              ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
              G91 ; relative positioning
              G1 H2 Z5 F6000 ; lift Z relative to current position
              G1 H1 Z-405 F1800 ; move Z down until the endstop is triggered
              G92 Z0 ; set Z position to axis minimum (you may want to adjust this)

              ; Uncomment the following lines to lift Z after probing
              ;G91 ; relative positioning
              ;G1 Z5 F100 ; lift Z relative to current position
              ;G90 ; absolute positioning

              1 Reply Last reply Reply Quote 0
              • undefined
                austinious
                last edited by 16 Dec 2021, 14:28

                One thing just hit me....I'm not sure the G30 P#'s in the bed.g correspond to the driver assignments in config.g, could it be that simple?

                undefined 1 Reply Last reply 16 Dec 2021, 14:44 Reply Quote 0
                • undefined
                  engikeneer @austinious
                  last edited by 16 Dec 2021, 14:44

                  @austinious both homeall and homez use a G1 H1 move to home so expects and endstop, not a G30 probing move. Thats the source of your error.

                  Also, don't load your heightmap til after you levels the bed in bed.g. otherwise your levelling measurements will be based on a compensated bed and the two will fight each other

                  The order of the probe points in the bed.g don't matter. I use six points in mine in different parts of the bed. What matters is the M671 coordinates are in the same order as your z drives

                  E3D TC with D3Mini and Toolboards.
                  Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
                  i3 clone with a bunch of mods

                  undefined 1 Reply Last reply 16 Dec 2021, 15:03 Reply Quote 0
                  • undefined
                    austinious @engikeneer
                    last edited by 16 Dec 2021, 15:03

                    @engikeneer Thanks, I'll work with that when I get home. I have to do some reading about height map it seems....no idea what it does.

                    undefined 1 Reply Last reply 16 Dec 2021, 15:58 Reply Quote 0
                    • undefined
                      engikeneer @austinious
                      last edited by 16 Dec 2021, 15:58

                      @austinious here's some bed time reading 😄
                      https://duet3d.dozuki.com/Wiki/Using_mesh_bed_compensation

                      E3D TC with D3Mini and Toolboards.
                      Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
                      i3 clone with a bunch of mods

                      undefined 1 Reply Last reply 16 Dec 2021, 16:38 Reply Quote 0
                      • undefined
                        austinious @engikeneer
                        last edited by 16 Dec 2021, 16:38

                        @engikeneer 👍 🤠

                        1 Reply Last reply Reply Quote 0
                        • undefined
                          austinious
                          last edited by 16 Dec 2021, 22:23

                          Success! Sort of...

                          G28
                          Error: Some computed corrections exceed configured limit of 0.50mm: -0.599 -1.480 -2.324
                          Error: Height map file 0:/sys/heightmap.csv not found

                          I assume there is a setting to determine how much adjustment. But hey! Progress!

                          bed.g
                          <
                          ; bed.g - I added some lowering between probes due to the bed being off.
                          ; called to perform automatic bed compensation via G32
                          ;
                          ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
                          G30
                          G30 P0 X100 Y0 Z-99999 ; probe near rear leadscrew
                          G1 Z-10 F6000 ; lower Z again
                          G30 P1 X233 Y280 Z-99999 ; probe near left leadscrew
                          G1 Z-10 F6000 ; lower Z again
                          G30 P2 X0 Y280 Z-99999 S3 ; probe near right leadscrew and calibrate 3 motors
                          G29 S1 ; probe the bed and enable compensation

                          undefined undefined 2 Replies Last reply 16 Dec 2021, 22:36 Reply Quote 0
                          • undefined
                            engikeneer @austinious
                            last edited by 16 Dec 2021, 22:36

                            @austinious yes, it's the S parameter in M671
                            https://duet3d.dozuki.com/Wiki/M671

                            You are then calling G29 S1 which loads the heightmap (with the default name). Looks like you don't have one made already so you need to create one with G29 or G29 S0

                            E3D TC with D3Mini and Toolboards.
                            Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
                            i3 clone with a bunch of mods

                            undefined 1 Reply Last reply 16 Dec 2021, 22:38 Reply Quote 0
                            • undefined
                              austinious @engikeneer
                              last edited by 16 Dec 2021, 22:38

                              @engikeneer thanks! I found the M671 just as you replied....lol. Is there any reason to not increase that to 5mm?

                              I'm reading up on the heightmap and mesh, thanks for the links!

                              undefined 1 Reply Last reply 16 Dec 2021, 22:46 Reply Quote 0
                              • undefined
                                austinious @austinious
                                last edited by 16 Dec 2021, 22:46

                                @engikeneer
                                G28
                                Leadscrew adjustments made: -0.591 -1.472 -2.315, points used 3, (mean, deviation) before (-1.019, 0.476) after (0.000, 0.000)

                                WooHoo!
                                Thanks for the help, I really appreciate it! I increased my M671 to 3mm, reading up on the mesh.

                                undefined 1 Reply Last reply 16 Dec 2021, 23:16 Reply Quote 0
                                • undefined
                                  engikeneer @austinious
                                  last edited by 16 Dec 2021, 23:16

                                  @austinious if your mechanism can take it, there's no real reason not to set it higher. Just bear in mind if uou did have two of the motors swapped, it could unlevel the bed by that much.
                                  Might want to run G32 a few times as any slight errors in leadscrew positions etc mean it won't get it 100% first time. I only run it once before each print, but do it a few times if I mess with anything. Some more clever people use conditional gcode to repeatedly run it until the adjustments are below a threshold. One for if you're feeling fancy when it's yp and running - then you can show me how to do it 😛

                                  E3D TC with D3Mini and Toolboards.
                                  Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
                                  i3 clone with a bunch of mods

                                  undefined 1 Reply Last reply 17 Dec 2021, 00:34 Reply Quote 0
                                  • undefined
                                    austinious @engikeneer
                                    last edited by 17 Dec 2021, 00:34

                                    @engikeneer
                                    We'll see if I get that far. I usually stop tweaking when I get an acceptable print. I'm largely going to be making jigs and stamps for leatherworking, but I hope to make some neat stuff out of NylonX

                                    1 Reply Last reply Reply Quote 0
                                    • undefined
                                      fcwilt @austinious
                                      last edited by 17 Dec 2021, 01:17

                                      @austinious said in 3 Independent Z Motors - Trouble with Autolevel:

                                      bed.g
                                      <
                                      ; bed.g - I added some lowering between probes due to the bed being off.
                                      ; called to perform automatic bed compensation via G32
                                      ;
                                      ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Dec 11 2021 09:34:44 GMT-0500 (Eastern Standard Time)
                                      G30
                                      G30 P0 X100 Y0 Z-99999 ; probe near rear leadscrew
                                      G1 Z-10 F6000 ; lower Z again
                                      G30 P1 X233 Y280 Z-99999 ; probe near left leadscrew
                                      G1 Z-10 F6000 ; lower Z again
                                      G30 P2 X0 Y280 Z-99999 S3 ; probe near right leadscrew and calibrate 3 motors
                                      G29 S1 ; probe the bed and enable compensation

                                      Just FYI you should not need those G1 Z-10 commands - the three G30 P# commands should be able to execute one right after another. If they cannot you likely have a Z probe setting not quite right.

                                      Also using conditional code it is possible to have the leveling process repeat as needed until a specified degree of "levelness" is obtained.

                                      Frederick

                                      Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

                                      undefined 1 Reply Last reply 24 Dec 2021, 21:51 Reply Quote 1
                                      • undefined
                                        austinious @fcwilt
                                        last edited by 24 Dec 2021, 21:51

                                        @fcwilt I remove those statements and turns out I had the XY's not lined up with the z drivers and now it works great The only problem I'm having now and I was going to spend tomorrow messing with it is that my first test print the z-axis everything leveled at home that's wonderful but then it was 5 mm away from the bed so I'm sure I've got it some adjustments to do

                                        1 Reply Last reply Reply Quote 1
                                        • First post
                                          Last post
                                        Unless otherwise noted, all forum content is licensed under CC-BY-SA