how to setup a hotend for directly printing metal and ceramic.
-
The quick gist of what i am doing and why:
I am developing an open source hotend for semisolid metal direct write and direct ceramic 3D printing.
my hot end consists of a glow plug like the one I have modeled at this link, with a 0.5mm ID straight center bore(60mm deep)hole EDM drilled through it lengthwise. These glowplugs are capable of long term stable operation in air at up to about ~1500 C, and are essentially nonwetting and nonreactive to most nonferrous molten metals at temperatures below 1300 C. they are made of Si3N4-MoSi2 ceramic, which is an electrically semiconducting ceramic matrix composite, and they only heat at the tiny region at the tip, about 2.8mm OD, and ~2 mm long.
Shameless plug
i have a youtube video showing the hotend mounted and working on and ender 3 when we were clearing some bronze that got jammed inside it when I stupidly overheated the bronze and simultaneously pulled the feedstock wire out of the hotend, leaving behind a blob of oxide rich slag which had to be remelted and wicked out with a more refractory wire of silicon carbide.
We use the EDM drilled ceramic glow plug as a combined heated nozzle +hotend+temperature sensor that is extremely fast, and has surface power density comparable to a torch flame(between 1 and 15 watt/mm^2 typical depending on what we are printing) to be able to rapidly heat and cool a a 24 AWG (0.522mm OD, 510 phosphor bronze) metal wire (with no nozzle constriction) to maintain the temperature between the solidus and liquidus for the wire, at the deposition region where the wire touches the build plate. Maintaining such temperature control requires extremely fast temperature cycling up and down(up to about 1000 degrees C/second) (more typical 350 degrees C /second) , and requires very sensitive temperature measurement(+- 1 degree C at a minimum..) to be able to respond to changes in flow conditions in time to maintain stable deposition.
a little bit about what we are printing with:
it helps to have metals that have a wide window between solidus and liquidus. 510 phosphor Bronze is one of the few easily available alloys that has a wide window. between 930 and 1060 C, about 130 degrees C.
so we have opted to start by trying to print bronze from 24AWG (0.52mm) 510 phosphor bronze wire available on mcmaster.
small wire diameter also helps because it reduces total mass flow requirements and reduces dead metal and risks for granular jamming in the hotend. small hole diameter in the hotend enables the high temperature of the heater to exclude air from the bore, and this provides a relatively anoxic environment inside the hotend which protects the metal from oxidation. the small mass of metal being deposited means that rapid quenching occurs on the build plate, and this means there is little time for oxidation, and for grain growth... because the metal is semisolid as printed, it develops about 3 orders of magnitude less internal stress than in approaches like WAAM.
this all means that a single rather challenging machining operation was requried to make the ceramic glowplugs into suitable hotends, that is, EDM drilling a centerbored a 60mm X 0.5mm diameter through hole in the Si3N4 MoSi2 ceramic body of the glowplug.
we have managed to obtain reliable operations for doing the manufacturing.
we now just need to get control of the system which may require a few minimal firmware alterations...we have been aiming for a drop in mod for the ender 3 being the first thing we make and offer for a wider audience, if it works.
The crux of the problem
I am having a lot of trouble getting the duet to cooperate and control these extremely high performing heaters. the PID tuning algorithm seems to be too slow to respond to them, and this trip heater faults.
I am also doing temperature sensing of the heaters by wrapping a type K thermocouple around the ceramic tip and slathering it in refractory cement. this appears to cause some amount of signal cross talk with the thermocouple amplifier MAX 31856 duet daughterboard. or something... I keep getting the error "fault on heater 1:sensor short to other wiring"
but if I leave the printer to sit after clearing the fault, for perhaps 10-20 minutes, the thermocouple reads temperatures on the hotend heaters of ~30-45C. I can then attempt a PID tun or to enable the heaters, but the tune fails consistently when the overshoot is much larger than anticipated or for some other reason I have not identified.## Basically I need help controlling the temperature of these heaters and making the necessary firmware adjustments to make their control reliable.
I am not a firmware or software developer, please keep responses at the level of a 5 year old if at all possible...
Any assistance is greatly appreciated.
-
@lynnmt thanks for the detailed explanation of your project, incredibly cool to have identified and built a hot end with those capabilities.
Did you see the documentation here:
https://docs.duet3d.com/en/User_manual/Connecting_hardware/Heaters_tuning#setting-the-model-parameters-manuallyAnd try calculating the values manually as described?
-
-
The reply function has returned for me after switching computers....
apologies for the extended delay in this thread.
I have not yet tried manually calculating the values as described.
I have some questions about the limits on the range of the parameters.are there any limits on the heating rate parameter, and the dead time parameters?
like maximum and minimum values respectively, that the duet will accept? -
@lynnmt the temperature is sampled and the PID loop for controlling heater temperature runs at 4Hz.
The limits on the heater model parameters are currently:
heating_rate/basic_cooling_rate > 0.1
dead_time > 0.099
dead_time * basic_cooling_rate <= 50
1.0 <= cooling_rate_exponent <= 1.6HTH David
-
@dc42 is there any way to make it work at faster frequencies? and or to increase the frequency of measurement at the thermocouple?
my heater can heat and cool at ~1000 C/second, and may need to do this fairly often..
this is almost 250C degree of change in a 4 hertz update cycle.I need at least 5-7 degrees C of heating/cooling precision at the heater during operation to ensure the metal in the hotend does not freeze/melt.
-
@dc42
when I run M307 per the docs,
https://docs.duet3d.com/en/User_manual/Connecting_hardware/Heaters_tuning#setting-the-model-parameters-manuallyM307 H1 R1000 K300 D0.25 S0.1 V24
I get the error "bad model parameters"
are these values outside the possible ranges specified?the command also fails as
M307 H1 R1000 C4 D0.25 S0.1 V24 -
@lynnmt External CAN temperature controller? This way you have control from gcode, and higher performance of controller.
-
@soare0
do you have a link to such a thing?
These exist? -
@lynnmt your original command:
M307 H1 R1000 K300 D0.25 S0.1 V24
fails because K * D > 50. So reduce K or D to make it <= 50. I suspect the dead time of your heater is well below 0.25 (minimum currently supported is 0.1).
Are you driving the heater from a main board or from an expansion board?
-
Even when i reduce the value to 0.1 it still fails. with the same "bad model parameters"
I am driving the heater from the main board.
it only draws about 40-60 watts of power. -
@lynnmt this works for me for heaters on both main boards and expansion boards, using firmware 3.5.0-rc.3+:
M307 H0 R1000 K300 D0.1 S0.1 V24
-
@dc42
I appear to be using reprap firmware for Duet 3 MB6HC 3.3.
DSF version 3.4.6The command M307 H1 R1000 C4:2 D0.25 S0.2 V24.0
also fails with the same "bad model parameters " error. -
@lynnmt Yes, they are, but interfacing would not be trivial.
I worked with some, some years ago, and being straight chinese, it was a pain to use their CAN bus protocoi (as it was rather suggested than described). If you say you are 5 year old technical, then you may not want to do such gymnastics.
I would suggest that maybe an Arduino, with CAN and a thermocouple adaptor, may do the trick.
Maybe working from a DUET CAN interface board, would be better than from a mainboard? I think this is what dc42 wants to suggest.
Anyway, if your requirements are so ... harsh, regular PIDs may not be your best option (usually they are not designed for such high speeds, but probably some custom controller, wich... may be done on Arduino too, or on any other board like this.
I needed to do such stuff a long time a go, basically some ramped ON-OFF controllers, for fast precision control, but this is something needing to be tuned ... in house.
Normal fast thermoregulators, means 5samples/second. Super fast ones, maybe 40/sec, like these:https://www.tc.co.uk/temperature_control/HA401.html
But the fact you can sample with 1ks/s, means nothing. and I find rather difficult to believe that you need such a speed.
-
@lynnmt I suggest you upgrade to 3.5.0-rc.3 then. I know we widened the allowed model parameters at some stage.
-
@lynnmt you really should be updating to 3.4.6 at least (I also would suggest leaving out the SBC which has no benefit for your current use).
-
@oliof
I am using the SBC to avoid having to network interface with the Duet.
my internet is...unreliable at times. -
can I actually do this upgrade if i have a Duet 3 MB 6HC V1.01A ?
-
@lynnmt yes, firmware updates can be applied to all production versions of Duet boards.
-
@lynnmt said in how to setup a hotend for directly printing metal and ceramic.:
@oliof
I am using the SBC to avoid having to network interface with the Duet.
my internet is...unreliable at times.Duets don't need an internet connection, just a local connection to your PC.
-
@dc42
so connecting over USB will do?