Get an error message from 3.4.b41 on D3 w. Pi4:
M997 S4
Error: M997: Invalid module number '4'
Get an error message from 3.4.b41 on D3 w. Pi4:
M997 S4
Error: M997: Invalid module number '4'
Same here. Goes back to last printing position and stops there.
@dc42 Thank you, this was the right question.
Ideamaker is setting the E value to 822s/mm and writes this at the beginning of the code.
That was the reason, why this issue came up.
Thanks again and I guess, the solution is found.
@dc42 I guess, this tread is full of all related logs and describes the issue in detail. Still I understand, it's a pain to go thru the logs.
@JoergS5 That would make sense and I will give it a try. Stii the change will be a bag of hurt to get the order of the z drives and the related measurements for ABL right.
Thank you very much for your help! I will report, how this turns out.
@JoergS5 Thank you for your time and hints!
@JoergS5 Looks OK to me.
G29 S1 P"heightmap.csv" ; Load the height map from file and activate bed compensation.
G90 ; use absolute coordinates
M83 ; extruder relative mode
M98 P"0:/sys/G828.g" ; home if not homed
M98 P"0:/sys/G832.g" ; if not already leveled, level bed and re-home Z
; prime nozzle
G1 X0 Y0 F99999.0 ; Go home
G1 Z0.15 ; lower extruder
G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position
G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line
G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little
G1 X3 Y20 Z0.4 F1500.0 E30 ; draw 2nd line
G92 E0.0
And the two calls look clean, too:
; G828.g
; Conditional variant of G28 home command.
; Homes all axes if not already homed.
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
G28
; G832.g
; Conditional variant of G32 bed command.
; Perform bed leveling if not already leveled.
if move.calibration.numFactors == 0 ; if leveling has not yet been performed...
G32 ; level bed
G28 Z ; re-home Z
else
echo "Bed already leveled. Skipping..."
@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.
@JoergS5 Did this in the beginning of the test already. I cleared the content of it and omitted the loading in config.g.
@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 axisfirmware 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.
@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.
@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,
@droftarts Thank you Ian. Is there any specific motor you would recommend for this application?
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.
@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.
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.
@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)
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:
I hope, this helps to find or explain the topic.
@deckingman
Thank you. This is exactly where I started and I followed your guideline and the description of M350 and M92. Non of this worked which I assume there is a bug.
I did 100mm testing with all the settings and got exactly 100mm filament thru the extruder. Just not during printing, where there is a very obviously under extrusion happening.