Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Relevant data and info.
Please note that this is a blatant copy and paste from another forum. But due to my desires to drive more people to this site to show support for olivers initial work in this area I will repost it all here instead of linking to the other forum Thread. So please excuse the length of this first post as I am just trying to get the info flow started.
I know there is more out there so if you find relevant important info please post it here in this thread, It would not hurt to start a second thread on the subject , but lets consider this one thread a one stop for all info found.

The thread in "The Latest in 3D Printing" section was getting longer and more detailed, so here's a new thread specifically to discuss the XYZprinting Da Vinci 1.0 3D printer and information on getting extra functionality out of it.
Original thread:

DISCLAIMER: I am not responsible for any claim, damages, injury, or other liability resulting from use of the information provided below. smile
Generating gcode for this printer
Here's a Slic3r config that works for me and results in prints comparable to those sliced from XYZware, although I have not at all tried optimizing the parameters for it. Credits to harrypottar for posting a base configuration that I based this off of. … config.ini
I have also tried configuring Cura, but it always starts printing in the air a bit above the bed, and I haven't looked into it further. Here it is in case anyone wants to take a crack at fixing it, probably just needs a Z offset adjustment. … config.ini

Bed size is 200x200x200 mm, and the center of the bed is 100, 100.
There seems to be some confusion over what the real nozzle diameter is, but I'm using 0.4mm and it seems to work fine.
Setting your own extruder and bed temperatures in the gcode DOES work; the values in the filament cartridge only specify the initial temperatures to bring the bed and extruder up to while the printer is preparing to build. After it reaches those temperatures, the gcode takes over and can set the extruder and heated bed temperatures as normal.

Loading gcode into XYZware
You need to add the headers / information that the printer expects to the very top of your gcode file. Here's what the start of your gcode file should look like:
; filename = composition.3w
; machine = daVinciF10
; material = abs
; layer_height = 0.2
; total_layers = 173
; total_filament = 0.00
; extruder = 1
G21 ; set units to millimeters
M190 S100 ; wait for bed temperature to be reached
M104 S230 ; set temperature
M109 S230 ; wait for temperature to be reached
G90 ; use absolute coordinates
G92 E0
M82 ; use absolute distances for extrusion
G1 F1800.000 E-1.00000
G92 E0
G1 Z0.300 F7800.000
G1 X81.765 Y82.676 F7800.000
G1 E1.00000 F1800.000
G1 X82.795 Y81.666 E1.10023 F540.000
G1 X83.405 Y81.116 E1.15730
blah blah blah more gcode blah blah blah
Here's an example gcode file that is ready to open in XYZware and print: … ware.gcode
XYZware for Mac can open gcode in plaintext as long as you add the headers above, no base64 encoding necessary.
On XYZware for Windows, you can base64 encode the gcode file after adding the headers, and rename the extension to .3w. (I have not tested if it works without base64 encoding)

Loading gcode onto the printer's SD card
landsharkmine has a nice post on how to load gcode files directly onto the SD card in the back of the printer:
For me, using the DEMO prints on the latest firmware versions still counts down the filament usage, so I prefer to set total_filament = 0.00 in the gcode files that I load through XYZware instead.

Here's a picture of the main board: … iboard.jpg
The main MCU is an ATSAM3X8E, with A4988 stepper drivers on separate carrier PCBs. You can see the SD card as well. The ATSAM3X8E is the same as in the Arduino DUE, so it may even be possible to use the existing board and run "RepRap Firmware", which is being developed for the DUET 3d printer board.

Using your own filament / Resetting the filament cartridge
If you use your own filament, you will probably want to reset the filament cartridge at some point. The printer comes with 300g (120m) of filament in a starter cartridge, and Oliver Fueckert over at Voltivo has an excellent blog post on how to reset the Microchip 11LC010 1K EEPROM in the cartridge, which is used to hold information about filament remaining, filament original capacity, initial bed temperature, initial extruder temperature, and perhaps other unknown variables.
The filament reset Arduino sketch only works with the Arduino Uno (and probably other ATmega168/328-based variations). It did not work with my Arduino Leonardo, and there are reports it does not work with the Mega, Pro Mini, or Micro either, probably due to the NanodeUNIO library only working with the ATmega168/328 chips.
I had some problems with very poor quality prints that were coming apart and delaminating after I reset my cartridge, but it was fixed after I downgraded the firmware from version 1.1.I back to 1.1.G. I don't know if it was fixed because the firmware loading process also reloads information onto the EEPROM, or if firmware version 1.1.I has extra checks in it to detect modified filament cartridges.

Downgrading / loading a different printer firmware
You can downgrade / reload your printer firmware using the Windows version of XYZware by disconnecting from the internet and attempting a firmware upgrade inside XYZware:
(This only works on Windows as of now, Mac version of XYZware doesn't pop up a file chooser.)
1. Disconnect from the internet
2. Try to upgrade firmware using the button in the About / Help dialog box within XYZware
3. After a while, it times out and opens a file browser to select a firmware file.
Credits to Stosh over at the Voltivo blog post comments, who helpfully uploaded a copy of firmware version 1.1.G: … ELEASE.bin
Printing without XYZware
The printer shows up as regular serial port, I'm using 115200 8N1.
I have a small python script that can communicate with the printer directly, and get serial number, status, temperatures, etc. Credits to joshj for getting me some captures of the serial communication. …
example usage on Mac:
python /dev/tty.usbmodem801211 minimal.gcode
It only works with "minimal.gcode" right now, there's a checksum calculation that I haven't figured out yet, so it's hardcoded for that test file.


This machine uses repeitier software modified for xyz.
I can get repietier to connect but davinci is expecting outputs differently than repietier send so all gcode is ignored.

For what it's worth, not all files created by Slicer need the header changed and I have not had time to look into why that is yet or what is different in the ones that need changed.
People were also asking for slicer settings, well first off I made the nozzle size .4.
Upped the extruder multiplier to 1.05 or so.
I lowered all the speeds in the slicer config by alot, while it still printed ok at the default slic3r speeds, it seemed alot noisy and rough on the machine.
All speeds are in the main body of the g-code, unless this is different than commercial cnc machines all lines with a ; in the front are nothing but comments and are ignored by the gcode translator(printer). The header lines that have a ; in front of them are NOT read by the machine and are ignored so replacing them with the XYZ header is fine. For what is wort I do not "add to the slicer header I straight replace it and the speeds are exactly what I set them to be in slic3r.
Set it to do random start points per layer so you dont get that start stop edge blobbing like in the xyz ware.
So now that is about it, everything else really is a print by print basis. like on large overhanging prints I set it to do outer perimeter last and so on.
It is really a trial and error deal, but you can get very good results.

OK so here is a txt file of a test print sent from xyzware to davainici … sp=sharing


I have a small python script that can communicate with the printer directly, and get serial number, status, temperatures, etc. Thanks for the serial captures, joshj! …
example usage on Mac:
python /dev/tty.usbmodem801211 minimal.gcode
It only works with the minimal.gcode right now, there's a checksum calculation that I haven't put into the python script yet, it's hardcoded for the minimal.gcode example.
EDIT: earlier it wasn't working because it was missing a "print_time = 196" line from the header, now the python script will print the minimal.gcode at least.


Great work sir.
The following information may or may not be of use to you. This was all sent to me by oliver, the creator of the cart hack.
This is what I found digging through the MAC version. It’s the serial commands its using:
I tried a few and it works. Just send this for example: XYZ_@3D:8
I guess this is what you are after:
"uploadGCodeText" = "XYZ_@3D:4";
"latestBlockSent" = "XYZ_@3D:90”;
Just need to find out how big each block is.

"prefix" = "XYZ_@3D:";
//"disconnect" = "XYZ_@3D_S10_X";
//"connect" = "XYZ_@3D_S10_0";
//"start print" = "XYZ_@3D_S10_1";
//"test case" = "XYZ_@3D_S10_2";
//"uploadFirmwareBinary" = "XYZ_@3D_S10_3";
//"uploadGCodeText" = "XYZ_@3D_S10_4";
//"extruder Temperature" = "XYZ_@3D_S10_101";
//"get standard info" = "XYZ_@3D_S10_102";
//"get advanced info" = "XYZ_@3D_S10_103";

"disconnect" = "XYZ_@3D:-1";
"connect" = "XYZ_@3D:0";
"startOnlinePrint" = "XYZ_@3D:1";
"test print" = "XYZ_@3D:2";
"injectManualCommand" = "XYZ_@3D:2";
"uploadFirmwareBinary" = "XYZ_@3D:3";
"uploadGCodeText" = "XYZ_@3D:4";
"latestBlockSent" = "XYZ_@3D:90";
"uploadBinaryDidFinish" = "XYZ_@3D:91";
"uploadGCodeDidFinish" = "XYZ_@3D:92";
"machineLife" = "XYZ_@3D:5";
"read eeprom A" = "XYZ_@3D:6";
"read eeprom B" = "XYZ_@3D:7";
"machine status" = "XYZ_@3D:8";
"printer status" = "XYZ_@3D:8"; // same as machine status
"get standard info" = "XYZ_@3D:201";
"get advanced info" = "XYZ_@3D:202";
//example "XYZ_@3D:101,1"
//example "XYZ_@3D:101,2"
//example "XYZ_@3D:103,2"
"extruder on" = "XYZ_@3D:101";
"extruder off" = "XYZ_@3D:102";
"extruder Temperature" = "XYZ_@3D:103";

Thanks for the summary Josh!
Thanks Josh.

Do you suppose it would be a good idea to open more specific threads? For example:
1 thread specifically on the Board used in the Da Vinci (Including whitepapers, jtag/unbricking methods, links to software, etc)
Another thread about the LCD controller.
Another one on the motors used, etc


Forum Jump:

Users browsing this thread: 1 Guest(s)