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

    Impossible to set extruder micro stepping above 16ms

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    8
    39
    1.6k
    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.
    • observatoerundefined
      observatoer @droftarts
      last edited by

      @droftarts Thanks again for your help in solving this challenge.

      I did some tests, where I stated with the config.g values for stepping:
      M92 X200 Y200 Z3200 E822
      M350 E16 X32 Y32 Z16 E16 I1
      M906 E500
      The system voltage is set to 29.6V @LRS-350-24.

      Then, I did some changes with M350 to see the results. Right in the beginning, I changed the Extruder from E16 to M350 E8. The result was not right because it was not 411 but 205.500.
      The print started and did go on with a under extrusion. The layer height was just 0.10-0.11 instead of 0.2mm.

      I got an under extrusion just from the start even so the values in the config.g are correct.

      Here is a photo of the print (please ignore the abused Fight Club print surface)
      RCG8725 - 1 (1).jpeg

      Here the log of the print with the changes and the feedback of the Duet3:

      28.8.2020, 10:46:47 Printing paused at X217.4 Y41.2 Z0.4
      28.8.2020, 10:46:47 Printing paused at X217.4 Y41.2 Z0.4
      28.8.2020, 10:45:40 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000
      28.8.2020, 10:45:36 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:16
      28.8.2020, 10:45:34 M350 E16
      28.8.2020, 10:45:20 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 3288.000
      28.8.2020, 10:45:15 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:64
      28.8.2020, 10:45:14 M350 E64
      28.8.2020, 10:44:46 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 1644.000
      28.8.2020, 10:44:41 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:32
      28.8.2020, 10:44:38 M350 E32
      28.8.2020, 10:44:09 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:16 <<<<<<< correct layer hight and correct adjustment of microsteps and steps/mm. Layer = 0.2mm
      28.8.2020, 10:44:03 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000 <<<<<<< Until here, the layer hight was just 0.10-0.11 instead of the gcode value of 0.2mm
      28.8.2020, 10:43:59 M92 E822
      28.8.2020, 10:43:15 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 411.000
      28.8.2020, 10:43:10 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:16
      28.8.2020, 10:43:04 M350 E16
      28.8.2020, 10:42:37 M906
      Motor current (mA) - X:1900, Y:1900, Z:1600, E:800, idle factor 20%
      28.8.2020, 10:42:34 M906 E800
      28.8.2020, 10:41:56 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 6576.000
      28.8.2020, 10:41:51 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:256
      28.8.2020, 10:41:48 M350 E256
      28.8.2020, 10:40:38 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000
      28.8.2020, 10:40:34 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:32
      28.8.2020, 10:40:25 M350 E32
      28.8.2020, 10:39:46 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 3288.000
      28.8.2020, 10:39:40 M350 E128
      28.8.2020, 10:39:09 M906
      Motor current (mA) - X:1900, Y:1900, Z:1600, E:450, idle factor 20%
      28.8.2020, 10:39:06 M906 E450
      28.8.2020, 10:37:50 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 1644.000
      28.8.2020, 10:37:43 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:64
      28.8.2020, 10:37:37 M350 E64
      28.8.2020, 10:36:36 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000
      28.8.2020, 10:36:29 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:32
      28.8.2020, 10:36:26 M350 E32
      28.8.2020, 10:36:11 M350
      Microstepping - X:32(on), Y:32(on), Z:16(on), E:16
      28.8.2020, 10:36:06 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 411.000
      28.8.2020, 10:35:23 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 411.000
      28.8.2020, 10:35:19 M)2
      Error: Failed to parse major M-code number ()2)
      28.8.2020, 10:35:13 M350 E16
      28.8.2020, 10:34:47 M906
      Motor current (mA) - X:1900, Y:1900, Z:1600, E:500, idle factor 20%
      28.8.2020, 10:34:42 M906 E500
      28.8.2020, 10:33:09 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 205.500 <<<<<<Here, the stepping was changed from initial E16 to E8, but the steps have been divided by 4 instead of 2 <<<<<<
      28.8.2020, 10:33:00 M350 E8
      28.8.2020, 10:30:36 M92
      Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000

      28.8.2020, 10:29:04 Leadscrew adjustments made: -0.050 0.125 0.229, points used 4, (mean, deviation) before (0.135, 0.154) after (-0.000, 0.107)
      28.8.2020, 10:29:04 Height map loaded from file heightmap.csv
      28.8.2020, 10:29:04 Warning: The height map was loaded when the current Z=0 datum was not determined. This may result in a height offset.
      28.8.2020, 10:27:13 M32 "0:/gcodes/Extrusion_test_CoreXY_PLA_0.2000mm.gcode"
      File 0:/gcodes/Extrusion_test_CoreXY_PETG_0.2000mm.gcode selected for printing
      28.8.2020, 10:22:42 Upload of Extrusion_test_CoreXY_PLA_0.2000mm.gcode successful after 0s*

      Config.g started with these values:

      M92 X200 Y200 Z3200 E822
      M350 E16 X32 Y32 Z16 E16 I1

      Basically, I see two issues:

      • The start extrusion is not right, even so the parameters are correct.
      • The first calculation by changing with M350 is wrong.

      I hope, this helps to find or explain the topic.

      observatoerundefined 1 Reply Last reply Reply Quote 0
      • observatoerundefined
        observatoer @observatoer
        last edited by observatoer

        Another interesting thing:

        If I have a config.g with this values:

        M92 X200 Y200 Z3200 E822
        M350 E16 X32 Y32 Z16 E32 I1

        ..and I switch of and on the machine, I get this in the console:

        28.8.2020, 12:07:28 M92
        Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000
        28.8.2020, 12:07:22 M350
        Microstepping - X:32(on), Y:32(on), Z:16(on), E:16(on) <<<<E16 instead of E32 <<<<

        Look like the steps/mm are correct calculated for X, Y and Z, but not for E.

        Checked the config.g for other instances of M92/M350 but there are non. The above ones are the only ones.

        engikeneerundefined 1 Reply Last reply Reply Quote 0
        • engikeneerundefined
          engikeneer @observatoer
          last edited by

          @observatoer you have two E entries in that config line. There's and E16 at the start, then an E32 at the end

          @observatoer said in Impossible to set extruder micro stepping above 16ms:

          M350 E16 X32 Y32 Z16 E32 I1

          I wonder if this could be the source of your issues?

          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

          observatoerundefined 1 Reply Last reply Reply Quote 0
          • observatoerundefined
            observatoer @engikeneer
            last edited by

            @engikeneer Thanks for pointing it out. It was a mistake, introduced by me with this test. To reconfirm, I have done the test again and started with E32 in M92.

            Here is the console log of my changes during the print:

            28.8.2020, 14:12:56 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 1644.000
            28.8.2020, 14:12:52 M350
            Microstepping - X:32(on), Y:32(on), Z:16(on), E:32
            28.8.2020, 14:12:49 M350 E32
            28.8.2020, 14:12:29 M350
            Microstepping - X:32(on), Y:32(on), Z:16(on), E:16
            28.8.2020, 14:12:22 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000 >>>>> correcting the steps healed the under extrusion. Normal layer from here
            28.8.2020, 14:12:15 M92 E822
            28.8.2020, 14:12:05 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 411.000
            28.8.2020, 14:11:59 M350
            Microstepping - X:32(on), Y:32(on), Z:16(on), E:16
            28.8.2020, 14:11:15 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 411.000
            28.8.2020, 14:11:10 M350 E16
            28.8.2020, 14:10:08 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 1644.000
            28.8.2020, 14:10:03 M350 E64
            28.8.2020, 14:09:28 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000
            28.8.2020, 14:09:24 M350
            Microstepping - X:32(on), Y:32(on), Z:16(on), E:32
            28.8.2020, 14:09:20 M350 E32
            28.8.2020, 14:08:48 M92
            Steps/mm: X: 400.000, Y: 400.000, Z: 3200.000, E: 822.000 >>>>undee extrusion from start
            28.8.2020, 14:08:42 M350
            Microstepping - X:32(on), Y:32(on), Z:16(on), E:32(on)

            <<<<< startet with this config.g
            M92 X200 Y200 Z3200 E822
            M350 X32 Y32 Z16 E32 I1

            28.8.2020, 14:07:33 Leadscrew adjustments made: 0.148 0.125 0.051, points used 4, (mean, deviation) before (0.096, 0.035) after (-0.000, 0.005)
            28.8.2020, 14:07:33 Height map loaded from file heightmap.csv
            28.8.2020, 14:05:26 M32 "0:/gcodes/Extrusion_test_CoreXY_PLA_0.2000mm.gcode"
            File 0:/gcodes/Extrusion_test_CoreXY_PLA_0.2000mm.gcode selected for printing

            Same wrong start and miscalculation for E.

            droftartsundefined 1 Reply Last reply Reply Quote 0
            • droftartsundefined
              droftarts administrators @observatoer
              last edited by

              @observatoer I don’t see any incorrect calculation. You said you started with M350 E32 and M92 E811. It should have been M350 E16, with E811 steps per mm. So it’s not surprising it underextruded, which you eventually correct with M92.

              Do you really need more extruder resolution than 811 steps per mm, at 16x microstepping?! Like you’ve already found out, your motor can’t handle it at the speeds you print.

              Ian

              Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

              observatoerundefined 1 Reply Last reply Reply Quote 0
              • observatoerundefined
                observatoer @droftarts
                last edited by

                @droftarts

                I understand, if I setup E to 32 and ask by M350, to get the correct steps/mm wich would be in this case 1644. But, it is giving me 822 which is wrong for E32. And I get under extrusion.
                Interesting for me, the values for X, Y and Z are calculated and displayed correct for X32, Y32 and Z16. Just not for E.

                The stepper can handle up to 256 micro steps and reports the astronomic step count correctly, if I correct the initially wrong handled E value. No under extrusion. Just questionable, if it's really extruding wis 256 micro steps or just reporting a value.

                droftartsundefined 1 Reply Last reply Reply Quote 0
                • droftartsundefined
                  droftarts administrators @observatoer
                  last edited by

                  @observatoer

                  <<<<< startet with this config.g
                  M92 X200 Y200 Z3200 E822
                  M350 X32 Y32 Z16 E32 I1

                  This is what you said it is set to in config.g. If you send M350 E32, nothing has changed, so steps per mm are still 822. When you sent M350 E64, the steps per mm were correctly doubled. This isn’t the firmware getting it wrong!

                  The stepper can handle up to 256 micro steps

                  Of course it can. At slower step rates. But microstepping beyond 16x is, in general, pointless. The spec sheet for your motor says the step accuracy is 9 degrees +/- 5% which is pretty standard. That means that there’s a 10% swing in accuracy at FULL step. It’s why Gecko drives only use 10x microstepping; you won’t get any more accuracy from the motor by increasing microstepping. However, using interpolation is worth it, as the driver can smooth the transition between steps.

                  and reports the astronomic step count correctly

                  Do you mean the Duet reports the step count? The motor definitely doesn’t.

                  If you send M122 while printing, you can see if the motor is skipping steps. Look at the ‘Driver’ lines, eg:

                  
                  Driver 0: standstill, reads 37420, writes 12 timeouts 0, SG min/max 0/0
                  Driver 1: standstill, reads 37422, writes 11 timeouts 0, SG min/max 0/0
                  Driver 2: standstill, reads 37422, writes 11 timeouts 0, SG min/max 0/0
                  Driver 3: standstill, reads 37422, writes 11 timeouts 0, SG min/max 0/0
                  Driver 4: standstill, reads 37423, writes 11 timeouts 0, SG min/max 0/0
                  Driver 5: standstill, reads 37423, writes 11 timeouts 0, SG min/max 0/0
                  

                  The ‘SG min/max’ shows the minimum and maximum torque on the motor. If ‘max’ is 1023, the motor has stalled/skipped steps.

                  The issue here is that you have a pancake stepper as an extruder motor, with high inductance, that cannot step fast enough for the speed you want to print at, when you increase the E steps per mm. Get a more appropriate motor if you want to use high step rate and fast speed.

                  Ian

                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                  observatoerundefined 1 Reply Last reply Reply Quote 0
                  • observatoerundefined
                    observatoer @droftarts
                    last edited by

                    @droftarts Thank you Ian. Is there any specific motor you would recommend for this application?

                    droftartsundefined 1 Reply Last reply Reply Quote 0
                    • droftartsundefined
                      droftarts administrators @observatoer
                      last edited by

                      @observatoer I don’t really know what you’re trying to achieve. Faster speeds? On an extruder there’s many other limitations, eg how quick you can melt filament. Higher accuracy, ie more steps per mm? Gearing down the extruder would be a better bet than increasing microstepping for the reason I said above, but you may lose high speed. Both? Good luck!

                      Ian

                      Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                      observatoerundefined 1 Reply Last reply Reply Quote 0
                      • observatoerundefined
                        observatoer @droftarts
                        last edited by

                        @droftarts In the first place, I would really like to understand the behaviour of this software. Not more and not less.
                        As per description, if I set the M92 line for the correct steps at 16 micro step, I can change the steps/mm by typing M350 plus the command and value for X, Y, Z and E.
                        This is what I have done with this line:

                        M92 X200 Y200 Z3200 E822

                        These are the correct steps for a rate of 16 micro steps.

                        The next line in config.g is this:

                        M350 X32 Y32 Z16 E32 I1

                        I understand, the M350 command adapts step rates other than the baseline 16 in M92 to the mentioned values.

                        If I then type M92, I shall get the new calculated values for X, Y Z and E. Correct?

                        Why do I get the correct new M92 value vor X(=400@32), Y(=400@32) and Z(=3200@16) and an wrong Value of E. It shall be E1644 (for the requested 32) and is reported as E844.
                        Is there a difference, why these values are reported like this?

                        And regarding the stepper; I did reduce the current to 500mAh but this did not change anything regarding the above mentioned behaviour. Sorry, if I cannot describe it any better,

                        droftartsundefined 1 Reply Last reply Reply Quote 0
                        • droftartsundefined
                          droftarts administrators @observatoer
                          last edited by droftarts

                          @observatoer right, I see where the problem is. If you set M92 and M350 in config.g, that’s the values used. Even if M350 is after M92, the M92 definition is not assumed to be at 16x microstepping. It would be strange to explicitly set something in the config.g, and for the firmware to then alter it. If you exclude M350 from config, or the E parameter, I would expect it defaults to 16x.

                          Any subsequent M350 changes M92. I appreciate this is not clear in the Gcode entries for M92 and M350.

                          Edit: the configuration tool puts M350 in config.g before M92. Though I think the order doesn’t matter in confi.g.

                          Ian

                          Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                          observatoerundefined 1 Reply Last reply Reply Quote 0
                          • observatoerundefined
                            observatoer @droftarts
                            last edited by observatoer

                            @droftarts OK. I refer to https://duet3d.dozuki.com/Wiki/Gcode#Section_M350_Set_microstepping_mode

                            and this description:

                            When M350 is processed, the steps/mm will be adjusted automatically to allow for any changes in microstepping. Therefore you can either:

                            a) Set Steps/mm correctly for the default 1/16 microstepping, then set the microstepping to the desired amount using M350:

                            M92 X80 Y80 Z400 ; set axis steps/mm
                            M92 E420:430 ; set extruder 0 and 1 steps/mm
                            M350 X128 Y128 Z128 E128:128 ; set microstepping
                            or

                            b) Set the microstepping using M350 and then set the correct steps/mm for that microstepping amount:

                            M350 X128 Y128 Z128 E128:128 ; set microstepping
                            M92 X640 Y640 Z3200 ; set axis steps/mm @128 microstepping
                            M92 E3360:3440 ; set extruder 0 and 1 steps/mm
                            Assuming that in the first example the microstepping was initially at the default x16, both the above examples result in the same steps/mm settings.

                            Could you suggest me the two lines for M350 and M92 who will work?

                            Edit: I have now played with every thinkable combination and variation of microsteppings. One common thing happens:

                            Regardless of any previous setting (verified in the console), as soon as the print starts, the steps/mm for the extruder are reset to 822.
                            All other steppers keep the right values as defined.

                            PS: I got the hint regarding the adjustment of the micro stepping from dc42 posting in this forum.

                            1 Reply Last reply Reply Quote 0
                            • Phaedruxundefined
                              Phaedrux Moderator
                              last edited by

                              Here's how I do it to keep it simple

                              M350 X16 Y16 Z16 E16 I1; set x16 microstepping with interpolation
                              M92 X80 Y80 Z400 E411 ; steps per mm set as if for x16 microstepping
                              M350 E64 ; alter microstepping for E axis

                              firmware now correctly calculates the new steps per mm required.

                              The key is to set everything for x16 first and don't change your M92, just have it set to work with x16. Then you can modify the microstepping after and it will correctly calculate.

                              Z-Bot CoreXY Build | Thingiverse Profile

                              fcwiltundefined observatoerundefined 2 Replies Last reply Reply Quote 0
                              • fcwiltundefined
                                fcwilt @Phaedrux
                                last edited by

                                @Phaedrux said in Impossible to set extruder micro stepping above 16ms:

                                M350 X16 Y16 Z16 E16 I1; set x16 microstepping with interpolation
                                M92 X80 Y80 Z400 E411 ; steps per mm set as if for x16 microstepping
                                M350 E64 ; alter microstepping for E axis

                                That matches the documentation with the exception that the docs say that x16 is the default so the first M350 should not be needed.

                                Are the docs in need of a correction?

                                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
                                • observatoerundefined
                                  observatoer @Phaedrux
                                  last edited by

                                  @Phaedrux said in Impossible to set extruder micro stepping above 16ms:

                                  Here's how I do it to keep it simple

                                  M350 X16 Y16 Z16 E16 I1; set x16 microstepping with interpolation
                                  M92 X80 Y80 Z400 E411 ; steps per mm set as if for x16 microstepping
                                  M350 E64 ; alter microstepping for E axis

                                  firmware now correctly calculates the new steps per mm required.

                                  The key is to set everything for x16 first and don't change your M92, just have it set to work with x16. Then you can modify the microstepping after and it will correctly calculate.

                                  I did exactly this and the machine reported exactly these values back which is correct. BUT, as soon as I start a print job, ONLY the value for the extruder E is reset to the 16 micro stepping value!
                                  I checked all possible macros who could alter the setting during start, but non of them includes M350 or M92 values.

                                  Something is definitely not working on my machine. I have changed the stepper already but as you see, same issue. I have also made a new sd card for the PI and did the latest test with these sw. I'm hesitant to build new config files at the moment.

                                  Still same status: This new setting is not working properly on my machine.

                                  JoergS5undefined 1 Reply Last reply Reply Quote 0
                                  • JoergS5undefined
                                    JoergS5 @observatoer
                                    last edited by

                                    @observatoer can you please check config-override.g and the start codes of the printed g-code file, maybe they are changing the E setting. Do the startup macros include M501 maybe?

                                    observatoerundefined 1 Reply Last reply Reply Quote 0
                                    • observatoerundefined
                                      observatoer @JoergS5
                                      last edited by

                                      @JoergS5 Did this in the beginning of the test already. I cleared the content of it and omitted the loading in config.g.

                                      JoergS5undefined 1 Reply Last reply Reply Quote 0
                                      • JoergS5undefined
                                        JoergS5 @observatoer
                                        last edited by JoergS5

                                        @observatoer you seem to use IdeaMaker, is there something in the startup code which could change E?
                                        https://forum.raise3d.com/viewtopic.php?t=12893
                                        https://support.raise3d.com/ideaMaker/5-1-3-13-gcode-15-445.html
                                        especially the "Extruder Switch GCode tab". Lot of places to change something...

                                        observatoerundefined 1 Reply Last reply Reply Quote 0
                                        • observatoerundefined
                                          observatoer @JoergS5
                                          last edited by observatoer

                                          @JoergS5 Thanks for the hint, but I have removed all the default settings in Ideamaker from the start code and call a start macro on the duet3. This is all that remains:

                                          M98 P"0:/sys/print/start.g" ; call start.g

                                          M290 R0 S0 ;reset babystepping
                                          M290 S-0.05 ; set babystepping height delta

                                          M572 D0 S0.025 ;set pressure advance

                                          And nothing in the extruder level. Totally empty.

                                          JoergS5undefined 1 Reply Last reply Reply Quote 0
                                          • JoergS5undefined
                                            JoergS5 @observatoer
                                            last edited by

                                            @observatoer next I would check content of start.g and if babystepping or pressue advance change the E by disabling them.

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