BeTrue3D Printer – Setting up 5-way Diamond firmware
Wow, been a while since I last wrote… seems like I always start by writing that, hehe.
As always I’ve been through a lot of iterations of various brackets and other mechanics, but this post is going to be about setting up the RepRapFirmware for use with the 5-way Diamond Fullcolor Hotend.
I’ve been building 3D Printers some years, but this is actually my first venture into multi-color printing, which has proven a rather steep learning curve for me.
Luckily for me, I’ve had help and inspiration from the great blogpost Using the Diamond Hotend with DuetWifi found on Think3DPrint3D.
First I need to setup my Drives and axes, which includes X, Y, Z and all my extruders. There’s not much to this really, once you get to know what’s going on.
The first 3 lines configures X, Y and Z, while the next 5 defines my extruder motors.
Next two lines defines microstepping and steps/mm.
; Drives M569 P0 S1 ; Drive 0 goes forwards A M569 P1 S1 ; Drive 1 goes forwards B M569 P2 S0 ; Drive 2 goes forwards Z-both motor on 1 driver for now. M569 P3 S0 ; Tool 0 M569 P4 S0 ; Tool 1 M569 P5 S0 ; Tool 2 M569 P6 S0 ; Tool 3 M569 P7 S0 ; Tool 4 M350 X16 Y16 Z16 E16:16:16:16:16 I1 ; Configure microstepping with interpolation M92 X160 Y160 Z800 E1025:1025:1025:1025:1025 ; Set steps per mm
While this section isn’t unique to the Diamond hotend I’m still including it, as it’s really crucial to have done the PID tuning.
As you can see, I like to comment in my config.g file in order to figure out what and how I did what I did.
Notice how the Heated Bed is using a Thermistor, where I needed to include the parameters for it, along with the PID parameters I got from the PID Tuning.
The Diamond Hotend also has PID parameters but is using a Thermocoupler instead of Thermistor, so here I’ve defined the use of the first channel on my Daughterboard.
; Heaters ; M305 Sensor P0 Bed. P1 Hotend ; M307 Heater ; Test Hotend: M303 H1 P0.3 S200 ; Test Bed M303 H0 P0.1 S100 ; BED M143 H0 S140 ; set the maximum bed temperature to 140C M307 H0 A44.1 C127.7 D3.0 S1 B0 ; Heated Bed Pid settings M305 P0 T100000 B3950 C0 R4700 ; BED Thermistor ; Hotend M143 S260 ; Set maximum hotend temperature to 240C M307 H1 A1073.8 C407.8 D3.5 S1 B0 ; PID Heater - 5-way Diamond M305 P1 X100 ; Use thermocoupler for heater P1/H1 on first channel
Just as a sidenote: I’ve prepared the use of BLTouch Sensor, which I wrote a seperate blogpost about.
In order to free up a PWM channel to controll it, I disabled the last heater as follows:
; Disabled heaters M307 H7 A-1 C-1 D-1 ; Disable heater 7 for BLTouch
Now we get down to it; defining all the tools we need.
In a nutshell we need to define each Extruder + an extra, which amounts to 6 in all.
Remember the first tool is Tool 0 so we go from Tool 0-4 for the physical extruders.
What is going on here is that we define each Tool to include all 5 extruders, enable mixing and use 1 extruder as the primary extruder and the other 4 as slight additions.
It really seems odd at first, to mix everything a bit all the time, but unless the colors are moving forward some the same filament end up being retracted back and forth a lot and risk degrading and ultimately clogging up the nozzle, or at least the unused channels.
You can read a larger explanation at the blogpost I mentioned previously. For me it’s just theory so far.
The final Tool has an even mixration which we can override by editing the Gcode files, to create a large variety of colors.
Note: The mixing ratios should be changed – I’m still working on perfect ratio, but the secondary should be down to like 0.005 instead of 0.025 – change primary accordingly.
; Tools ; P tool number ; D Extruder drive ; H Heater M563 P0 D0:1:2:3:4 H1 ; 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 M568 P0 S1 ; Enable mixing for tool 0 M567 P0 E0.9:0.025:0.025:0.025:0.025 ; Set mixing ratios for tool 0 M563 P1 D0:1:2:3:4 H1 ; Define tool 1 G10 P1 X0 Y0 Z0 ; Set tool 1 axis offsets G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C M568 P1 S1 ; Enable mixing for tool 1 M567 P1 E0.025:0.9:0.025:0.025:0.025 ; Set mixing ratios for tool 1 M563 P2 D0:1:2:3:4 H1 ; Define tool 2 G10 P2 X0 Y0 Z0 ; Set tool 2 axis offsets G10 P2 R0 S0 ; Set initial tool 2 active and standby temperatures to 0C M568 P2 S1 ; Enable mixing for tool 2 M567 P2 E0.025:0.025:0.9:0.025:0.025 ; Set mixing ratios for tool 2 M563 P3 D0:1:2:3:4 H1 ; Define tool 3 G10 P3 X0 Y0 Z0 ; Set tool 3 axis offsets G10 P3 R0 S0 ; Set initial tool 3 active and standby temperatures to 0C M568 P3 S1 ; Enable mixing for tool 3 M567 P3 E0.025:0.025:0.025:0.9:0.025 ; Set mixing ratios for tool 3 M563 P4 D0:1:2:3:4 H1 ; Define tool 4 G10 P4 X0 Y0 Z0 ; Set tool 4 axis offsets G10 P4 R0 S0 ; Set initial tool 4 active and standby temperatures to 0C M568 P4 S1 ; Enable mixing for tool 4 M567 P4 E0.025:0.025:0.025:0.025:0.9 ; Set mixing ratios for tool 4 M563 P5 D0:1:2:3:4 H1 ; Define tool 5 G10 P5 X0 Y0 Z0 ; Set tool 5 axis offsets G10 P5 R0 S0 ; Set initial tool 5 active and standby temperatures to 0C M568 P5 S1 ; Enable mixing for tool 5 M567 P5 E0.20:0.20:0.20:0.20:0.20 ; Set mixing ratios for tool 5
To make it work at all, we need to enable firmware retraction in our firmware and enable it in our Slizer.
I’ve put in a lot of notes here, but I’ve really only setup length and speed and of course enabled it by issuing the M207 Gcode command.
We need to enable firmware retract as all our extruders must retract at the same time instead of just the active one. If only one of the extruders are extracting, it will just suck up the filament in the melting chamber/from the other colors, but not the filament at the tip of the nozzle.
; Enable Firmware retraction ; https://duet3d.com/wiki/G-code#M207:_Set_retract_length ; Snnn positive length to retract, in mm ; Rnnn positive or negative additional length to un-retract, in mm ; Znnn additional zlift/hop M207 S1.5 F3000 ;set firmware retraction
Heating and Standby temperature
Aside from the firmware settings we need to do a large deal of changes in our Slizer profile. I can’t go into all of them obviously, but one of the universal ones are defining Standby temperature in the startup gcode file using the G10 G-command.
G10 P0 S205 R205 ; Set tool 0 Active and standby temperatures G10 P1 S205 R205 ; Set tool 1 Active and standby temperatures G10 P2 S205 R205 ; Set tool 2 Active and standby temperatures G10 P3 S205 R205 ; Set tool 3 Active and standby temperatures G10 P4 S205 R205 ; Set tool 4 Active and standby temperatures G10 P5 S205 R205 ; Set tool 5 Active and standby temperatures
Setup up Cura
Be sure to read my new blog-post to correctly setup Cura for this.