M592 - Non-Linear Extrusion Comp - Cant get it to work...
-
Thanks in advance!
My 3d printer uses a Titan extruder and a standard brass nozzle.
I was performing some flow-underextrusion testing and found that the Titan Extruder has a very linear slip based on extrusion speed.mm/s UnderExtrusion
1 0%
2 -3%
3 -3%
4 -7%
5 -11%
6 -15%
7 -18%
8 -21%I learned about M592, did some calculations and want to add an "A" coefficient value of 4.44%.
I added "M592 D0 A0.0444 B0 L1" to my configuration file, as seen below.Every time that i power cycle and attempt to do additional Flow-UnderExtrusion testing, i get the same results as before i added M592.
Am i using the wrong extruder number in M592? or is there some additional things needed to activate M592?I have also upgraded to Firmware V3.4.6
; Configuration file for Duet WiFi (firmware version 1.21) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2 on Tue Feb 26 2019 21:31:01 GMT+0000 (Greenwich Mean Time) ; General preferences G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Delta Settings M665 L440.380 R227.19 H453.864 B185.0 X-0.61 y-0.41 z0 ; Set delta radius, diagonal rod length, printable radius and homed height M666 X-0.18 Y1.63 Z-1.46 A1.09 B-0.61 ; Put your endstop adjustments here, or let auto calibration find them ;M665 L440.380 R226.821 H460 B185.0 X0 y0 z0 ; Set delta radius, diagonal rod length, printable radius and homed height ;M666 X0 y0 z0 A0.00 B0.00 ; Put your endstop adjustments here, or let auto calibration find them ; Network M550 P"Anycubic Predator" ; Set machine name M551 P"" ; 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 M552 s1 ; Enable Wifi Automatically ; Drives M569 P0 S0 ; Drive X goes backwards M569 P1 S0 ; Drive Y goes backwards M569 P2 S0 ; Drive Z goes backwards M569 P3 S1 ; Drive Extruder forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation M92 X80.00 Y80.00 Z80.00 E406 ; Set steps per mm M566 X600 Y600 Z600 E800 ; Set maximum instantaneous speed changes (mm/min) M203 X7200.00 Y7200.00 Z7200.00 E420 I0.5 ; Set maximum speeds (mm/min) M201 X4000.00 Y4000.00 Z4000.00 E4000.00 ; Set accelerations (mm/s^2) M906 X1200.00 Y1200.00 Z1200.00 E1200.00 I70 ; Set motor currents (mA) and motor idle factor in per cent M592 D0 A0.0444 B0 L1 ; NonLinear Extrusion Compensation - Titan extruder has a linear slip based on extrusion speed. M84 S30 ; Set idle timeout ; Retraction ;M207 S2.5 F7000 R0.1 T2500 Z0.5 ; Firmware retraction ; Axis Limits M208 Z0 S1 ; Set minimum Z ; Endstops M574 X2 S1 P"xstop" ; configure active-high endstop for high end on X via pin xstop M574 Y2 S1 P"ystop" ; configure active-high endstop for high end on Y via pin ystop M574 Z2 S1 P"zstop" ; configure active-high endstop for high end on Z via pin zstop ; Z-Probe M558 P5 C"e0stop" H8 F120 T2400 R0.2 S0.02 A5 ; Set Z probe type to switch and the dive height + speeds G31 P100 X0 Y0 Z18.35 ; Set Z probe trigger value, offset and trigger height ; Bed Heater M308 S0 A"Heated Bed" P"bedtemp" Y"thermistor" T100000 B4300 C0 R4700 ; Set thermistor + ADC parameters for heater 0 M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 A137.8 C533.3 D1.5 V24.3 B0 ; Disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; Map Bed Heater to Heater0 M143 H0 S120 ; Set temperature limit for heater 0 to 120C ; Extruder Heater M308 S1 A"Extruder" P"e0temp" Y"thermistor" T100000 B4300 C0 R4700 ;Set thermistor + ADC parameters for Hetater 1 M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 ;M305 P1 X200 ; Set thermistor + ADC parameters for heater 1 M307 H1 R2.113 C92.0 D10.07 S1.00 V24.7 ; Disable bang-bang mode for the bed heater and set PWM limit M143 H1 S260 ; Set temperature limit for heater 1 to 240C ;Heated Chamber M308 S2 A"Chamber" P"e1temp" Y"thermistor" T10000 B4950 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create chamber heater output on e1heat and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for the chamber heater and set PWM limit M141 H2 ; map chamber to heater 2 M143 H2 S100 ; set temperature limit for heater 2 to 100C ; E-Stop Buttom M950 J1 C"e1stop" ; Configures pin input M581 P1 T0 C0 ; Configure EStop to trigger on Rising Edge All of the time. ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 ; 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 ; Automatic saving after power loss is not enabled ; Custom settings are not configured ;M591 D0 P2 C4 S1 ; Activate filament sensor M404 N1.75 ; Set for print monitor M575 P1 B57600 S1 ; Paneldue baud rate ; Mesh Compensation G29 S1 ; Enable Mesh Compensation by Default M376 H25 ; Set Taper Compensation Height. M557 R180 S20 ; Define mesh grid ; Miscellaneous M501 ; Load saved parameters from non-volatile memory
-
@FurbyDealer27 said in M592 - Non-Linear Extrusion Comp - Cant get it to work...:
; Miscellaneous
M501 ; Load saved parameters from non-volatile memoryI guess you have an M592 in your config-override.g which is called via M501 at the end of your config.
; Miscellaneous M501 ; Load saved parameters from non-volatile memory
-
@FurbyDealer27 How are you doing the under extrusion testing?
-
@FurbyDealer27 Can you check if M592 is configured after a reset? Send
M592 D0
in the console. I just tried this, with your M592 command right at the beginning of the config.g, and it responded with the correct extrusion compensation, so position in the config.g file doesn't matter. I didn't actually run any extrusion test to see if it is compensating, though. I'm also using RRF 3.5.0-rc1, rather than 3.4.6.If it is configured after reset, but not once you start extruding, ie send M592 D0 while extruding to check if it is still active, please check your gcode to see if it is being reset. Check your config.g is not reporting errors by sending
M98 P'config.g'
too.@timschneider As far as I'm aware, M592 is not saved in config-override.g with M500.
Ian
-
The reason I asked about the test methodology was that from the documentation we have .............."Nonlinear extrusion is not applied to extruder-only movements such as retractions and filament loading".
So unless the extrusion move also corresponds with an X and/or Y carriage move, extrusion compensation isn't going to do anything.
-
Fantastic question. I am using CNCKitchen's Blob Test.
I had to modify an excel sheet i found online to make it work for a delta printer, but i am moving up 10mm while extruding 200 mm of filament.
Example: G1 Z10.5 E200 F12.473
This makes me wonder if a Z axis movement is not enough to activate the compensation....
-
@FurbyDealer27 said in M592 - Non-Linear Extrusion Comp - Cant get it to work...:
............................This makes me wonder if a Z axis movement is not enough to activate the compensation....
Highly likely I'd have thought, but only a moderator or someone who can dive into the code could confirm.
-
I checked my Config-override.g and i do not call M592 (only in my config.g)
When i request "M592 D0" in the console, i get a return of "Drive 0 nonlinear extrusion coefficients: A=0.044, B=0.0000, limit=1.00".
Thanks for the asking me to check that.
-
@FurbyDealer27 I've asked @dc42 to have a look at this.
Ian
-
@droftarts
yep, you are right about the M500 - i thought that he maybe added it manually.@FurbyDealer27
it looks like the non-linear-compensation is only active for printing moves, which are defined as XY and E+ moves.if (Tool::GetXAxes(nextMove.tool).IsBitSet(drive) || Tool::GetYAxes(nextMove.tool).IsBitSet(drive)) { flags.xyMoving = true; // this move has XY movement in user space, before axis were mapped } flags.isPrintingMove = flags.xyMoving && forwardExtruding; // Add the nonlinear extrusion correction to totalExtrusion. // If we are given a stupidly short move to execute then clocksNeeded can be zero, which leads to NaNs in this code; so we need to guard against that. if (flags.isPrintingMove && clocksNeeded != 0) { ...
-
@FurbyDealer27 said in M592 - Non-Linear Extrusion Comp - Cant get it to work...:
I checked my Config-override.g and i do not call M592 (only in my config.g)
When i request "M592 D0" in the console, i get a return of "Drive 0 nonlinear extrusion coefficients: A=0.044, B=0.0000, limit=1.00".
Thanks for the asking me to check that.
It was the other Ian (@droftarts ) who asked you to do those checks - confusing I know.
-
Thank you everyone!!!
I changed the Blob test to extrude 200mm of filament while moving 30mm on the X axis. This now makes amazing looking weld beads.
I can confirm that this fixed my issue. The M592 compensation does require an XY movement.
Looks like i can push a crappy hotend and a Titan Extruder to around 10 mm3/s.
Thanks everyone for your help!, I really appreciate the immediate responses and feedback. -
@FurbyDealer27 said in M592 - Non-Linear Extrusion Comp - Cant get it to work...:
Fantastic question. I am using CNCKitchen's Blob Test.
I had to modify an excel sheet i found online to make it work for a delta printer
Would you be willing to share the modified sheet, or just explain what needed to be changed? I run a delta and this is testing I need to do
(EDIT: actually, scratch that, I figured out quickly what needs modding and I'm already done. It didn't have a round bed mode, mainly.)