Horrible print quality vs Arduino, my bad ?

  • Hi,

    We are a small prototyping company based in Portugal. Last summer, for our hardware upgrades, I was charged with producing an optimized 3D Printer for our necessities. After investigating much, Duet Wifi seemed to be the best horse in box and we ordered in total 8 units (+5" screens, PT100, and one X5).

    Unfortunately we have been unable to make them print decently ever since.

    Our current problems are ;

    Unstable wifi, it spontaneously resets it's IP.
    Wifi connection is not stable on a wifi crowded environment. (But Arduinos on a Pi Zero thrive in the same conditions)

    After Nozzle and BED PID calibrated (and transistor leds just flickering) the main printer illumination is also flickering, which I assume is some sort of tension instability.
    When we power the bed from a relay, the main illumination no longer flickers.
    This happens in both 12v and 24v power supplies, with all our boards.
    VIN shows less than 0.5v variation at all times. (normally even less than 0.5v)

    Finally, and the worst part, we have been enable to obtain a single good quality print.
    I join in this post a a picture of two benchies, printed on the exact same printer, with the same gCode (obtain with Cura 3.0 on default ABS parameters, this is not our usual parameters but it's to obtain a neutral test), and with firmware parameters almost identical (I'll post both). The only difference being, the acceptable quality own was printed using an arduino, and the bad own a a Duet.

    Now, I've seen very good prints in this forum and I can only assume we are doing something very wrong somewhere and am thus asking for your help.

    Duet Config :

    M111 S0 ; Debug off
    M550 P[erased] ; Machine name and Netbios name (can be anything you like)
    M551 P[erased] ; Machine password (used for FTP)
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xDE ; MAC Address alterar mac address no caso de nova impressora

    						;*** Networking - Enable for both WiFi and Ethernet boards.

    M552 S1 ; Turn network on

    						;*** Ethernet networking: Adjust the IP address and gateway in the following 2 lines to suit your network

    M552 P192.168.1.108 ; (0 = DHCP)
    M554 P192.168.1.254 ; Gateway
    M553 P255.255.255.0 ; Netmask

    M555 P2 ; Set output to look like Marlin
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves

    M106 P1 T50 H1 ; habilitação da ventoinha a 50º

    ; Machine configuration
    M569 P0 S0 ; Drive 0 goes backwards (change to S0 to reverse it)
    M569 P1 S0 ; Drive 1 goes backwards
    M569 P2 S1 ; Drive 2 goes forwards
    M569 P3 S0 ; Drive 3 goes forwards
    M569 P4 S1 ; Drive 4 goes forwards

    						; If you use an endstop switch for Z homing, change Z0 to Z1 in the following line, and see also M558 command later in this file

    M574 X1 Y1 Z1 S0 ; set endstop configuration (X and Y and endstops only, at low end, active high)
    M667 S1 ; set CoreXY mode
    M350 E16 X16 Y16 Z16 I1 ; set Microstepping and Interpolation On
    M92 X80 Y80 Z400 ; Set axis steps/mm
    M92 E138 ; Set extruder steps/mm
    M906 X1000 Y1000 Z1000 E1000 ; Set motor currents (mA)
    M201 X3000 Y3000 Z100 E10000 ; Accelerations (mm/s^2)
    M203 X15000 Y15000 Z3000 E3600 ; Maximum speeds (mm/min)
    M566 X600 Y600 Z24 E300 ; Maximum jerk speeds mm/minute
    M208 X217 Y217 Z345 ; set axis maxima (adjust to suit your machine)
    M208 X0 Y0 Z0.5 S1 ; ajuste de posição de eixos
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves

    						; Z probe

    M558 P1 X0 Y0 Z0 ; Analog Z probe, also used for homing the Z axis
    G31 Z0.079 P500
    ; Set the probe height and threshold (put your own values here)
    ; The following M557 commands are not needed if you are using a bed.g file to perform bed compensation
    ;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of the Z probe
    M557 P0 X60 Y0 ; Four...
    M557 P1 X60 Y185 ; ...probe points...
    M557 P2 X180 Y185 ; ...for bed...
    M557 P3 X180 Y0 ; ...levelling
    M557 P4 X90 Y92.5 ; 5th probe point for levelling

    						; Thermistors and heaters
    						;*** If you have a Duet board with 1K thermistor series resistors, change R4700 to R1000 to the following M305 commands
    						; You can also use S and B parameters to define the parameters of the thermistors you are using

    M143 H1 S320 ; ajuste de temperatura maxima para 320º extrusora 1
    M143 H0 S150 ; ajuste de temperatura maxima para 120º cama quente
    M305 P0 R4700 H320 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 R4700 T100000 B4725 C0.0000000706 ; Put your own H and/or L values here to set the first nozzle thermistor ADC correction; (Alterado, estava : M305 P1 R4700 H320 L0)
    M305 P2 R4700 T1000000 B3950 ; Put your own H and/or L values here to set the second nozzle thermistor ADC correction (estava : M305 P2 R4700 H320 L0)
    ;M307 H0 A170.8 C782.4 D1.6 B0 ; Activar PID para a CAMA
    ;M301 H0 P505.0 I58.352 D572.5 T0.50 S1.0 ; PID settings para a CAMA ( PID DADO : P505.0, I58.352, D572.5)
    M301 H1 P9.4 I0.559 D44.0 T0.50 S1.0 ; PID settings for extruder 0 ( PID DADO : P9.4, I0.559, D44.0 PID Anterior : M301 H1 P10 I0.10 D100 T0.50 S1.0)
    M301 H2 P10 I0.10 D100 T0.50 S1.0 ; PID settings for extruder 1
    M570 S600 ; Increase to allow extra heating time if needed

    						; Tool definition

    M563 P0 D0 H1 ; Define tool 0
    G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures
    ;*** If you have a dual-nozzle build, un-comment the following 3 lines
    ;M563 P1 D1 H2 ; Define tool 1
    ;G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures

    						;*** If you are using axis compensation, put the figures in the following command

    M556 S78 X0 Y0 Z0 ; Axis compensation here
    T0 ; select first hot end

    Arduino Config :

    //============================== Movement Settings ============================
    // @section motion

    • Default Axis Steps Per Unit (steps/mm)
    • Override with M92
    •                                  X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]

    #define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 400, 138}


    • Default Max Feed Rate (mm/s)
    • Override with M203
    •                                  X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]

    #define DEFAULT_MAX_FEEDRATE {250, 250, 10, 80}


    • Default Max Acceleration (change/s) change = mm/s
    • (Maximum start speed for accelerated moves)
    • Override with M201
    •                                  X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]

    #define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000}


    • Default Acceleration (change/s) change = mm/s
    • Override with M204
    • M204 P Acceleration
    • M204 R Retract Acceleration
    • M204 T Travel Acceleration
      #define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves
      #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts
      #define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration for travel (non printing) moves


    • Default Jerk (mm/s)
    • Override with M205 X Y Z E
    • "Jerk" specifies the minimum speed change that requires acceleration.
    • When changing speed and direction, if the difference is less than the
    • value set here, it may happen instantaneously.
      #define DEFAULT_XJERK 10.0
      #define DEFAULT_YJERK 10.0
      #define DEFAULT_ZJERK 0.4
      #define DEFAULT_EJERK 5.0

    The Hotend is a E3D V6 with a 104Semitec thermistor, same results where obtained with the PT100.
    Bed is a generic 100k thermistor.


    Thank you very much for any insight.


  • Is the steps/mm good for your extruder? Maybe it's just me, but the right benchy looks over-extruded for me.

    Maybe try a print with the extrusion rate set to 80% ?

  • @denke It does look overextrude, when I reduce the steps, it starts to show underextrusions features.

    From what I have understood, all movements are sloppy and "frenetic" instead of fluid.

    Remember this is the exact same printer, with the same steps/min in both firmwares. And same thermistores configured, so it should result in the same temperature range.

  • It has been a while since I have seen It discussed, but do you have M82 or M83 in the start of your .gcode.

  • @number40fan Nothing at the start of the gCode, but I have M83 in the config file, and also have the "relative extruder move" checked in Simplify, which I believe sends the M83 command on it's on. Would this be a problem ? (Pictured benchies where generated on Cura, which I believe does not use the relative extruder moves ?)

    PS: Actually,.. I just checked my Cura gCode and have found this : ;

    Generated with Cura_SteamEngine 3.2.1
    M190 S95
    M104 S230
    M109 S230
    M82 ;absolute extrusion mode

    This could be something,but, if this was all that is wrong, my print should have also been bad in the Arduino, wouldn't it ?

  • @artur said in Horrible print quality vs Arduino, my bad ?:

    Unstable wifi, it spontaneously resets it's IP.

    Have you checked that the MAC address does not exist in your other devices?. Duplicated MACs would generate stability issues.

    Regarding the overextrussion, It may also be the extruder stepper driver losing control. Is the current configuration according to the stepper rating?. I use 70% and works fine.

  • @carlosspr There are no other equal MAC address in our network, and this happens with more than one board (can't say if all).

    Stepper driver is rated for 2.5A, tipically, we are driving them on 800mA since it's more than enough for reliable operation on our machines.

    I've tested the DUET on 0.8A to 2A and the problem is consistent for all currents.

  • Moderator

    @artur using absolute extrusion on the gcode and relative in the firmware is going to cause problems. Cura can use relative as well. It's a hidden setting by default.

  • @phaedrux aren't the relative extrusion of the firmware overrided by the M82 command on the beginning of the gCode ?

  • Moderator

    @artur I was under the impression that the generated gcode was also different, but I could be wrong.

    In Cura do you have RepRapFirmware selected as your gcode flavor?

  • administrators

    If it was an absolute/relative issue then you wouldn't be able to get a print at all. Chances are that you have one of the configuration parameters set vastly different between the two firmwares. Is there any obvious change in the way that the machine moves?

  • @dc42 There is, it looks more Jerky in general. I've tried with the exact same acceleration and Jerk parameters (adjusted between mm/s and mm/min) and it was worse.

    @Phaedrux Good point, it was on Marlin, I'm going to test that. Still, the problem also exists with S3D which has a Marlin/Reprap option selected. So I don't really believe this will solve the issue.

  • @Phaedrux Reprap flavor seems in Cura seems to give the print a better quality, but still not on pair with what we usually get using an Arduino.

    @dc42 The Jerky movement have been lessen by reducing the max acceleration to 1500mm/s2 from 3000mm/s2. It now have the same overall fluidity has the arduino has with 3000mm/s2. What am I missing here ? Is there and hidden parameter I forgot to chance somewhere ?

  • administrators

    @Artur, does the print complete in the same amount of time on the two systems?

    Can you post videos of the same part being printed on your Arduino system and on Duet, with the same speeds and other parameters?

    Because of 3D Meetup Sweden I haven't compared the settings in your Configuration.h and config.g files yet, but I will do that soon.

  • @dc42 I'll make the test, film it and I'll post. Thank you.

Log in to reply