Trying to fix my dual markforged (HAQ-XY) kinematics
-
Hey!
I am breaking my head over a serious print-quality issue with my machine...
- When printing the ringing tower in vase mode (M204 P5000 T10000, outline at 150mm/s, autocooling off) the layers look very good, with no ghosting at all and very good print quality
but;
When doing a "real" print, I get soooo much layer missallignments, even if I set "M204 P700 T1000". Layers do not seem consistent...
The images are 2 different filaments, but this happens with both heads, at all places on the bed, with all filaments...
I suspect the X, Y, and U axes are poorly synchronized. This is also because it only happens on Y moves.
I already have checked belt tension, set screws on pulleys, mounting of idlers, motors, all linear rails on X and Y, but it is a serious wobbleI have already set a test where I move Y quickly front and back, and you see the head moving left to right;
(see video; WhatsApp Video 2024-09-06 at 16.05.54.mp4 )Does anybody know what could be going on??
- When printing the ringing tower in vase mode (M204 P5000 T10000, outline at 150mm/s, autocooling off) the layers look very good, with no ghosting at all and very good print quality
-
@SanderLPFRG ...looks like an elefant trunk
I'm not really familiar with the dual markforge design, but could you repeat the back and forth test in the middle of the bed, then on the outer edges?
If it shows less wobble in the middle, you might see racking. -
@o_lampe It is the same everywhere.
Also happens on slow prints..
Moves with only X or only Y motors (left to rigt, or diagonal) are fine, so it only happens when a move requires both motors
-
@SanderLPFRG what firmware version are you running? Please send M122 and post the results. Also post your config.g, and the response to M669.
Ian
-
Thanks @droftarts!
Here you go, if you need anything else, please let me know!
M122;
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.5.1 (2024-04-19 14:30:55) running on Duet 3 MB6HC v1.02 or later (SBC mode) Board ID: 0JD4M-958L1-M2NSW-6J1DL-3S46S-12KTW Used output buffers: 1 of 40 (19 max) Error in macro line 80 while starting up: M955: Accelerometer not found on specified port === RTOS === Static ram: 155208 Dynamic ram: 91404 of which 2172 recycled Never used RAM 94352, free system stack 202 words Tasks: SBC(2,ready,0.9%,396) HEAT(3,nWait 6,0.0%,321) Move(4,nWait 6,0.0%,336) CanReceiv(6,nWait 1,0.1%,770) CanSender(5,nWait 7,0.0%,334) CanClock(7,delaying,0.0%,346) TMC(4,nWait 6,9.0%,54) MAIN(2,running,89.9%,103) IDLE(0,ready,0.1%,30), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:21:07 ago, cause: power up Last software reset at 2024-07-13 18:28, reason: User, Gcodes spinning, available RAM 93944, slot 1 Software reset code 0x6003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 MCU temperature: min 25.4, current 37.9, max 38.1 Supply voltage: min 23.9, current 23.9, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.1, current 12.3, max 12.5, under voltage events: 0 Heap OK, handles allocated/used 99/10, heap memory allocated/used/recyclable 2048/180/0, gc cycles 0 Events: 1 queued, 1 completed Driver 0: standstill, SG min n/a, mspos 8, reads 6680, writes 14 timeouts 0 Driver 1: standstill, SG min n/a, mspos 8, reads 6680, writes 14 timeouts 0 Driver 2: standstill, SG min n/a, mspos 8, reads 6680, writes 14 timeouts 0 Driver 3: standstill, SG min n/a, mspos 8, reads 6680, writes 14 timeouts 0 Driver 4: standstill, SG min n/a, mspos 8, reads 6680, writes 14 timeouts 0 Driver 5: standstill, SG min n/a, mspos 8, reads 6680, writes 14 timeouts 0 Date/time: 2024-07-13 20:12:27 Slowest loop: 20.29ms; fastest: 0.08ms === Storage === Free file entries: 20 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 0, maxWait 0ms, bed compensation in use: none, height map offset 0.000, max steps late 0, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 0.00 no step interrupt scheduled Moves shaped first try 0, on retry 0, too short 0, wrong shape 0, maybepossible 0 === DDARing 0 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === 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 === GCodes === Movement locks held by null, null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File is idle 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 idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 0, axes/extruders owned 0x0000000 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 11321, received 80667, lost 0, errs 1, boc 0 Longest wait 1ms for reply type 6018, peak Tx sync delay 333, free buffers 50 (min 49), ts 6340/6339/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === Transfer state: 5, failed transfers: 0, checksum errors: 0 RX/TX seq numbers: 48340/48340 SPI underruns 0, overruns 0 State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x253c0 Buffer RX/TX: 0/0-0, open files: 0 === Duet Control Server === Duet Control Server version 3.5.1 (2024-04-19 16:20:35, 32-bit) HTTP+Executed: > Executing M122 Code buffer space: 4096 Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0 Full transfers per second: 39.14, max time between full transfers: 484.9ms, max pin wait times: 31.7ms/1.2ms Codes per second: 0.08 Maximum length of RX/TX data transfers: 4818/984
M699;
M669 Kinematics is markForged, no segmentation, modified matrix: 1.00 0 0 0 0 0 1.00 1.00 0 -1.00 0 0 0 0 -1.00 0 0 0 0 0 0 1.00 0 0 0 0 0 0 1.00 0 0 0 0 0 0 1.00
Config.g;
; generated by Sander Hesp for Leapfrog 3D printers ;------------------------------ General settings -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"ONE" ; set printer name ; Set global variables global leftloadedfilament = "PLA" global rightloadedfilament = "PLA" global leftnozzlesize = "0.40" global rightnozzlesize = "0.40" ;------------------------------ Drive and motion -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Drive & motion definition M569 P0.0 S0 ; physical drive 0.0 goes backwards (E1) M569 P0.1 S0 ; physical drive 0.1 goes backwards (Y1) M569 P0.2 S0 ; physical drive 0.2 goes backwards (X1) M569 P0.3 S0 ; physical drive 0.3 goes backwards (X2) M569 P0.4 S1 ; physical drive 0.4 goes forwards (Y2) M569 P0.5 S0 ; physical drive 0.5 goes forwards (E2) M569 P1.0 S0 ; physical drive 1.0 goes forwards (V) M569 P1.1 S0 ; physical drive 1.1 goes forwards (W) M569 P2.0 S0 ; physical drive 2.0 goes forwards (Z1) M569 P2.1 S0 ; physical drive 2.1 goes forwards (Z2) M569 P2.2 S0 ; physical drive 2.2 goes forwards (Z3) M584 X0.2 U0.3 Y0.1:0.4 E0.0:0.5 Z2.0:2.1:2.2 V1.0 W1.1 ; set drive mapping M669 K11 X1:0:0:0 Y1:1:0:-1 Z0:0:-1:0 U0:0:0:1 ; set markforged kinematics M350 X16 U16 Y16 Z16 V32 W32 I0 ; configure axis microstepping with interpolation M350 E16:16 I1 ; configure extruder microstepping with interpolation M92 X80 Y80 Y80 E833.33:821.82 Z800.00 V17777.78 W17777.78 ; set steps per mm M906 X2100 U2100 Y2100 E580:580 Z1900 V200 W200 I40 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; set idle timeout ; Machine axis limits M208 X-70.5 U0 Y0 Z0 V0 W0 S1 ; set axis minimal M208 X600 U672.5 Y510 Z600 V14 W14 S0 ; set axis maximal M671 X702.75:300:-102.75 Y47.125:-537.35:47.125 S10 ; Z leadscrews are at (-41,-14), (130,325.5) and (301, -14) and set compensation allowance to 20mm ; Machine movement limits M203 X30000 U30000 Y30000 E7200:7200 Z900 V300 W300 ; set maximum speeds (mm/min) M201 X15000 U15000 Y8000 E8000:8000 Z100.00 V2 W2 ; set maximum accelerations (mm/s^2) ; Machine motion settings M593 P"MZV" F37 S0.05 ; set ZVD input shaping to cancel ringing at 40.5Hz M566 X420 U420 Y420 E3000:3000 Z900 V100 W100 ; set instantaneous speed changes (mm/min) M204 P5000 T12000 ; set actual accelerations ;------------------------------ Sensors and inputs ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ; Endstops M574 X1 S1 P"^!2.io3.in" ; configure switch-type endstop for low end on X via pin 2.io3.in M574 U2 S1 P"^!2.io1.in" ; configure switch-type endstop for high end on U via pin 2.io1.in M574 Y2 S1 P"2.io2.in" ; configure switch-type endstop for high end on Y via pin 2.io2.in M574 V2 S1 P"^1.io2.in" ; configure switch-type endstop for high end on V via pin 1.io2.in M574 W2 S1 P"^1.io3.in" ; configure switch-type endstop for high end on W via pin 1.io3.in ; Z-Probe M558 K0 P8 C"^1.io0.in" H3 F600:100 T21000 A3 S0.05 ; Set E1 Z probe, set dive height, probe speed, required accuracy and travel speed G31 K0 P200 X0 Y0 Z-0.5 ; Set Z offset of E1 probe ;M558 K1 P8 C"1.io1.in" H3 F600:100 T21000 A3 S0.05 ; Set E1 Z probe, set dive height, probe speed, required accuracy and travel speed ;G31 K1 P500 U0 Y0 Z0.2 ; Set Z offset of E1 probe M557 X25:575 Y25:475 P9:9 ; define mesh grid ; Filament control buttons ;M950 J1 C"2.io2.in" ; define logical input for E1 filamentsensor ;M581 P1 T2 S0 R0 ; define trigger for filament auto load triggers trigger2.g ;M950 J2 C"2.io3.in" ; define logical input for E1 filamentunload ;M581 P2 T3 S0 R0 ; define trigger for filament auto unload triggers trigger3.g ;M950 J3 C"2.io4.in" ; define logical input for E2 filamentsensor ;M581 P3 T4 S0 R0 ; define trigger for filament auto load triggers trigger4.g ;M950 J4 C"2.io5.in" ; define logical input for E2 filamentunload ;M581 P4 T5 S0 R0 ; define trigger for filament auto unload triggers trigger5.g ; Accelerometer inputs M955 P0 I46 S1344 R10 C"spi.cs1+spi.cs0" ; configure accelerometer sensor, set orientation, sampling and resolution ;------------------------------ Heaters and Fan outputs ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Heaters, Bed zones M308 S0 P"1.temp0" Y"thermistor" A"Bed zone 1" T100000 B3950 ; configure bed zone 1 temperature sensor M950 H0 C"1.out1+out0" T0 ; create bed heater output and map it to correct sensor M307 H0 R0.362 K0.500:0.000 D6.39 E1.35 S1.00 B0 ; enable and set PID temperature control for bed zone 1 M140 P0 H0 ; map bed zone 1 to correct heater M143 H0 S120 ; set temperatare limit for heater 0 to 120C M308 S1 P"1.temp1" Y"thermistor" A"Bed zone 2" T100000 B3950 ; configure bed zone 2 temperature sensor ;M950 H1 C"1.out0" T1 ; create bed heater output and map it to correct sensor ;M307 H0 R0.362 K0.500:0.000 D6.39 E1.35 S1.00 B0 ; enable and set PID temperature control for bed zone 2 ;M140 P1 H1 ; map bed zone 1 to correct heater ;M143 H1 S120 ; set temperatare limit for heater 1 to 120C ; Heaters, extruder M308 S2 P"temp0" Y"pt1000" A"Nozzle1" ; configure left printhead temperature sensor M950 H2 C"out1" T2 ; create left printhead heater output and map it to correct sensor M307 H2 R2.581 K0.635:0.000 D4.58 E1.35 S1.00 B0 V23.7 ; enable and set PID temperature control for left printhead M143 H2 P1 S280 ; set temperature limit for left printhead to 280C M572 D0 S0.10 ; set pressure advance for left printhead ;M308 S4 P"temp3" Y"thermistor" A"HeatsinkLeft" T100000 B4138 M308 S3 P"temp1" Y"pt1000" A"Nozzle2" ; configure right printhead temperature sensor M950 H3 C"out2" T3 ; create left printhead heater output and map it to correct sensor M307 H3 R2.736 K0.422:0.391 D4.34 E1.35 S1.00 B0 V24.0 ; enable and set PID temperature control for lerightt printhead M143 H3 P2 S280 ; set temperature limit for right printhead to 280C M572 D1 S0.10 ; set pressure advance for right printhead ;M308 S5 P"temp2" Y"thermistor" A"HeatsinkRight" T100000 B4138 ; Fans M950 F0 C"2.out3" Q317.5 ; create fan 0 (E1 part) on pin 2.out3 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"2.out4" Q317.5 ; create fan 1 (E2 part) on pin 2.out4 and set its frequency M106 P1 S0 H-1 ; set fan 1 value. Thermostatic control is turned off M950 F2 C"out5" Q500 ; create fan 2 (E1 heat) on pin out5 and set its frequency M106 P2 S1 H2 T45:50 ; set fan 2 value. Thermostatic control is turned on M950 F3 C"out6" Q500 ; create fan 3 (E2 heat) on pin out6 and set its frequency M106 P3 S1 H3 T45:50 ; set fan 3 value. Thermostatic control is turned on M950 F4 C"out8" Q500 ; create fan 4 (SBC) on pin out6 and set its frequency M106 P4 S1 H-1 ; set fan 4 value. Thermostatic control is turned on M950 F5 C"out7" Q500 ; create fan 5 (main) on pin out6 and set its frequency M950 F6 C"1.out6" Q500 ; create fan 6 (exp1) on pin out6 and set its frequency M950 F7 C"2.out6" Q500 ; create fan 7 (exp2) on pin out6 and set its frequency M106 P5 S1 H-1 ; set fan 0 value. Thermostatic control is turned of M106 P6 S1 H-1 ; set fan 0 value. Thermostatic control is turned off M106 P7 S1 H-1 ; set fan 0 value. Thermostatic control is turned off ; Define electronic temperature sensors M308 S11 Y"mcu-temp" P"dummy" A"Mainboard" ; define mainboard temperature sensor M308 S12 Y"drivers" P"dummy" A"Steppers Mainboard" ; define mainboard stepper temperature sensor M308 S13 Y"mcu-temp" P"1.dummy" A"Expansion 1" ; define expansion 1 temperature sensor M308 S14 Y"drivers" P"1.dummy" A"Steppers Expansion 1" ; define expansion 1 stepper temperature sensor M308 S15 Y"mcu-temp" P"2.dummy" A"Expansion 2" ; define expansion 2 temperature sensor M308 S16 Y"drivers" P"2.dummy" A"Steppers Expansion 2" ; define expansion 2 stepper temperature sensor ;------------------------------ Miscellaneous ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Configure chamber LED M950 F10 C"out3" ; create chamber LED strip on correct pin M106 P10 C"LED" S1.0 ; define chamber LED name and set starting value ; Configure status LED M950 F11 C"1.out3" Q500 ; create red LED strip on correct pin M106 P11 C"RGB Red" S0.0 ; define red LED name and set starting value M950 F12 C"1.out4" Q500 ; create green LED strip on correct pin M106 P12 C"RGB Green" S0.0 ; define green LED name and set starting value M950 F13 C"1.out5" Q500 ; create blue LED strip on correct pin M106 P13 C"RGB Blue" S1.0 ; define blue LED name and set starting value ;------------------------------ Tool definition --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Tool Left M563 P0 S"Left" D0 H2 X0 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 ; Tool Right M563 P1 S"Right" D1 H3 X3 F1 ; define tool 1 G10 P1 U-2.4 Y-1.3 Z-0.25 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ; Tool Duplication M563 P2 S"Dulplication" D0:1 H2:3 X0:3 F0:1 ; tool 2 uses both extruders, hot end heaters and fans, and maps X to both X and U G10 P2 X150 Y0 U-150 S0 R0 ; set tool offsets and temperatures M567 P2 E1:1 ; set mix ratio 100% on both extruders
-
@droftarts to aid troubleshooting, I made 4 videos of short moves (20mm) at 200mm/s, at 10.000mm/s^2;
Only X-motor (Pure X-move);
Pure X.mp4Only Y-motors (Diagonal move to front-middle);
Diagonal.mp4Both X and Y middle of bed (Pure Y move);
Pure Y middle.mp4Both X and Y all the way at left of bed (Pure Y move);
Pure Y left.mp4You can see that the printhead only wobbles side-to-side on movement including both motors, and it is the same on the exact middle and all-left on the X axis
-
@SanderLPFRG This may be noting to do with your actual problem, but when watching the "Only Y-motors (Diagonal move to front-middle)" video I can see something in the blurred background wobbling up and down (possibly a belt?), it seems to me that the wobble in that may match the wobble we see in the head in your other videos. Either way in general having anything wobble like that on a printer is probably not good!
-
@SanderLPFRG I agree with @gloomyandy, it looks like something is wobbling. Perhaps an eccentric motor pulley or bearing, or a failed part of the belt?
Ian
-
@droftarts yeahh it is a big printer, belts are hanging free for 700mm, I need to tighten them a shitload to fix it, could this be the issue?
-
@SanderLPFRG Hard to say, but the wobble in whatever it was in the background did look to be at around the same sort of frequency as the movement of the nozzle in your other video. I'd certainly say that it is probably not a good thing!
-
@gloomyandy said in Trying to fix my dual markforged (HAQ-XY) kinematics:
at it is probably not a good thing
Ill redesign the belt tensioning mechanism and the belt mounting, when measuring it indeed looks to be too loose
WIll see what this does