Sunday 31 May 2020

XYZ Davinci Pro and Prusaslicer


The XYZ Davinci Pro slicer is not particularly configurable, and if you have replaced elements such as the hot end and nozzle size and the extruder, it doesn't provide sufficient access to create effective g-code.

The Prusaslicer comes with a number of pre-configured machines and filaments, but the XYZ Davinci Pro isn't included amongst them.

PrusaSlicer Configured for the Davinci 1.0 Pro

Configuring the Printer

Once the software is installed, you should select the settings gears icon next to the printer drop-down.

General Settings

Max Height: 200
Z-Offset: 0
Number Extruders: 1
Print Upload: section is not applicable, you must use the XYZ or minimover software for upload.
G-code flavour: Marlin
Relative E-Distances: No
Firmware Retractions: No
Volumetric E: No
Variable Layer Height: Yes

Bed Shape: 200 x 200
Origin: 0, 0
Texture: Useful so you can remind yourself where the door is - note that the image is effectively upside-down - Save a copy of this image if it helps ... it is recommended that you save the file in the .PrusaSlicer folder so that all of the configurartion files are together.

Davinci Pro Bed Texture Image

Custom G-Code

The Custom G-Code us used to configure the printer at the start and end of the prints.  It also allows code to be inserted between layers, which is particularly useful with more advanced configurations.
The Custom G-Code accepts variables such as layer height and temperatures, and also accepts conditional statements.

The XYZ software is slow to start up, and only does one thing at a time - raise the bed, start the head heating, then start the bed heating.  It also lowers the bed after you press a button at the end of the print.  This G-Code attempts to speed these things up.

Note that the LCD panel on the printer is disabled until the monitor M108 command is seen in the G-Code, so it is essential that this is included as a minimum if you ever want to get to the Cancel menu option (for example) during a print.

The G-Code files can be found in the zipfile at the bottom of this blog.

Machine Limits

At the moment, I've left this section unedited as I've not experimented to identify what the actual limits are, so these can be left at their default.

Extruder 1

Nozzle Diameter: 0.4 for the stock extruder
Layer Height Min: 0.1
Layer Height Max: 75% of your nozzle diameter
Retraction: 2mm
Retraction Speed: 60mm/s
Wipe While Retracting: Yes
Retract Before Wipe: 10%

Note: As this is a bowden style printer (the drive is remote from the head), the control of the actual filament at the head is subject to inaccuracies due to the properties of the filament (e.g. elasticity).  Wiping while retracting can compensate somewhat for this.

Note on Retraction: If this is too far, or too fast, it can pull molten filament up into the heatsink part of the head, which can then cool and never melt again, causing a blockage.  Keep the retraction under 3mm.


Save the printer settings - if you have a head that allows you to change the nozzle size, make sure the nozzle size is part of the save name.

Now return back to the 'platter' tab / page.  You should now see that the print bed is using your texture.

Configuring the Filament

Select the settings gear icon next to the filament and create a new filament.

Unfortunately here, you don't seem to be able to copy / use the stock filaments database with your custom printer, but you can look at them at least.

Filament settings are normally specific to manufacturers and not printers. however, if you have replaced the extruder with one that passes filament at a different rate, you will need to compensate for that here, as the firmware on the printer assumes you are always using the default XYZ extruder.

If you have modified / replaced the extruder, you will have to compensate with the extrusion multiplier - start by setting the extrusion multiplier to 100 / actual amount of filament fed when 100mm requested - seem my blog on replacing the extruder for more information on measuring this.

It is important that you also set the maximum flow rate for the filament in the Advanced settings.  Now this will depend on whether you are using the stock hot end or have upgraded.  The maximum flow rate figures also need adjusting to compensate in the event that you have modified / replaced the extruder.

My settings are as follows:

Files Download

Settings Bundle:

Wednesday 27 May 2020

Replacing the Davinci 1.0 Pro Extruder with the WINSINN Ender 3 Dual Gear Extruder


For my 7 year old Davinci 1.0 Pro printer, the extrusion has become unreliable.  I first put this down to blockages in the head, then the head itself, but replacing the head with an E3Dv6 did not really help much - yes, it can print in PETG with a 0.6mm nozzle, but can't print with PLA or with anything with a 0.4mm nozzle without the extruder skipping.

Model Suffering From Extrusion Problems


I bought an aluminium Ender3 dual-gear extruder, which actually bolts in in place of the default Davinci Pro one.  The new extruder is much simpler, and works fine without the sensor electronics that are part of the Davinci Pro system.

The following summary shows how the modification affects the printer.
  1. Loading filament works fine.
  2. When unloading, the printer no longer knows when to stop, so you have to select 'OK' manually.
  3. The size of the gear is smaller, and when you tell the printer to pass 100mm of filament, it passes a shorter length, so a compensation is required in the slicer.



  • Unload any filament currently being used.
  • Unclip the panel behind the printer (that the filament feeds through)
  • Open the lid and identify the location of the lid switch - you will need to avoid this.
  • Using the flat blade scraper, pop-off the left and right panels.
  • Reaching underneath, release the extruder cover and pull this away.
  • Disconnect the cable to the extruder sensor assembly.
  • Remove the complete extruder sensor assembly to the state where the motor is free-floating.
  • Note that the connector to the sensor board is not required, and can be left disconnected.


Assembly Steps

Step A

  • Temporarily hold the motor in place with the small flat-headed screw
  • Using a small allen key, undo and remove the old drive teeth
  • Install the new drive teeth ensuring that the cog/gears are at the bottom.
  • loosely tighten the allen key such that the gears turning also turns the spindle.

Step B

  • Install the base part of the assembly using three screws, ensuring the countersunk screw is in the correct location.
  • Adjust the height of the gears using a piece of filament as a guide

Step C

  • Prepare the clamp part of the assembly, spring and screws as shown in the photograph

Step D

  • Install the spring between the captive screw and adjustment cap
  • Hold closed and install the long vertical bolt
  • Undo / tighten the spring tension screw until the spring just starts to rotate

Calibration Measurement

The new gearing has a different ratio to the original XYZ mechanism.  Extrusion is achieved using GCode commands which tell the motor to expel, say, 100mm of filament.  With a crafted gcode file, it is possible to measure the actual extrusion amount enabling an adjustment factor to be calculated.

This calibration section is optional - i.e. everyone _should_ get a similar answer, given the same original printer gearing and software, the same modified extruder gearing, and the same filament type and same environmental temperature ....

The following GCode achieves this:

G21 ; set units to millimeters
M108 ; Check Temperatures
M107 ; Fan Off
G90 ; use absolute coordinates
G92 E0
G28 X0 Y0 ; home X and Y axes
Extrude 5mm
G1 F500 E5
; First Move ready to extrude 100mm
G1 X50 Y100
Extrude 100mm
G1 F500 E105
; Second Move ready to retract 100mm
G1 X150 Y100
Retrieve 100mm
G1 F500 E5
M103 ; turn off extruder and retraction
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
M107 ; turn off fan
G28 X0 Y0 ; home X and Y axes
M84 ; disable motors
M82 ;absolute extrusion mode

  • Put a short length of filament into the feeder, and mark the position with an indelible marker as it goes into the feeder.
  • Paste the GCode into a file called 100mmextrude.gcode
  • Load this file into the XYZ software and send to the printer.
  • The printer will warm up and then home the head.
  • It will attempt to pass through 5mm of filament - at this point, mark the filament at the location where it goes into the feeder.
  • The printer will move the head (to give you time to mark) and then extrude 100mm of filament
  • Mark the new filament location.
  • The printer will move the head again before retracting the 100mm of filament - you should see your previous mark again.
  • Once the sequence is complete, remove and measure the distance between the two "100mm" marks.

If nothing changes, everyone should get a similar reading - which, for me was 70mm.

100mm Extrusion Filament Marking

Software Configuration

The printer does not give you access to program / configure the gear ratio,, nor does it support the M92 gcode command that would allow you to specify the extruder stepper ratio, so this has to be done in the slicer, when generating the GCode files for printing.

With the calibration measurement, an adjustment of 100/70 can be made for the extruder, i.e. 143% - i.e. the software needs to be told to use 143% of the filament it is expecting.

The option can be found in different places, depending on which slicer you are using:

  • Cura: Flow Rate
  • Slic3r: Filament Extrusion Multiplier
  • XYZ: Extrusion Ratio
Note that I have tried to use the Cura (4.5.0) Experimental Flow Rate Compensation Factor, and this did not appear to affect the resulting gcode file (apart from adding a comment in the header).

Note that this isn't an exact science (well it is, but the maths and the number of variables are far to complicated), and there are other aspects that are taken into consideration with the compensation factor - different filaments expand at different rates at different temperatures, so this factor will need tweaking for each filament supplier and material (just as before), but it now needs tweaking with more of an offset than before!