very strange Lines on Prints - Firmware issue?

  • Hi everyone!
    I'm new here, but definitely not new to 3D-Printing or the Duet controller/firmware (using them in 3 Machines for 1,5 Years and loving them!).

    A few months back I decided to buy a Tronxy X5SA-500 Pro (yes, the huge one).
    Its a CoreXY machine with independent dual z-axis and inductive z-probe. Although the TMC2209 drivers are quite (and) impressive, the controller software is a nightmare (which was about to be expected). So I hooked up a Duet 2 WiFi. It took a bit tuning and custom code to get the dual z-axis perfectly level with just the z-probe - but in the end it worked perfectly... ... except one thing. And its driving me nuts.

    When printing, no matter what object, there are lines at the outside. I first thought they were random, but when printing a single wall cylinder at higher speeds (>30mm/s) it gets obvious that it occurs in regular intervals, to be more precise: about every 16-17 seconds.


    This is the same G-Code but printed with PLA (white), PETG (red), ABS (black).
    Printing this on my other Ender 3 whit Duet 2 WiFi is flawless. Therefore I am pretty sure that my G-Code is okay. But I included my test file at the end.
    Interestingly it seems so fade a bit with higher temperature, but as I will mention later,
    it seems not to be a Heater issue. I even printed PLA at 250°C which didn't helpt.

    Here is where where I strongly though to see a extrusion issue. Every some lines it underextrudes (see the gaps between lines).

    And this is the machine in question. Please ignore the cables and hanging cable guide since I changed and messed a lot over the last days.

    This is what M122 gives me during printing. The only strange thing is see is that the SG value is sometimes "not available"

    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later
    Board ID: 08DGM-917DA-G4MSD-6J9D6-3SJ6M-99TB9
    Used output buffers: 3 of 24 (13 max)
    === RTOS ===
    Static ram: 27980
    Dynamic ram: 93880 of which 64 recycled
    Exception stack ram used: 632
    Never used ram: 8516
    Tasks: NETWORK(ready,384) HEAT(blocked,1224) MAIN(running,1732) IDLE(ready,80)
    Owned mutexes: WiFi(NETWORK)
    === Platform ===
    Last reset 00:25:26 ago, cause: software
    Last software reset at 2020-12-20 14:35, reason: User, spinning module GCodes, available RAM 8552 bytes (slot 0)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN
    Error status: 0
    MCU temperature: min 31.9, current 35.1, max 35.5
    Supply voltage: min 22.9, current 23.7, max 24.4, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: ok, SG min/max 0/1023
    Driver 1: ok, SG min/max 0/246
    Driver 2: standstill, SG min/max 0/237
    Driver 3: standstill, SG min/max 0/195
    Driver 4: ok, SG min/max 0/193
    Date/time: 2020-12-20 15:01:12
    Cache data hit count 2581302100
    Slowest loop: 65.63ms; fastest: 0.13ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Storage ===
    Free file entries: 9
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest read time 1.2ms, write time 28.7ms, max retries 0
    === Move ===
    Hiccups: 0(0), FreeDm: 139, MinFreeDm: 106, MaxWait: 306471ms
    Bed compensation in use: none, comp offset 0.000
    === MainDDARing ===
    Scheduled moves: 50137, completed moves: 50098, StepErrors: 0, LaErrors: 0, Underruns: 0, 0  CDDA state: 3
    === AuxDDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0  CDDA state: -1
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
    Heater 0 is on, I-accum = 0.0
    Heater 1 is on, I-accum = 0.3
    === GCodes ===
    Segments left: 1
    Movement lock held by null
    HTTP is idle in state(s) 0
    Telnet is idle in state(s) 0
    File is doing "G1 X106.727 Y111.16 E0.01907" 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
    Daemon is idle in state(s) 0
    Autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 229.38ms; fastest: 0.00ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
    HTTP sessions: 1 of 8
    - WiFi -
    Network state is active
    WiFi module is connected to access point 
    Failed messages: pending 0, notready 0, noresp 0
    WiFi firmware version 1.23
    WiFi MAC address ***************
    WiFi Vcc 3.38, reset reason Unknown
    WiFi flash size 4194304, free heap 24896
    WiFi IP address
    WiFi signal strength -47dBm, reconnections 0, sleep mode modem
    Socket states: 0 0 0 0 0 0 0 0

    Config file:

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Sat Sep 26 2020 02:29:48 GMT+0200 (Mitteleuropäische Sommerzeit)
    ; General preferences
    G90                                                    ; send absolute coordinates...
    M83                                                    ; ...but relative extruder moves
    M550 P"*********"                        ; set printer name
    M669 K1                                            ; select CoreXY mode
    ; Network
    M552 S1				              ; enable network
    M586 P0 S1                                         ; enable HTTP
    M586 P1 S0                                         ; disable FTP
    M586 P2 S0                                         ; disable Telnet
    ; Drives
    M569 P0 S1                                         ; x  physical drive 0 goes forwards
    M569 P1 S1                                         ; y  physical drive 1 goes forwards
    M569 P2 S0                                         ; z1 physical drive 2 goes backwards
    M569 P4 S0                                         ; E0 physical drive 3 goes forwards
    M569 P3 S0                                         ; z2 physical drive 4 goes backwards
    M584 X0 Y1 Z2:3 E4 U3                                    ; set drive mapping
    M350 X16 Y16 Z16 E16 U16 I1                        ; configure microstepping with interpolation  
    M92  X80.00 Y80.00 Z400.00 U400.00 E400          ; set steps per mm with interpolation
    M566 X900 Y900.00 Z720 Z720 E720.00                ; set maximum instantaneous speed changes (mm/min)
    M203 X18000.00 Y18000.00 Z1200.00 U1200.00 E6000   ; set maximum speeds (mm/min)
    M201 X5000.00 Y5000.00 Z200.00 U200.00 E250.00     ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z900 U900 E800 I10                ; set motor currents (mA) and motor idle factor in per cent
    M84 S360                                             ; Set idle timeout
    ; Axis Limits
    M208 X0 Y0 Z0 U0 S1                                          ; set axis minima
    M208 X500 Y500 Z600 U600 S0                         ; set axis maxima
    ; Endstops (! is inverting)
    M574 X1 S1 P"!xstop"                                ; configure active-high endstop for low end on X via pin xstop
    M574 Y1 S1 P"!ystop"                                ; configure active-high endstop for low end on Y via pin ystop
    M574 Z1 S2                                          ; configure Z-probe endstop for high end on Z
    M574 u1 S2                                          ; configure Z-probe endstop for high end on Z
    ; Z-Probe
    M558 P1 C"!" H2 F120 T6000                ; set Z probe type to unmodulated and the dive height + speeds
    G31 P500 X-50 Y-5 Z-1                                            ; set Z probe trigger value, offset and trigger height
    M557 X20:480 Y20:480 S80                                   ; define mesh grid
    M558 T18000	H1.5					   ; Travel speed (T) between probing points and measuring height (H)
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138     ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                                                      ; create bed heater output on bedheat and map it to sensor 0
    M307 H0 B1 S1.00                                                                ; enable 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
    M308 S1 P"e0temp" Y"thermistor" T100000 B4138      ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1                                                       ; create nozzle heater output on e0heat and map it to sensor 1
    M307 H1 B0 S1.00                                                               ; disable bang-bang mode for heater  and set PWM limit
    ; Fans
    M950 F0 C"fan0" Q100                         ; 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" Q100                         ; 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 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
    M564 H0					         ; allow axis movement before homing							
    M572 D0 S0.160       			         ; Pressure advance 
    M207 F3600 S1.0				         ; set Firmware Retraction
    ; Miscellaneous
    M575 P1 S1 B57600                       ; enable support for PanelDue
    M501                                                ; load saved parameters from non-volatile memory
    T0				                          ; select first tool
    M911 S15 R22 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
    M591 P2 C"e0stop" S1 D0 		           ; filament monitor connected to E1 endstop

    Config override:

    ; config-override.g file generated in response to M500 at 2020-12-20 13:58
    ; This is a system-generated file - do not edit
    ; Heater model parameters
    M307 H0 A134.4 C355.9 D0.8 S1.00 V23.9 B1
    M307 H1 A1179.8 C286.0 D12.8 S1.00 V24.0 B0
    ; Workplace coordinates
    G10 L2 P1 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P2 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P3 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P4 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P5 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P6 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P7 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P8 X0.00 Y0.00 Z0.00 U0.00
    G10 L2 P9 X0.00 Y0.00 Z0.00 U0.00

    Now here is my List of things I tried and didn't helped:

    - Changing Flowrate
    - Interpolation (on/off)
    - Microstepping 1-256
    - Belt tension (low/high)
    - changed Z-Rods, making sure that there is no z-wobble
    - print with just one of the z-rods
    - changed Z-coupplers to different type with z-support balls
    - printing without linear ball bearings (this is ridiculous unstable :D)
    - changed couplers and PTFE on hotend
    - print PLA at 250°C (no change…)
    - tested three different Hotends (V6, Ender3-Style, Volcano)
    - changed Hotend Temperature Sensor
    - swapping extruder heater cartrige and cable with a shorter one.
    - tested three different extruder / I even swapped the Hemera from my „good“ printer onto it
    - Re-run PID auto tune
    - disable Filament sensor
    - Measured Heater Power Voltage / PWM Signal for strong fluctuations
    - unplugged panel due
    - changed Acceleration from 1000 mm/s^2 to 100 mm/s^2
    - changed X,Y, Z1, Z2 Jerk from 6 mm/s to 1 mm/s
    - make sure that the printer is on solid ground and not shaking
    - switch from Core XY to Cartesian (yes, that works for round models somewhat)
    - flip thooth pulleys to outside, so that only the flat side touches the flat idlers
    - printing the exact gcode on my Ender 3 with duet – looks perfect, no issue there.
    - changed motor currents (X,Y,Z1,Z2) from 100mA till 1200mA
    - disable Pressure advance
    - disable retraction
    - Check fan for vibrations and print without Fan
    - checked that Printbed is level
    - checked that the frame is square (yes, less than < 1° maximum)
    - checked that the gantry is square (about 1-2° off, very hard to adjust)
    - swapped the Duet board from the other Printer (which is working fine) with this Printer  (but same SD card/software)
    - transferred the firmware from the working printer onto the sd card of the  printer in question and changed only necessary code
    - tranferred the „new“ firmware onto the SD Card of the working printer (basically check the SD card for issues)
    - test different filaments PLA/ABS/ASA  (i could be wrong but it seemd that my ABS has less wobble but more random noise)
    - homing with deactivated inductive sensor (z-stop instead)
    - printing at different locations on the printbed. 
    - swapping the extruder cable with a short one
    - swapping PSU with the one from the „good“ printer
    - check Motor drivers for thermal shutdown (Thermal Image attached, seems ok)

    duet2wifi thermal front.jpg

    duet2wifi thermal back.jpg

    After intensive testing over the past 7 Days I still have no clue what the Issue could be.
    The only setting that changes anything is the speed. The most likely thing I thought is a unstable hotend temperature, but I was unable to proof or solve it. It is also unlikely z-wobble. Not just because of all the things I tested, but also because the rings are not spiral. I belive its only one layer, that has extrusion issues, but stretches out over some layers because the pressure in the nozzle takes some time to equalize.

    I think I've sorted out almost everything that might has to do with mechanical problems or hardware. All that's left at the moment is the software. I would also find it hard to believe that there is a problem, but perhaps I have missed something that you would see.

    Therefore I am really stuck at the moment... If you have any suggestions what I could check next, I would be very very happy!

    Thanks in advance!

    G-Code of my Testfile:
    zylinder 25x25x50-1.gcode

  • Check to make sure your nozzle/block/heat break aren't loose. I had similar looking prints until I discovered it...

  • @BDubs Unfortunately, as mentioned, I even swapped my Hemera hotend on it, which was working fine on the other printer. I am very sure, that the Nozzle,Block or heat brake is fine...

  • Moderator

    Have you PID tuned the bed heater? Expansion and contraction from bang-bang on the bed is known to cause Z banding like this.

  • @Phaedrux Yes. I tried PID as well as Bang-Bang but no luck. However I switched back to Bang bang since the PWM signal from the PID control caused more audible noise.

    Edit: I am not sure I covered this explicitly in my tests. I will rerun this right now, to be 100% sure.

  • Moderator

    Do a test print with the bed heater off entirely to verify.

  • @Phaedrux good idea!

  • @Phaedrux

    I did Some tests now, and on the first one was still some decent Z banding - but in a random order!
    Then I placed a model right in the middle of the bed (if it would be because of thermal expansion, then it should be most visible there, I think) and run a test without and with Bed heating (Bang-Bang).

    This is the Result:

    Hell YEAH! This was it!
    @Phaedrux can I offer you a Coffee?

    Fun fact: I measured the cycle time for the Bed heater turning on: It takes between 15-17 Seconds 🤣

    So the next question is: Does PID solve the problem entirely?
    And how common is this problem? I searched a lot for types of z wobble, but this one is new to me, although it makes a lot of sense.

    Edit: Is there a way to change the name of the topic (or mark it as solved)?

  • Cool!

    Have you tried printing in a corner of the bed?

  • @theruttmeister yes. I did most of my testprints in the corner. However with Bang-Bang ON it is still noticeable. I am trying it now it PID PWM mode.

  • it look like Z banding like some said. threaded rod must be flexing under the weight

  • @Dad003 I think the remaining artifacts could be to some amount z-wobble. However, the biggest point was definitely the Bang-Bang Mode.

    Now here is something interesting: I changed to PID-Mode and the wobble is very present like in Bang-Bang mode! I'm running a new auto tune run now. I hope, that helps.

  • Moderator

    PID tuning should help quite a bit by keeping the temp steady, but from what I know about the Tronxy bed is that it's very large and very thin and when current is applied it causes it to deform. I would think that once the bed is at temp and stable it shouldn't be much of a problem.

    You can also experiment with different PWM frequencies in the M950 command for the bed heater.

    Q500 is the default. Can try higher or lower.

    Also make sure you're tuning the bed from cold.

  • I used M307 with the Fnnn parameter to set the frequency without luck. But Qnn on M950 works! Thanks @Phaedrux !
    Running now inaudible at 20 Hz.
    Does anybody know if this could be unhealthy for the PSU Capacitors?

  • A number of years ago when i was printing on a thick aluminum plate 12mm cast fixture plate i was having the same issue using bang bang for the bed heater. If you put a dial indictor on the place you will actually see the dial indicator moving up to .2mm during heating. I changed the bed heater to PID and the issue was greatly reduced. One issue with aluminum is the thermal expansion which is why i have gone to borosilicate glass and all the expansion problems went away.

Log in to reply