DUET SETUP!
There's a lot of information out there, mostly provided by the community and dc42 (firmware dev). But it's all spread out across various forums, defunct company websites, wiki pages, etc.
The Duet 0.8.5 control board ships with a dinky firmware that needs immediate replacement. Easy enough!
I followed the Commissioning instructions here for establishing communication and flashing firmware:
https://reprappro.com/documentation/com ... connection
I flashed the most recent version of dc42's firmware: 1.10+4 (2016-03-30). You can find the most recent version on his GitHub, in the RepRapFirmware repository, in the dev branch, in the Release directory:
https://github.com/dc42/RepRapFirmware/tree/dev/Release
The Commissioning instructions provide a bossac command to send that firmware to the Duet.
You also need to update the files on the MicroSD card. I found this more complicated, because the instructions make it out to be
really simple. But the instructions are for a cartesian Ormerod printer. They say, basically, to find the "SD-image" directory in the RepRapFirmware dev branch, and then pick the version that matches your printer. Great! Except, uh, my printer's not there...
[img]
http://ldhk.org/img/RepRapFirmwareGitHub_1CB5CBE9.png[/img]
In fact, I don't know anything about any of those printers. I don't even know which one is closest to mine. And frankly, I don't care -- I want the version for
my printer. So I'll make it!
The SD card will need a "sys" directory with a handful of important machine-specific files:
homedelta.g - tells printer how to reset itself to "home" position
config.g - tells printer all about itself
bed.g - tells printer how to calibrate itself automatically
pause.g - tells printer what to do when told to pause a print
resume.g - tells printer what to do when told to resume from a pause
iap.bin - this is some magic that lets you update all these files via the web interface
Folks here have posted their homedelta.g, config.g, bed.g files for others to use as examples:
mhackney's example config.g file for Rostock-style printers
mhackney's example config.g file for Kossel Mini-style printers
3D-Print's example config.g file for Rostock
I found those to be extremely helpful. I started with 3D-Print's config.g and edited it line by line, following instructions and guidance on what each g-code does from
mhackney's blog.
And here's my full config.g as of right now:
Code: Select all
; Custom Rostock Max Metal (non-kit)
; Communication and general
M111 S0 ; Debug off
M550 PPraxis ;a Machine name and Netbios name (can be anything you like)
M551 Prostock ; Machine password (used for FTP)
M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address
;*** Adjust the IP address and gateway in the following 2 lines to suit your network
M552 P10.0.0.5 ; IP address.
M554 P10.0.0.10 ; 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
;M575 P1 B115200 S1 ; Set auxillary serial port baud rate and require checksum (For PanelDue)
;Turn off fans
;M106 I1 ; fans are inverting
M106 P0 S0 ; Turn off Fan 0 (backward compatible with older firmware)
;M106 P1 S0 ; Turn off Fan 1
M106 P1 T60 S55 ;Activate Fan #1 if the extruder temp is over 60C.
; Axis and motor configuration
M569 P0 S0 ; X Drive 0 goes backwards
M569 P1 S0 ; Y Drive 1 goes backwards
M569 P2 S0 ; Z Drive 2 goes backwards
M569 P3 S0 ; E0 Drive 3 (extruder) goes backwards
;M569 P4 S1 ; E1 Drive 4 goes forwards
;M569 P5 S1 ; E2 Drive 5 goes forwards
;M569 P6 S1 ; E3 Drive 6 goes forwards
;M569 P7 S1 ; E4 Drive 7 goes forwards
;M569 P8 S1 ; E5 Drive 8 goes forwards - not used with 2-fans version of firmware.
M574 X2 Y2 Z2 S1 ; set endstop configuration (all endstops at high end, active high)
;*** The homed height is deliberately set too high in the following - you will adjust it during calibration.
M665 R133.65 L300 B140 H333.79 X-1.89 Y0.61 Z0 ; set delta radius, diagonal rod length, printable radius and homed height
M666 X0.77 Y0.01 Z-0.79 ; put your endstop adjustments here, as given by auto calibration 22/05/15
M92 X80 Y80 Z80 ; Set axis steps/mm
M906 X1250 Y1250 Z1250 E1500:1500:1500:1500:1500:1500 ; Set motor currents (mA); set each extruder explicitly
M906 I40 ; Set motor idle factor to 100% while testing so they don't idle at all
M201 X1000 Y1000 Z1000 E1000 ; Accelerations (mm/s^2) Set all E-motors the same
M203 X20000 Y20000 Z20000 E3600 ; Maximum speeds (mm/min) Set all E-motors the same
M566 X1200 Y1200 Z1200 E1200 ; Maximum instant speed changes mm/minute. Set all E-motors the same
; Thermistors
; Duet0.8.5 uses 4.7K resistors
M305 P0 T100000 B3950 R4700 H30 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction
M305 P1 T100000 B4267 R4700 H30 L0 ; Put your own H and/or L values here to set the 1st nozzle thermistor ADC correction
M305 P2 T100000 B4267 R4700 H30 L0 ; Put your own H and/or L values here to set the 2nd nozzle thermistor ADC correction
M305 P3 T100000 B4267 R4700 H30 L0 ; Put your own H and/or L values here to set the 3rd nozzle thermistor ADC correction
M305 P4 T100000 B4267 R4700 H30 L0 ; Put your own H and/or L values here to set the 4th nozzle thermistor ADC correction
M305 P5 T100000 B4267 R4700 H30 L0 ; Put your own H and/or L values here to set the 5th nozzle thermistor ADC correction
;M305 P6 T100000 B4267 R4700 H30 L0 ; Put your own H and/or L values here to set the 6th nozzle thermistor ADC correction
M570 S180 ; Hot end may be a little slow to heat up so allow it 180 seconds
; Tool definitions FOR stock SeeMeCNC hot end - Tool 0.
M563 P0 D0 H1 ; Define tool 0
G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures
M92 E477.92; Set steps/mm for extruder 0.
;*** If you have a dual-nozzle build, un-comment the next 2 lines
;M563 P1 D1 H2 ; Define tool 1
;G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures
;*** With a Duex 4 add 3 more tools
;M563 P2 D2 H3 ; Define tool 2
;G10 P2 S0 R0 ; Set tool 0 operating and standby temperatures
;M563 P3 D3 H4 ; Define tool 3
;G10 P3 S0 R0 ; Set tool 0 operating and standby temperatures
;M563 P4 D4 H5 ; Define tool 4
;G10 P4 S0 R0 ; Set tool 0 operating and standby temperatures
;M563 P5 D5 H6 ; Define tool 5
;G10 P5 S0 R0 ; Set tool 0 operating and standby temperatures
// Z probe and compensation definition
;*** If you have an IR zprobe instead of a switch, change P4 to P1 in the following M558 command
;*** FSR is a switch, so set to P4! Is H3 important?
M558 P4 X0 Y0 Z0 ; Z probe is a switch and is not used for homing any axes
G31 X0 Y0 Z0.57 P500 ; Set the zprobe height and threshold (put your own values here)
;*** If you are using axis compensation, put the figures in the following command
M556 S78 X0 Y0 Z0 ; Axis compensation here
M208 S1 Z0 ; set minimum Z
;
T0 ; select first hot end.
This config.g is imperfect! I don't trust the Z-probe height (G31 line), for one. And I'm not sure if I have the TrickLaser CF Arm length set correctly (M665 line) -- I have it at L300 but I'm seeing
posts where people use L270. I don't know what to believe anymore. :/
Moving on! Here's my bed.g file, which sets the calibration routine. My build has FSRs for Z-probing. This file is probably identical to the examples provided by
mhackney, and uses his coordinates for a 125mm calibration radius:
Code: Select all
; Auto calibration routine for delta printers
; Before running this, you should have set up your zprobe Z offset to suit your build, in the G31 command in config.g.
M561 ; clear any bed transform, otherwise homing may be at the wrong height
G31 X0 Y0 ; don't want any probe offset for this
G28 ; home the printer
;*** Remove the following line if your Z probe does not need to be deployed
;M98 Pdeployprobe.g ; deploy the mechanical Z probe
; The first time the mechanical probe is used after deployment, it gives slightly different results.
; So do an extra dummy probe here. The value stored gets overwritten later. You can remove this if you use an IR probe.
G30 P0 X0 Y0 Z-99999
; Probe the bed and do 6- or 7-factor auto calibration
G30 P0 X-108.25 Y-62.50 Z-99999 ; X tower
G30 P1 X0.00 Y-125.00 Z-99999 ; between X-Y towers
G30 P2 X108.25 Y-62.50 Z-99999 ; Y tower
G30 P3 X108.25 Y62.50 Z-99999 ; between Y-Z towers
G30 P4 X0.00 Y125.00 Z-99999 ; Z tower
G30 P5 X-108.25 Y62.50 Z-99999 ; between Z-X towers
G30 P6 X-54.13 Y-31.25 Z-99999 ; X tower
G30 P7 X0.00 Y-62.50 Z-99999 ; between X-Y towers
G30 P8 X54.13 Y-31.25 Z-99999; Y tower
G30 P9 X54.13 Y31.25 Z-99999 ; between Y-Z towers
G30 P10 X0.00 Y62.50 Z-99999; Z tower
G30 P11 X-54.13 Y31.25 Z-99999 ; between Z-X towers
G30 P12 X0 Y0 Z-99999 S6 ; center and auto-calibrate 6 factors
;*** Remove the following line if your Z probe does not need to be retracted
;M98 Pretractprobe.g ; retract the mechanical Z probe
G1 X0 Y0 Z150 F15000 ; get the head out of the way of the bed
And here's my homedelta.g:
Code: Select all
; Homing file for RepRapFirmware on Custom Rostock Max Metal
G91 ; use relative positioning
;******* Change F250 in the following line to F2500 when you are finished commissioning
;******* Change 320 in the following to a higher value if your Kossel has taller towers
G1 S1 X360 Y360 Z360 F2500 ; move all carriages up 320mm, stopping at the endstops
G1 S2 X-3 Y-3 Z-3 ; move all carriages down 3mm
G1 S1 X6 Y6 Z6 F250 ; move carriages slowly up 6mm, stopping at the endstops
G1 Z-5 F2000 ; down a few mm so that we can centre the head
G90 ; back to absolute positioning
G1 X0 Y0 F2000 ; centre the head and set a reasonable feed rate
My config.g file is obviously specific to my printer, what with its name, network settings, and calibrated M665 and M666 commands.
The bed.g and homedelta.g files are pretty generic, if you have the same size print bed (Onyx) and towers.
The pause.g and resume.g files also seemed generic, so I copied those from the SD-img directory for a Mini Kossel. Same for iap.bin.
Aside from the config.g calibrations, which were edited in later, I put all these files in place on the MicroSD card before I had even connected the power supply.
Here's my entire MicroSD image, as of now:
https://dl.dropboxusercontent.com/u/250 ... %20IMG.rar
That's the "sys" directory, the latest "www" directory (which contains the web interface), and an empty "gcodes" directory. Note: you need to make the "gcodes" directory on the card, yourself. If the directory doesn't exist, you won't be able to upload gcode files via the web interface. This may get fixed in the future -- the web interface could look for the directory and create it if it doesn't exist.
After updating the firmware and SD card, I connected the PSU to the Duet, connected the Duet to my PC with an ethernet cable, configured my PC to share its network connection with the printer, plugged in the power, and went to the web interface.
And much to my surprise, it was there!
At this point, I was impatient. I opened Cura, sliced up some boats, uploaded the file to the web interface.
I ran the auto-calibration a couple times and plugged the output into my config.g file and reset the printer. Then I added painter's tape (should have done this before calibration) and printed the boats from my last post. Ugly! First layer too smooshed! Too hot! No print-cooling fan on the effector yet.
Maybe this will do, for a quick fan mount...
[img]
http://ldhk.org/img/bradmax_-_Remote_Co ... B5C330.png[/img]
Testing...
[img]
http://ldhk.org/img/Screenshot_4_6_16__ ... B5C391.png[/img]
Meh, it needs work. If aimed improperly it blows on the hot end. If aimed properly, it misses half the print. This was actually my first print-cooling fan ever (I, uh, point a desk fan at my cartesian printer sometimes). Not sure how I feel about the blower-style fan. I think I'll get three regular fans for the next attempt.
I printed more boats with that one fan in place and they were also "meh." Better, though!
Now that I was printing semi-successfully, I wanted to make something useful. I tried printing a part for my cartesian printer. The sides started out all wobbly and layer-shifty. Oh well, I thought, I'll check on it later. Half an hour later when I come back, I find a bolt on the print bed next to the object-in-progress. Uh, what? Where in the hell did that come from?
After a couple minutes, I realized I'd forgotten to tighten all the bolts on the Trick Laser effector platform! The bolts on the bottom of it had shaken loose. Paused the print, raised the effector, tightened up everything, resumed print. Came back a few minutes later and the layers were perfectly smooth since the fix. Problem solved! Restart the print!
Convinced that everything was now perfect, I ambitiously tried to print at 200mm/s

. For the most part, it worked fine, until the trickier, overhanging parts of the model, where I had to slow down. The sides were smoother than with the completely loose effector platform, but clearly distorted from layer to layer due to speed. Printed again at 60-100mm/s (sigh) and it came out imperfect but completely usable!
Ambitious once again, I set up a full platform of parts for the cartesian printer. And it started out SO WELL! A couple hours into the 7 hour print, I went to sleep. Woke up to the sound of a failing print a bit hours later. I think I screwed it up by messing with the build plate during the print, but it could have been other issues, too. One part had come off the build plate and the effector was using it to harass the other parts.
Going to try that print again soon, after I find a glue stick -- noticed some PLA warping at the edges of the parts.