how to setup a hotend for directly printing metal and ceramic.
-
; Configuration file for Duet 3 MB 6HC (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.4.1 on Fri Feb 23 2024 23:32:11 GMT-0600 (Central Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet 3" ; set printer name M918 P1 E4 F2000000 ; configure direct-connect display ; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S0 ; physical drive 0.3 goes backwards M584 X0.0 Y0.1 Z0.2 E0.3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E93.00 ; set steps per mm M566 X1200.00 Y1200.00 Z24.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X9000.00 Y9000.00 Z180.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z100.00 E5000.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E1000 I50 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X235 Y235 Z250 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io1.in M574 Y1 S1 P"io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io2.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M950 S0 C"io5.out" ; create servo pin 0 for BLTouch M558 P9 C"io5.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X0 Y0 Z3 ; set Z probe trigger value, offset and trigger height M557 X60:215 Y30:195 S20 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S150 ; set temperature limit for heater 0 to 150C M308 S1 P"spi.cs0" Y"thermocouple-max31856" ; configure sensor 1 as thermocouple via CS pin spi.cs1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S0.10 ; disable bang-bang mode for heater and set PWM limit M143 H1 S900 ; set temperature limit for heater 1 to 900C ; Fans M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off ; Tools M563 P0 D0 H1 F0 ; 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 ; Custom settings are not defined ; Miscellaneous M501 ; load saved parameters from non-volatile memory T0 ; select first tool
I have set the temperature limit to 900 C.
why would there be a minimum limit for the model parameters to be accepted?
my heater cannot be allowed to operate above about 1300 C in air for an extended period, or its resistance will drift.
I set a lower limit, because the thermocouple has a large offset temperature and I dont know it exactly. so I set a conservative limit, as I wanted to avoid destroying my heater. -
@lynnmt I think it is only for the model to work. Normally, it should be a real ”limit” here, and for the heaters wich I not did autotune (or failed, probably because of the same problem as yours now, and for wich I set the model parameters manually), I get some warnings like: ”your temperature may reach XXX degrees”, but this did not happened... yet.
M143 H4 S100 ; set temperature limit for heater 1 to 100C
And the model:
M307 H4 R0.217 K0.124:0.000 D19.84 E1.35 S1.00 B1
So the software warns me at start-up that based on my M307, and ... do not know what else, the heater will reach 176C. I could not care less, as it works, just an annoying message more.
-
So after taking @dc42 suggestion and raising the temperature limit to 1750C,
the Autotune (at 700 C target temperature and 0.27 pwm limit with Y20) worked and returned parameters:Heater 1: heating rate 44.460, cooling rate 0.824, dead time 1.70, max PWM 0.27, mode PID, calibrated at 23.6V
Predicted max temperature rise 1918°C
PID parameters: heating P2.4 I0.233 D2.8, steady P2.4 I0.499 D2.8This seems to be reliable enough given my janky current setup to transfer to the working printhead.
We also characterized the offset temperature from the glowplug tip to the thermocouple y measuring the tip temperature with an identical type K thermocouple.
here is the result
thanks for the guidance. I think this is enough for a start.
-
Unrelated to the tuning, but I wonder if adopting a setup similar to hot wire tig welding would be beneficial in this application ?
Essentially the wire has a current applied by an external DC power source (sometimes AC), with the bed being the ground.
When a connection occurs during feeding, the wire is "pre heated" allowing for faster melting & higher deposition rates.
The current used isn't enough that the wire can create an arc on its own. -
@OwenD
others have already done this.
https://hackaday.io/project/169412-wire-3d-printer
https://www.digitalalloys.com/it requires large currents and does not work with glasses or ceramics.
neat process, but will not work for my application unfortunately. -
@lynnmt
Those examples are using the current to melt the wire (akin to MIG welding), so they are nothing like TIG hot wire.
In hot wire TIG, the current through the wire is much lower and used only to aid melting the wire by getting it hot.
The main heat source is external. In TIG it's a high current arc carried via a tungsten electrode, but a heating cartridge would equally work.
Naturally it wouldn't work with non conductive materials.
Anyway, just a thought. -
So one of our project members, Shields experiments provided us a thermocouple isolator interposer for the duet thermocouple board.
this allows us to use a thermocouple directly on the tip of the heater with no insulation and no stainless steel ring.Unfortunately, this also means that our model parameters are once again out of range...
can you point me to the place in the firmware where I can adjust the model parameter range?
I have no fear of finding and modifying it to make this work. -
@lynnmt the validation of model parameters is in function FopDt::SetParameters in file FOPDT.cpp.
However, I decided to remove the check on maximum temperature increase when validating parameters, which should resolve the problem for you. You will still see a warning if the estimated maximum temperature is high. I have also provided a more detailed error message when validation of model parameters fails. You can find the latest 3.5.0-rc.3+4 firmware binaries with these changes included at https://www.dropbox.com/scl/fo/yzchzlyxmxlzywjawqflu/h?rlkey=tl7dfs75yozhfgpze0jnkn32n&dl=0.
-
thanks!
is this linked repository available to be directly upgraded to from a networked SBC?
Or should I copy in the firmware folder manually to the SBC and install it from a local directory by including in the sources list for APT?I have so far been unable to find this particular firmware using APT search.
do you have a preferred way to do this?
all the best,
Michael Lynn -
@lynnmt the drop box firmware builds are experimental and not available over apt. please do the following:
- ensure you upgraded to the latest unstable release via apt (3.5rc3)
- use DWC up upgrade to the firmware files shared in dropbox (pick the /bin file or files for the boards in your system, do to system-> Upload system files) DWC will warn you then you should only so this if asked to do so.
-
@T3P3Tony
the altered firmware from DC42 seems to be working perfectly.
thanks!I will report back when we run our first tests of printing 510 phosphor bronze from mcmaster.
https://www.mcmaster.com/9668K92/