3.5.0rc1: Input shaping causes layer shifts!?
-
@dc42 thanks! I might only be able to do that the coming weekend, but I definitely will as soon as I can!
-
Made test print with your rc2+ firmware. Layer shifted at 16,05mm
I didn't get M122 directly after layer shift, I did it when I disovered it.
M122 toolhead
M122 B121 Diagnostics for board 121: Duet TOOL1LC rev 1.1 or later firmware version 3.5.0-rc.2 (2023-12-14 08:58:51) Bootloader ID: SAMC21 bootloader version 2.8 (2023-07-25) All averaging filters OK Never used RAM 2672, free system stack 89 words Tasks: Move(3,nWait,1.6%,71) HEAT(2,nWait,6.4%,91) CanAsync(5,nWait,0.0%,54) CanRecv(3,nWait,0.6%,77) CanClock(5,nWait,0.4%,67) ACCEL(3,nWait,0.0%,17) TMC(2,nWait,61.9%,57) MAIN(1,running,86.2%,316) IDLE(0,ready,0.0%,27) AIN(2,delaying,92.7%,114), total 249.8% Last reset 21:44:27 ago, cause: software Last software reset time unknown, reason: OutOfMemory, available RAM 16088, slot 0 Software reset code 0x01c0 ICSR 0x00000000 SP 0x20002770 Task MAIN Freestk 784 ok Stack: 00004000 00005e8b 00004000 000041cf a5a5a5a5 00004000 a5a5a5a5 a5a5a5a5 a5a5a5a5 0001d199 a5a5a5a5 0001d1b5 a5a5a5a5 00005a4f a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 Driver 0: pos 0, 617.6 steps/mm, ok, SG min 0, read errors 2, write errors 1, ifcnt 144, reads 54569, writes 16, timeouts 140, DMA errors 0, CC errors 0, failedOp 0x71, steps req 0 done 15440450 Moves scheduled 261208, completed 261207, in progress 1, hiccups 4282, segs 40, step errors 0, maxLate 1 maxPrep 564, maxOverdue 5374, maxInc 2158, mcErrs 0, gcmErrs 0, ebfmin -1.00 max 1.00 Peak sync jitter -6/8, peak Rx sync delay 260, resyncs 0/0, no timer interrupt scheduled VIN voltage: min 24.2, current 24.4, max 29.8 MCU temperature: min 28.9C, current 75.1C, max 75.2C Last sensors broadcast 0x00001002 found 2 241 ticks ago, 0 ordering errs, loop time 0 CAN messages queued 1568794, send timeouts 6, received 969293, lost 0, errs 34187, boc 0, free buffers 18, min 17, error reg 110000 Last cancelled message type 4525 dest 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 420, adv 35575/74660 Accelerometer: LIS3DH, status: 00 Inductive sensor: not found I2C bus errors 0, naks 6, contentions 0, other errors 0
M122 Mainboard
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.0-rc.2+ (2024-01-15 11:56:10) running on Duet 3 Mini5plus Ethernet (standalone mode) Board ID: KHLQ8-GU8LU-F65J0-409N2-1313Z-H6T1G Used output buffers: 8 of 40 (32 max) === RTOS === Static ram: 103168 Dynamic ram: 116132 of which 16 recycled Never used RAM 18404, free system stack 128 words Tasks: NETWORK(1,ready,23.0%,173) ETHERNET(5,nWait 7,0.2%,569) HEAT(3,nWait 6,0.7%,326) Move(4,nWait 6,6.8%,241) CanReceiv(6,nWait 1,1.0%,774) CanSender(5,nWait 7,0.2%,327) CanClock(7,delaying,0.1%,348) TMC(4,nWait 6,15.4%,66) MAIN(1,running,35.8%,667) IDLE(0,ready,0.0%,30) AIN(4,delaying,16.6%,256), total 100.0% Owned mutexes: === Platform === Last reset 21:45:00 ago, cause: software Last software reset at 2024-01-15 21:55, reason: User, Gcodes spinning, available RAM 27976, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 78301312, completed 78301310, timed out 0, errs 0 MCU temperature: min 17.7, current 33.9, max 34.4 Supply voltage: min 23.7, current 23.8, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/3, heap memory allocated/used/recyclable 2048/1296/1220, gc cycles 0 Events: 1 queued, 1 completed Driver 0: ok, SG min 0, read errors 0, write errors 1, ifcnt 196, reads 57358, writes 25, timeouts 0, DMA errors 0, CC errors 0 Driver 1: ok, SG min 0, read errors 0, write errors 1, ifcnt 196, reads 57358, writes 25, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 0, write errors 1, ifcnt 39, reads 57352, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 1, ifcnt 38, reads 57352, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 37, reads 57353, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2024-01-16 19:51:08 Cache data hit count 4294967295 Slowest loop: 258.21ms; fastest: 0.11ms === Storage === Free file entries: 18 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 4.8ms, write time 10.9ms, max retries 0 === Move === DMs created 83, segments created 35, maxWait 68167851ms, bed compensation in use: none, height map offset 0.000, max steps late 1, ebfmin 0.00, ebfmax 0.00 next step interrupt due in 35 ticks, enabled Moves shaped first try 9805, on retry 12276, too short 53284, wrong shape 153332, maybepossible 8084 === DDARing 0 === Scheduled moves 281191, completed 281158, hiccups 0, stepErrors 0, LaErrors 211, Underruns [0, 0, 5], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters 9 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.5 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is doing "G1 X220.349 Y71.367 E.00382" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is doing "M0" in state(s) 0, sync state 1 Queue2 is idle in state(s) 0 Q0 segments left 1, axes/extruders owned 0x0000807 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 970855, received 1569669, lost 0, errs 1, boc 0 Longest wait 5ms for reply type 4014, peak Tx sync delay 420, free buffers 26 (min 24), ts 391502/391501/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 230.49ms; fastest: 0.03ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = Interface state: active Error counts: 0 0 9158 0 0 0 Socket states: 5 2 2 2 2 2 0 0
config.g
; Configuration file for Duet 3 Mini 5+ (firmware version 3.5) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Thu Nov 23 2023 20:11:54 GMT+0200 (Eastern European Standard Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"VT1011" ; set printer name M669 K1 ; select CoreXY mode ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network M552 P192.168.90.200 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P192.168.90.1 ; set gateway M586 P0 S1 ; enable HTTP M586 P1 S1 ; enable FTP M586 P2 S0 ; disable Telnet ; --- Drive map --- ; (While looking at the printer top down) ; 0.0-----0.1 ; | 0.2 | ; |-------| ; |0.3|0.4| ; ---+--- ; Front ; Drives for X & Y M569 P0.0 S1 D2 ; physical drive 0.0 goes forwards M569 P0.1 S1 D2 ; physical drive 0.1 goes forwards ; Drives for Z M569 P0.2 S0 D3 ; physical drive 0.2 goes backwards Stealthchop | Z1 M569 P0.3 S0 D3 ; physical drive 0.3 goes backwards Stealthchop | Z0 M569 P0.4 S0 D3 ; physical drive 0.4 goes backwards Stealthchop | Z2 ; Drive for Extruder M569 P121.0 S0 D2 ; physical drive 121.0 goes backwards ; Motor mapping and steps per mm M584 X0.0 Y0.1 Z0.3:0.2:0.4 E121.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160 Y160 Z800 ; set steps per mm M92 E617.6470588 ; galileo 2 steps per mm ; Drive currents M906 X1700 Y1700 Z1000 E700 I30 ; set motor currents (mA) and motor idle factor in per cent M84 X Y Z E0 S30 ; Set idle timeout ; Axis accelerations and speeds M566 X500 Y500 Z120 E300 P1 ; set maximum instantaneous speed changes (mm/min) M203 X18000 Y18000 Z900 E7200 ; set maximum speeds (mm/min) M201 X8000 Y8000.00 Z350 E2000 ; set accelerations (mm/s^2) ; Reduced accelerations ;M201.1 X500 Y500 Z80 E500 ; Set reduced acceleration for special move types (mm/s²) ; Printing and travel accelerations M204 P5000 T7000 ; Set printing acceleration and travel accelerations (mm/s²) ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minimal M208 X300 Y305 Z240 S0 ; set axis maximal ; Endstops M574 X2 S1 P"121.io1.in" ; configure sensorless endstop for high end on X M574 Y2 S1 P"io6.in" ; configure sensorless endstop for high end on Y ; Klicky M558 P8 C"^121.io2.in" T18000 F600:180 H2 A10 S0.01 ; set Z probe type to KLICKY and the dive height + speeds G31 P500 X0 Y28 Z4.80 ; 5,4 set Z probe trigger value, offset and trigger height(Z_offset - bigger number bed closer to nozzle) ; Bed leveling M671 X-50:150:350 Y18:348:18 S5 ; front left, back, front right M557 X15:285 Y30:285 P5 ; define grid for mesh bed compensation, bed mesh distance 83mm to get 4x4 square ; Accelerometer M955 P121.0 I10 ; Configure accelerometer M593 P"mzv" F25 S0.01 L0.15 ; disabled 3.5.0rc1 has layer shift issues when IS enabled ; Heaters ; Bed heater M308 S0 P"temp0" Y"thermistor" T100000 B4725 C7.06e-8 A"Bed" ; 4138 configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B0 S1.00 ; disable 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 M143 H0 A2 C0 S120 ; Make sure bed heater stays below 120C M143 H0 A1 C0 S125 ; Make sure bed heater shuts down at 125C ; Hodend heater M308 S1 P"121.temp0" Y"pt1000" A"Hotend" ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S350 ; set temperature limit for heater 1 to 350C ; Chamber heater M308 S9 P"temp1" Y"thermistor" A"Chamber" T100000 B4725 C7.06e-8 ; Chamber thermistor conf - ATC Semitec 104NT-4-R025H42G M950 H9 C"io5.in" Q1 T9 ; dummy port used M307 H9 B0 S1.00 M141 H9 ; fake chamber heater for reporting in DWC M143 H9 P0 S40 A2 M143 H9 P1 S60 ; Duet5+ mcu temp M308 S3 Y"mcu-temp" A"MCU" ; Configure sensor 2 as MCU temperature M912 P0 S-2.9 ; MCU temp calibration parameters ; toolhead temp M308 S12 Y"mcu-temp" P"121.dummy" A"1LC MCU" ; Fans ;Part cooling M950 F0 C"121.out1" ; create fan 0 on pin 121.out1 and set its frequency M106 P0 S0 H-1 C"Part Cooling" ; set fan 0 value. Thermostatic control is turned off ;Hotend fan M950 F1 C"121.out2" ; create fan 1 on pin 121.out2 and set its frequency M106 P1 S1 H1 T45 C"Hotend Fan" ; set fan 1 value. Thermostatic control is turned on ; Bed fan M950 F2 C"out3" ; create fan 2 on pin out3 and set its frequency M106 P2 C"BEDF_12V" S0 H-1 ; set fan 2 value. Thermostatic control is turned on ; Exhaust fan M950 F3 C"out6" ; create fan 3 on pin out6 and set its frequency M106 P3 C"EXHAUSTF" S0 B0.1 H9 T45 ; set fan 3 value. Thermostatic control is turned on ; Nevermore filter M950 F4 C"out5" ; create fan 4 on pin out5 and set its frequency M106 P4 C"FILTER" S0 B0.1 H0 T90 ; set fan 4 value. Thermostatic control is turned on ; Tools M563 P0 S"Mosquito Magnum" D0 H1 F0 ; 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 are not defined ; Miscellaneous M950 P0 C"out1" ; Create output Port0 attached to out1 connector for LED lights M501 ; load saved parameters from non-volatile memory T0 ; select first tool
Print file 3DBenchy-Voron-Trident-300-0.4-nozzle-1011-ABS-Orange-Polymaker.gcode
Active IS graph IS
-
@vaike_peeter do you have a spec sheet of your stepper drivers at hand?
-
Z-motors - LDO-42STH40-1684L300E
A and B(x,y) motors - LDO-42STH48-2004MAH
I already checked current if you think that.
-
@vaike_peeter with your .9 degree steppers you hit like 48kHz step rate per axis on CoreXY with 16x microstepping. You should get fine prints dropping down to 8x microstepping and giving more headroom for additional computation like IS.
There are some other considerations like maximum RPM and torque that you may be hitting with the 2004s. Check the back emf calculator and the TDS of your steppers for the physical stepper limits too. https://www.reprapfirmware.org/emf.html
-
@oliof
I will test this when I get back home -
FYI had something similar happen this night on a machine running just closed loop motors.
Just installed the RC2+ and will see if it happens again.
Already sent this to @dc42 directly as well. -
@dc42 just to make sure since I have no experience yet with the test firmware versions you provide: On my 6HC with no further addon electronics than the PanelDue (a clone, as already noted somewhere here in the forum, since the original PanelDue has too large footprint for this printer - I would have used the one I already own otherwise) and the Wifi module I just need to upload and install Duet3Firmware_MB6HC.bin - correct?
-
@NeoDue said in 3.5.0rc1: Input shaping causes layer shifts!?:
I just need to upload and install Duet3Firmware_MB6HC.bin - correct?
Correct!
Ian
-
@oliof That was really good hint. My test print came out without layer shift. Will continue testing but seems promising. Thank you.
Now X and Y motors are configured 8 microsteping with 80 steps per mm. -
@droftarts thanks! But I fear I need to report that did not work as intended at all - the last information I got from the DWC was that it was updating the board firmware... and now I am having a dead printer. I fear I need to work my way to the Duet in the printer and do a restore via USB this weekend instead of doing the test. Now where was the website explaining that process, it has been ages since I needed that...
-
@NeoDue Oh dear, sorry! Maybe your iap file was out of date?
USB firmware flashing: https://docs.duet3d.com/User_manual/RepRapFirmware/Updating_firmware
Ian
-
@droftarts The one that was in the Duet was suitable to update from 3.5.0 beta4 to rc1 and then to rc2. Do I need another one for the test version? There is none in the dropbox folder...
-
@NeoDue No, that was probably the latest. Looks like it hasn't been updated for a couple of years: https://github.com/Duet3D/DuetIAP
Sorry, not sure why your update failed. Is the DIAG light glowing? See https://docs.duet3d.com/en/User_manual/Troubleshooting/Duet_wont_respond for troubleshooting, just in case it is recoverable.
Ian
-
@droftarts Thanks for the links! I will check that. But for now there is a little mechanical work needed - the Snapmaker J1 has its electronics compartment in the base, and I need to remove the housing windows and screw up the z axis before I can unscrew and lift the metal plate covering it... quite some screws before I can see the Duet again
-
@droftarts Edit: I just managed to catch a glimpse through an unused former USB port opening. If I saw correctly from the reflection, the four voltage LEDs are active, but that's about it. But as noted above, I need to take open the compartment to get a clear look.
-
@vaike_peeter thanks for the data. How confident are you that if you disable input shaping, you can do the same print at the same speed without getting any layer shifting?
-
@dc42 I will do teat print with IS disabled and then post results. I modified my config for x and y steppers and changed print external perimeter accel to 2000 because of ringing. Defaul accel is 5k. I’m off my printer right now.
-
@dc42 Okay, after a flash with Bossa the printer is up and running again ( @droftarts it turned out to be an outdated IAP file after all, the last version is from November '22 and mine was from June '22), and here is the requested data:
The print file is in the first post of this thread.
The current config.g is this one, it includes the M593 command:
; Konfigurationsdatei für Duet WiFi Firmware 3.5.0rc2 ; Stand: 26.12.2023 G4 P2000 ; 2s warten, daß die Duet in Ruhe starten kann - hilft bei einem Reset?? ; Allgemeine Einstellungen ; M451 ; FDM-Drucker M669 K0 S50 ; Kartesischer Drucker, 20ms Mindest-Segmentzeit von Marlin-Sourcen des J1 übernommen M111 S0 ; Debugging aus G21 ; Basiseinheit Millimeter G90 ; Absolute Koordinaten... M83 ; ... außer beim Extruder M555 P1 ; Firmware-Kompatibilität wie RepRapFirmware M200 D1.75 ; Filamentdurchmesser 1,75mm für alle Extruder (nicht notwendig, aber es schadet nicht) ; globale Variablen ; if !exists(global.Druckplattendicke) global Druckplattendicke = 5.00 ; Dicke der Druckplatte if !exists(global.Z_Limit_min) global Z_Limit_min = 200 ; kleinster zulässiger Max-Wert für Z if !exists(global.Z_Limit_max) global Z_Limit_max = 216 ; größter zulässiger Max-Wert für Z ; PanelDue ; ;M575 P1 S1 B115200 ; IO-Port für PanelDue aktivieren M575 P1 S1 B57600 ; testweise auf 57600 Baud reduziert ; Definition der Sensoren - 2x PT100 mit Vorverstärker am Hotend, 1x 100K-NTC (laut Marlin ein Epcos 100k-Thermistor?) am Bett ; M308 S0 P"temp0" Y"thermistor" A"T_Heizbett" T100000 B4092 ; Sensor 0 = Heizbett-Temperatursensor ; Hotend-Temperatursensoren - Anmerkungen: ; 1. die Vorverstärker im Hotend arbeiten nur im Bereich von 120...310°C linear. Daher weichen die Anzeigewerte insbesondere bei Raumtemperatur ca. 10...15° nach unten ab. ; 2. Originalwerte laut der Sensorkurve von Snapmaker in Marlin: B-121.551 C549.644. Damit ist der Ausgabewert aber bei 190°C mindestens 2°C zu niedrig (außen am Heizblock gemessen) ; Daher Anzeigewert um 5°C nach oben korrigiert auf: M308 S1 P"temp1" Y"linear-analog" A"T_Hotend1" F1 B-116.551 C554.644 ; Sensor 1 = PT100 mit Vorverstärker am Hotend 1 (links). GND und 3,3V kommen vom Filamentsensor, Signal an Pin Temp1 legen! M308 S2 P"temp2" Y"linear-analog" A"T_Hotend2" F1 B-116.551 C554.644 ; Sensor 2 = PT100 mit Vorverstärker am Hotend 1 (links). GND und 3,3V kommen vom Filamentsensor, Signal an Pin Temp2 legen! ; M308 S3 P"temp3" Y"thermistor" A"Bauraum" T100000 B4092 ; reserviert für Sensor 3 = Sensor für Bauraumheizung M308 S10 Y"mcu-temp" A"Elektronik" ; Sensor 10 = Prozessortemperatur der Duet für Elektronikraumkühlung - die Stepper haben nur einen dreistufigen Temperatursensor M308 S11 Y"drivers" A"Steppertreiber" ; Sensor 11 = Steppertreibertemperatur der Duet. 0°C=normal, 100°C=Überhitzungswarnung, 130°C=überhitzt. ; Definition der Anschlüsse ; Führendes "!": Pin wird zum Prozessor hin invertiert, die Firmware macht das automatisch) ; 2-Pin-Lüfter am 4-Pin-Anschluß: einfach nur die beiden Pins V_OUTLCx und OUTx benutzen, den Rest frei lassen ; Lüfter mit VIN (24V) betreiben - Jumper entsprechend setzen ; M950 H0 C"out0" T0 ; Heizelement 0 (Heizbett mit Temperatursensor 0) M950 H1 C"out1" T1 ; Heizelement 1 (Extruder-Heizung mit Temperatursensor 1) M950 H2 C"out2" T2 ; Heizelement 2 (Extruder-Heizung mit Temperatursensor 2) ; H3 (out3) freihalten für Bauraumheizung M950 F0 C"out4" Q50 ; Lüfter 1 (Bauteilkühlung Hotend 1) PWM-Frequenz 50 Hz (sonst schwankt die Drehzhl) M950 F1 C"out5" Q50 ; Lüfter 2 (Bauteilkühlung Hotend 2) PWM-Frequenz 50 Hz (sonst schwankt die Drehzahl) M950 F2 C"out7" Q500 ; Lüfter 3 (Hotendkühlung Hotend 1) M950 F3 C"out8" Q500 ; Lüfter 4 (Hotendkühlung Hotend 2) M950 F4 C"out6" Q50 ; Lüfter 5 (Elektronikraumlüfter) PWM-Frequenz 50 Hz (sonst schwankt die Drehzahl) M950 P9 C"out9" Q100 ; LED-Streifen an Ausgang 9 ; Definition der Antriebe ; falls die Timings manuell justiert werden müssen: Parameter T1:1:0.5:6 F6 = 1us min.step pulse, 1us min.step interval, 0,5us DIR setup time, hold time 6us, Toff=6 ; Originale Daten: ; Normal: TMC StealthChop für alle Achsen an, max. Tempo X200 Y200 mm/s, max. Beschleunigung X8000 Y8000 mm/s² ; Silent: TMC StealthChop für alle Achsen an, max. Tempo X105 Y105 mm/s, max. Beschleunigung X3000 Y3000 mm/s² ; Performance (Laut): TMC StealthChop für X und Y aus, max. Tempo X350 Y350 mm/s, max. Beschleunigung M201 X10000 Y10000 mm/s² ; Steppereinstellungen von Snapmaker am TMC2210 - Achtung: Snapmaker ändert im Idle-Zustand einige der Parameter! ; Stealthchop: für alle Stepper eingeschaltet <-- macht bei den Extrudern null Sinn. ; TPWMTHRS: X und Y: 8, Z: 16, E: Defaultwert (welcher auch immer das sein mag...egal, s.o.) ; Timing: off-time 4 --> F4, hysteresis_end 2, hysteresis_start 1 --> Y1:2 ; ; Defaultwerte der Duet: ccr 0x08053, toff 3, tblank 1, thigh 200 (46.9 mm/sec), tpwmthrs 200 (46.9 mm/sec), pwmScaleSum 26, pwmScaleAuto 0, pwmOfsAuto 39, pwmGradAuto 0, pos 760 ; ; Werte aus der Duet-Hilfe: ; Cnnnn (firmware 2.0 and later, only applies to TMC2660, TMC22xx, TMC2160 and TMC516x stepper drivers) Lowest 17 bits of the chopper control register value. ; Bnn (firmware 2.02RC1 and later) Blanking time (tbl) in the chopper control register, 0 to 3. See the TMC driver datasheet. ; Hnn (firmware 2.02RC2 and later) thigh parameter for those stepper driver chips that support it, e.g. TMC5160 and TMC2160. ; Send M569 P# (where # is the driver number) with no additional parameters to see how this translates into mm/sec. See also the V parameter. ; Yaa:bb or Yaa:bb:cc (firmware 2.02RC2 and later) Hysteresis start, end and decrement values in the chopper control register. See the TMC driver datasheet for the meaning. ; Vnnn (firmware 2.02RC1 and later) tpwmthrs parameter for those stepper driver chips that support it. This is the interval in clock cycles between 1/256 microsteps below ; which the drivers will switch from stealthChop to to spreadCycle mode. Only applies when the driver is configured in stealthChop mode. ; Typical value are from 100 (high speed) to 4000 (low speed). Send M569 P# (where # is the driver number) with no additional parameters to see how this translates into mm/sec. ; Fnn (firmware 2.02 and later) Off-time in the chopper control register, 1 to 15 ; ; Verhältnisse laut TMC-Datenblatt: TCOOLTHRS ≥ TSTEP ≥ TPWMTHRS ≥ THIGH ; Werte für tpwmthrs: V94 = 100mm/s (XYU) bzw. V310 (Z) (sollte der Einstellung von Snapmaker entsprechen?), V25 = 375mm/s und damit für alle Bewegungen gültig ; ; M569 P0.0 S0 D3 H94 V94 ; Test - Defaultwerte. Ergebnis: Motor etwas lauter und mit weniger Drehmoment M569 P0.0 S0 F4 Y1:2 D3 H5 V25 ; Antrieb an DRIVER_0 (X) läuft rückwärts mit StealthChop2, thigh klein (sonst wird CoolStep abgedreht), tpwmhrs auf 375mm/s eingestellt, M915 P0.0 T1 ; ... und tcoolthrs extrem niedrig, so daß CoolStep immer aus ist M569 P0.1 S1 F4 Y1:2 D3 H5 V25 ; Antrieb an DRIVER_1 (U) läuft vorwärts mit StealthChop2, thigh klein (sonst wird CoolStep abgedreht), tpwmhrs auf 375mm/s eingestellt M915 P0.1 T1 ; ... und tcoolthrs extrem niedrig, so daß CoolStep immer aus ist M569 P0.2 S1 D2 ; Antrieb an DRIVER_2 (Z) läuft vorwärts mit Spreadcycle ; M569 P0.3 S0 D2 ; testweise auf Spreadcycle umgestellt. Nutzt nix. M569 P0.3 S0 F4 Y1:2 D3 H5 V25 ; Antrieb an DRIVER_3 (Y) läuft rückwärts mit StealthChop2, thigh klein (sonst wird CoolStep abgedreht), tpwmhrs auf 375mm/s eingestellt M915 P0.3 T1 ; ... und tcoolthrs extrem niedrig, so daß CoolStep immer aus ist M569 P0.4 S0 D2 ; Antrieb an DRIVER_2 (E1) läuft rückwärts mit Spreadcycle M569 P0.5 S1 D2 ; Antrieb an DRIVER_3 (E2) läuft vorwärts mit Spreadcycle ; Definition der Achsen und Extruder ; ACHTUNG beim Einstellen der Steprate und der Interpolation: mehr als 480kHz (max. 650kHz bei nur einem Motor in Betrieb) packt die Duet 3 6HC nicht. Das sollte aber dicke reichen... ; M584 X0.0 U0.1 Y0.3 Z0.2 E0.5:0.4 ; Antriebe zu Achsen zuweisen M350 E64:64 Z16 I0 ; Mikrostepping ohne Interpolation für Z (mit der 2mm-Steigung der Schraube entspricht ein Vollschritt exakt 0,01mm) und E M350 X16 U16 Y16 I1 ; Mikrostepping mit Interpolation für X, U, Y entspricht 0,0125mm pro Mikroschritt M92 X80 U80 Y80 Z1600 E138.58:138.58 S16 ; (Mikro-)Schritte pro mm ; M566 X600 U600 Y600 Z100 E300:300 ; testweise erhöht wg. Layer Shifts. Nutzt nix. M566 X342 U342 Y342 Z100 E300:300 ; Maximale sofortige Geschwindigkeitsänderungen (mm/min). E-Wert aus Marlin, XYUZ-Werte aus Junction Deviation 0,013 errechnet (vgl. https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html). Für XYU möglichst klein halten (Input Shaping) M203 X21000 U21000 Y21000 Z600 E4800:4800 ; Maximalgeschwindigkeiten (mm/min) M201 X1000 U1000 Y1000 Z500 E5000:5000 ; Maximalbeschleunigungen je Achse (mm/s²) (Z aus J1-Cura-Profil) - Snapmaker-Daten X,U,Y=10000 sind wegen des Werts in M204 völliger Humbug! (Gesamtbeschleunigung max 1000, daher können die XY-Komponenten nicht höher sein) M204 P900 T900 ; höchste erlaubte Gesamtbeschleunigung für Druck und Bewegung (Originalwert Snapmaker: 1000, da fängt aber der Tisch an zu wackeln...) M906 X1000 U1000 Y1400 Z1000 E800:800 I95 ; Motorströme (mA) und Faktor des Ruhestroms in Prozent TODO höhere Ruhestromabsenkung möglich? M84 S30 ; Timeout für Ruhestrom (s) ; M915 X U Y S20 F1 R2 ; Stallguard für X, U und Y TODO Wert festlegen: Snapmaker definiert den Wert als 8 bei einer Bandbreite von 0...255 beim TMC2209; der TMC2160 der Duet hat aber -64...63 ; Beispielwerte für F von X und Y in mm/s: ; F200 --> 100mm in 30s ; F1000 --> 100mm in 6,5s ; F2000 --> 100mm in 3,1s ; F3000 --> 100mm in 2,1s ; Koordinatendefinition ; Nullpunkt = Mittelpunkt des Druckbetts = Zentrum der XY-Korrekturöffnung ; M208 X-175.5 Y-101 Z0 U-151 S1 ; Achsen-Minima M208 X151 Y101 Z209 U175.5 S0 ; Achsen-Maxima - nur grobe Vorgabe für Z, korrekter Wert wird beim Bedleveling ermittelt und in der Datei z_max.g gespeichert ; Definition der I/O-Ports ; Achtung: IO_0 wird vom Flachbandkabel der PanelDue belegt, nicht nutzen! ; ; Endstops M574 X1 S1 P"io1.in" ; X-Endstop: aktiv für Signal auf "High-Level" (NC-Schalter, paßt für die Gabellichtschranke) M574 U2 S1 P"io2.in" ; U-Endstop: aktiv am oberen Ende für Signal auf "High-Level" (NC-Schalter, paßt für die Gabellichtschranke) M574 Y1 S1 P"io3.in" ; Y-Endstop: aktiv für Signal auf "High-Level" (NC-Schalter, paßt für die Gabellichtschranke) M574 Z2 S1 P"io4.in" ; Z-Endstop: aktiv am oberen Ende für Signal auf "High-Level" (NC-Schalter) ; ; Filamentsensoren ; Die Duet unterstützt keine analogen Filamensensoren! Daher müssen die Sensoren des J1 auf digitale Hallsensoren umgebaut oder z.B. ein Arduino als "Übersetzer" verwendet werden ; Werte für Umbau auf Hallsensor mit 2x12 Magneten je Sensor: M591 D0 P7 C"io5.in" L4.2 R50:150 E12.5 S0 ; Filamentsensor für Extruder 0, Impulssignal, an "io5.in", 4mm/Impuls, Toleranz 50...150%, erste 3 Pulse = 12,5mm verwerfen M591 D1 P7 C"io6.in" L4.2 R50:150 E12.5 S0 ; Filamentsensor für Extruder 1, Impulssignal, an "io6.in", 4mm/Impuls, Toleranz 50...150%, erste 3 Pulse = 12,5mm verwerfen ; gemessene Werte: TODO - nach einigen Drucken mit M591 D0 bzw. M591 D1 auslesen und anpassen! ; D0: 3.989mm/pulse, min 95%, max 131% over 143.6mm mit PETG ; 3.985mm/pulse, min 96%, max 130% over 143.6mm mit PETG ; 4.224mm/pulse, min 95%, max 128% over 143.6mm mit PETG ; ; Druckdüsen als Z-Sensoren ; Achtung, diese Werte werden von den drei Kalibriermakros temporär überschrieben! M558 P8 C"^!io7.in" H2 F150 R0.2 T720 K0 B0 ; Z-Sensor Hotend 1=binär ohne Entprellfilter, 2mm Antasthöhe, invertiert (active low)&Pulldownwiderstand aktiv, 300mm/min Meßgeschwindigkeit, 0,5s Recoveryzeit, XY-Bewegung zwischen Messungen 1800mm/min, Heizelemente an G31 K0 P500 X0 Y0 Z{-global.Druckplattendicke-2} ; Z-Sensor Hotend 1: Triggerwert, Offset und Auslösehöhe M558 P8 C"^!io8.in" H2 F150 R0.2 T720 K1 B0 ; Z-Sensor Hotend 2=binär ohne Entprellfilter, 2mm Antasthöhe, invertiert (active low)&Pulldownwiderstand aktiv, 300mm/min Meßgeschwindigkeit, 0,5s Recoveryzeit, XY-Bewegung zwischen Messungen 1800mm/min, Heizelemente an G31 K1 P500 U0 Y0 Z{-global.Druckplattendicke-2} ; Z-Sensor Hotend 2: Triggerwert, Offset und Auslösehöhe ; Hinweis: es darf nur an den Schrauben gemessen werden. Muß in bed.g definiert werden - M557 nicht verwenden! ; Bettleveling ; M671 X0:-114.5:114.5 Y86:-93:-93 S3.0 P0.5 ; Position der Einstellschrauben ; Einstellungen Heizbett (H0) ; auf PID umgestellt, Bang-Bang macht man auch beim Bett nicht mehr, produziert Z-Banding... M140 H0 ; Heizelement 0 initialisieren M307 H0 R0.155 K0.140:0.000 D5.68 E1.35 S1.00 B0 ; Heizelement 0 (Heizbett) Kalibrierungsdaten M143 H0 S110 ; Temperaturlimit für Heizelement 0 (Heizbett) = 110°C ; Einstellungen Heizelemente Hotends (H1 und H2) ; ; M307 H1 R2.186 K0.17:0.11 D5.67 S1.00 V24.0 ; Heizelement 1 (Hotend 1) alte Kalibrierungsdaten aus Marlin umgerechnet M307 H1 R2.461 K0.335:0.144 D6.09 E1.35 S1.00 B0 V23.9 ; Heizelement 1 (Hotend 1) Kalibrierungsdaten, kalibriert mit 250°C und F0.55 M143 H1 S320 ; Temperaturlimit für Heizelement 1 = 320°C M570 H1 P5 T16 ; erlaubte Temperaturabweichung erhöhen, um die bei Raumtemperatur krumme Verstärkerkennlinie abzufangen (sonst Heater Fault) ; M307 H2 R2.186 K0.17:0.11 D5.67 S1.00 V24.0 ; Heizelement 2 (Hotend 2) alte Kalibrierungsdaten aus Marlin umgerechnet M307 H2 R2.476 K0.347:0.131 D5.52 E1.35 S1.00 B0 V23.9 ; ; Heizelement 2 (Hotend 2) Kalibrierungsdaten, kalibriert mit 250°C und F0.55 M143 H2 S320 ; Temperaturlimit für Heizelement 2 = 320°C M570 H2 P5 T16 ; erlaubte Temperaturabweichung erhöhen, um die bei Raumtemperatur krumme Verstärkerkennlinie abzufangen (sonst Heater Fault) M302 P0 S160 R120 ; Limit für Extruderbewegungen: extrudieren nur ab 160°, zurückziehen nur ab 120° ; Einstellungen Lüfter ; M106 P0 S0 H-1 B0.2 L0.17 X1.0 C"Werkzeuglüfter 1" ; Lüfter 0: Startwert 0%, Steuerung via Thermosensor nicht aktiv, Blip-Dauer 0,2s, Geschwindigkeit von 17%-100% M106 P1 S0 H-1 B0.2 L0.17 X1.0 C"Werkzeuglüfter 2" ; Lüfter 1: Startwert 0%, Steuerung via Thermosensor nicht aktiv, Blip-Dauer 0,2s, Geschwindigkeit von 17%-100% M106 P2 S1.0 H1 T45 C"Hotendlüfter 1" ; Lüfter 2: Startwert 100%, Aktiviert, wenn Heizelement 1 > 45°C M106 P3 S1.0 H2 T45 C"Hotendlüfter 2" ; Lüfter 3: Startwert 100%, Aktiviert, wenn Heizelement 2 > 45°C M106 P4 H10:11 T40:60 B0.2 L0.17 X1.0 C"Elektroniklüfter" ; Lüfter 4: Aktiviert, wenn Prozessortemperatur > 40°C, läuft bei 70°C oder wenn Steppertreiber eine Überhitzungswarung ausgibt mit 100%. ; Werkzeuge (Tools) ; M563 S"Hotend 1" P0 D0 H1 F0 ; Werkzeug 0 = Extruder 0 + Heizelement 1 G10 P0 X0 Y0 Z0 ; Achsenoffsets für Werkzeug 0 M568 P0 R0 S0 ; Defaulttemperaturen Werkzeug 0 0°C (=aus) M563 S"Hotend 2" P1 D1 H2 F1 X3 ; Werkzeug 1 = Extruder 1 + Heizelement 2, X auf U gemappt G10 P1 X0 Y0 Z0 ; Achsenoffsets für Werkzeug 1 M568 P1 R0 S0 ; Defaulttemperaturen Werkzeug 1 0°C (=aus) ; M563 S"Duplizieren" P2 D0:1 H1:2 X0:3 ; Werkzeug 2 = beide Extruder, 150mm versetzt ; G10 P2 X75 U-75 Y0 Z0 ; Achsenoffsets für Werkzeug 2 ; M567 P2 E1:1 ; Extrusionsverhältnis für beide Hotends gleich ; M563 S"Spiegeln" P3 D0:1 H1:2 X0:3 ; Werkzeug 3 = Extruder 1 + Heizelement 2, X auf U gemappt und 300mm versetzt. U mit M579 U-1 invertieren, wenn das Tool aktiv ist! Homing anpassen! ; G10 P3 X75 U-75 Y0 Z0 ; Achsenoffsets für Werkzeug 3 ; M567 P3 E1:1 ; Extrusionsverhältnis für beide Hotends gleich ; LEDs ; M42 P9 S0.5 ; LED-Streifen auf 50% ; Geschwindigkeitsverbesserndes Voodoo (Input Shaping, Pressure Advance etc.) ; Empfehlung: erst Input shaping justieren, dann Pressure Advance, dann Retraction! ; ; testweise Input Shaping deaktiviert M593 P"zvddd" F58 D0.1 L0.25 ; Input Shaping bei 58Hz, Dämpfungsfaktor 0,1 - TODO testen, ob ei2 oder zvddd besser ist. Dem Sensor nach sind beide ziemlich gleichauf ; M593 P"ei2" F58 D0.1 L0.03 ; Input Shaping bei 58Hz, Dämpfungsfaktor 0,1 M572 D0:1 S0.05 ; Pressure Advance. Originalwert 0,02 war klar zu niedrig... M309 P0 S0.035 ; Hotend 1 Feedforward-Wert M309 P1 S0.035 ; Hotend 2 Feedforward-Wert ; Retractwerte (M207) siehe Filamente! ; Netzwerk - WLAN-Modul ans Ende setzen wegen Timing-Bug... ; M550 P"Duplimatix" ; Maschinenname M552 I0 S0 ; Ethernetanschluß deaktiviert M586 P0 S1 ; HTTP-Server aktiv M586 P1 S0 ; FTP deaktiviert M586 P2 S0 ; Telnet deaktiviert M552 I1 S1 ; WLAN-Modul aktiv ; Sonstiges ; T0 ; Erstes Werkzeug bei Start ausgewählt M42 P9 S0.25 ; LED-Streifen dimmen M98 P"Korrekturwert_z_max.g" ; korrigiertes Z_Max einlesen M98 P"Korrekturwert_xy_offset_tool1.g" ; XY-Offset Hotend 2 einlesen M207 P0 S1.5 R0 F2400 T2400 ; Default-Retractwerte Hotend 1: 1,5mm und 40mm/s M207 P1 S1.5 R0 F2400 T2400 ; Default-Retractwerte Hotend 2; 1,5mm und 40mm/s M911 S21.5 R23.5 P"M913 X0 U0 Y0 Z1 E0:0 G91 M83 G1 Z1 F1000" ; Bei Spannungsausfall Zustand sichern, dann X, U und Y aus und Z 1mm absenken
[message split due to the 2000 character limit here]
-
@dc42 [2nd part of message]
And here is the M122 readout, taken about a mm (6..7 layers) after the layer shift occurred:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.5.0-rc.2+ (2024-01-15 11:56:21) running on Duet 3 MB6HC v1.02 or later (standalone mode) Board ID: 08DJM-956BA-NA3TN-6JTDL-3SN6L-998UU Used output buffers: 7 of 40 (34 max) === RTOS === Static ram: 155184 Dynamic ram: 123028 of which 0 recycled Never used RAM 64156, free system stack 122 words Tasks: NETWORK(2,nWait 7,15.4%,228) HEAT(3,nWait 1,0.0%,321) Move(4,nWait 6,2.7%,214) CanReceiv(6,nWait 1,0.0%,940) CanSender(5,nWait 7,0.0%,334) CanClock(7,delaying,0.0%,334) TMC(4,nWait 6,9.9%,56) MAIN(1,running,71.5%,103) IDLE(0,ready,0.4%,30), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 01:16:09 ago, cause: software Last software reset at 2024-01-19 23:05, reason: User, Gcodes spinning, available RAM 64316, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU temperature: min 45.6, current 47.3, max 47.6 Supply voltage: min 23.6, current 23.9, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.3, max 12.7, under voltage events: 0 Heap OK, handles allocated/used 99/3, heap memory allocated/used/recyclable 2048/1420/1368, gc cycles 13 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, mspos 216, reads 27266, writes 28 timeouts 0 Driver 1: ok, SG min 0, mspos 453, reads 27266, writes 28 timeouts 0 Driver 2: standstill, SG min 0, mspos 984, reads 27271, writes 23 timeouts 0 Driver 3: ok, SG min 0, mspos 794, reads 27268, writes 26 timeouts 0 Driver 4: ok, SG min 0, mspos 306, reads 27275, writes 19 timeouts 0 Driver 5: standstill, SG min 0, mspos 714, reads 27276, writes 19 timeouts 0 Date/time: 2024-01-20 00:21:28 Slowest loop: 212.54ms; fastest: 0.05ms === Storage === Free file entries: 17 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 4.6ms, write time 2.8ms, max retries 0 === Move === DMs created 125, segments created 32, maxWait 119504ms, bed compensation in use: none, height map offset 0.000, max steps late 1, ebfmin -1.00, ebfmax 1.00 next step interrupt due in 326 ticks, disabled Moves shaped first try 21, on retry 2279, too short 16527, wrong shape 66349, maybepossible 10398 === DDARing 0 === Scheduled moves 139469, completed 139424, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.3 Heater 2 is on, I-accum = 0.4 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 3 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is doing "G4 S10" in state(s) 0 0, running macro Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0, sync state 1 Queue2 is idle in state(s) 0 Q0 segments left 10, axes/extruders owned 0x4000000e Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === Filament sensors === check 50750242 clear 353671 Extruder 0 sensor: ok Extruder 1 sensor: ok === CAN === Messages queued 41120, received 0, lost 0, errs 21703023, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 22850/0/0 Tx timeouts 0,0,22849,0,0,18269 last cancelled message type 30 dest 127 === Network === Slowest loop: 103.88ms; fastest: 0.00ms Responder states: MQTT(0) HTTP(0) HTTP(2) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = Interface state: disabled Error counts: 0 0 0 0 0 0 Socket states: 0 0 0 0 0 0 0 0 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 2.1beta6 MAC address 70:04:1d:be:ad:b8 Module reset reason: Power up, Vcc 0.00, flash size 4194304, free heap 221836 WiFi IP address 192.168.178.31 Signal strength -62dBm, channel 2, mode 802.11n, reconnections 0 Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0 === Multicast handler === Responder is inactive, messages received 0, responses 0
The layer shift (in y axis direction) occurred at 5.5 or 5.65mm height. It might be worth to point out though that while I got a layer shift of several millimeters with rc1, now it is only some tenths of a millimeter.
Luckily, I sat directly at the printer and watched it while that happened. One thing is worth noting:
I got an audible low-frequency-"bang" from the printer twice around this height and the whole table (which is a solid 40kg wood plate mounted on electric frame) was shaking - something it only does if the y axis does some really hefty acceleration or deceleration. One of these "bangs" created the small layer shift. The printer was printing one of the inner perimeters of the outside surface of the print and did not cross any perimeters or holes in the structure at the time.
Please note no protruding material or such was there that might have blocked the nozzle, and the noise was also quite different from when that happens - such a print error usually creates more of a"rumbling" noise on my printer, with a higher-pitched "klack" or rattling noise if the motor looses one or more steps that it wants to make.
If I would have to conclude what might have created that noise, I would say the Y axis got... well... delayed and had to hurry to catch up, if that does make any sense...