Some of you may already know that I have been working on a new version of the Duet 3D printer electronics. The new board is called the Duet WiFi, and it a joint venture between my own company Escher3D and Think3DPrint3D. The first pre-production board arrived a few days ago. After bench testing it, the time came to install it in a 3D printer. I chose to install it in my delta printer, which is more demanding of the electronics than my Ormerod.
New networking, stepper drivers, temperature sensors
Apart from providing WiFi instead of wired Ethernet, the Duet WiFi has many other improvements compared to the already excellent Duet 0.8.5 from Think3DPrint3D. Top of the list of improvements is the switch to TMC2660 stepper drivers. These provide up to 256x microstepping – with optional microstep interpolation at lower microstepping settings – as well as programmable decay modes and a host of other features.
Another new feature is the improved support for thermocouples and PT100 sensors. These were already supported on the Duet using third-party interface boards and some custom wiring. The Duet WiFi improves on this with daughter boards that plug directly into the main board. Each board supports either two thermocouple or two PT100 sensors, and you can stack two boards. So I decided to upgrade my delta printer to use the E3D PT100 temperature sensor as well.
The PT100 sensor from E3D was supplied with a lead more than 1m long, however I needed another 200mm or so. When using a 2-wire PT100 sensor, any additional resistance in the wires and connections between the sensor and the electronics will cause an increase in the reading, by about 1°C per 0.4 ohm. This inaccuracy can be avoided by using a 4-wire connection. So I chose the 4-wire configuration for greatest accuracy. However, as long as you are careful to make good connections, the sensor will work just fine in 2-wire mode and you can save some wiring.
To perform this upgrade I needed the following:
- Duet WiFi 3D printer controller board
- New printed mains inlet and electronics front panel, to accommodate the WiFi antenna (upper image) instead of the Ethernet socket (lower image). I adapted my previous design for this and published the new variant alongside the old one on Thingiverse.
- PT100 daughter board for the Duet WiFi
- PT100 sensor from E3D (but you do not need the E3D PT100 amplifier)
- New heater block for the E3Dv6 hot end, to accommodate the PT100 sensor instead of the original thermistor
- New printed hot end fan duct and IR sensor mount. The heater block for the PT100 sensor is 3mm longer than the one for a thermistor, so I had to move the IR sensor 3mm further away from the nozzle. I updated my existing design on Thingiverse.
- A 2×5 hot end connector to replace the 2×4 one, because I now have 4 temperature sense wires instead of 2.
- Cable to extend the PT100 leads. I used the same unshielded 4-core cable that I use to make up cables for PanelDue.
Duet WiFi and daughter board installation
The pre-production version of the PT100 daughter board is configured for 2-wire connection as shipped. You connect the two wires from the PT100 to the inner two positions on the 4-way terminal block. If you want to use 4-wire connection, you need to cut the fine trace between each pair of pads next to the 4-way terminal block. This requires a steady hand and a craft knife with a sharp point. Use a multimeter to check that there is no longer continuity across each pair of pads when you have finished. If you ever want to revert to a 2-wire sensor, you can solder-bridge each pair of pads.
The production PT100 daughter boards will not have a trace between the pads, and the pads will be closer together to make it easier to solder-bridge them. To use a 2-wire PT100 connection, you will need either to solder-bridge the pads, or to link the outer pairs of terminals together using short pieces of wire.
After cutting the traces on my pre-production PT100 daughter board, I installed it on the main board. The plastic pillar on the bottom of the daughter board fits into the hole in the main board, but it is a tight fit initially. You need to support the main board in the vicinity of the hole when pushing the post in. If it seems that it needs too much force, try squeezing the two prongs at the end of the post together with pliers first.
Next I removed all the wires from the existing Duet 0.8.5 board in the machine, taking care to label the X, Y and Z motor and homing switch wires. After that I removed the rear panel, and removed the mains inlet components from it. I had connected the wires from the printer to the mains inlet components using spade connectors, so this was easy.
Then I removed the Duet 0.8.5 and installed the Duet WiFi along with the new rear panel. At first I found that the rear panel was holding down the reset button on the Duet WiFi because I didn’t have the hole perfectly aligned with the button. I resolved this by using a knife to chamfer the back of the hole for the reset button.
Connecting the wires to the Duet WiFi was easy, because it uses the same Molex connectors as the Duet 0.8.5, although some of them have moved – in particular, the homing switch connectors are near the middle of the board instead of at the edge.
I ran the 4-core cable from the RTD1 terminal block on the Duet WiFi daughter board, up the lower part of the Z tower along with the other cables, and along the Bowden tube. Then I replaced the 2×4 hot end connector with the 2×5. I kept the cable that previously connected the thermistor, so that I can use it to power a print cooling fan when I get round to fitting one.
Hot end wiring
I assembled the new heater block as described in the instructions on the E3D web site. To use a 4-wire configuration, each of the two tails of the PT100 sensor needs to be connected to two wires. These two wires should be connected individually to the PT100 tail, not all together in a single bundle (although in practice it is unlikely to make any difference if you do that). So I soldered two wires separately to each tail (see image on left), put some heatshrink sleeving on each tail to insulate and protect the joint (see image on right), and then put one piece of larger heatshrink sleeving over both.
Then I connected the heater, hot end fan and the four PT100 wires to the mating 2×5 hot end connector, and completed the hot end assembly.
The Duet WiFi was already loaded with firmware, so I just took the SD card out of the Duet 0.8.5 board and put it in the Duet WiFi. Normally, with a new installation I recommend applying USB power only first, but as USB power is insufficient for the 7″ display in my delta printer and I had already bench-tested the Duet WiFi board, I powered the machine on. The PanelDue came alive immediately. The WiFi interface is disabled in firmware by default, so I sent M552 S1 from PanelDue to enable it (if you don’t have a PanelDue, you can send this command from Pronterface or another host program via the USB port). I had already programmed my access point details into the Duet WiFi, so I was then able to load Duet Web Control from the printer into my PC browser. I went to the Settings page, then the Configuration File tab, and edited that M552 S1 command into the config.g file. So WiFi is now enabled when I turn the printer on.
To tell the firmware that I was using a PT100 sensor instead of a thermistor, I opened config.g in the web interface and searched for this line:
M305 P1 T100000 B3974 R1000 H30 L0
which I replaced with this:
M305 P1 X200
The P1 parameter tells it that this is for heater channel 1 (the first hot end heater), and X200 says that the temperature sensor for this heater is the first PT100 channel, which is connector RTD1 on the lower daughter board of the two possible two daughter boards.
After applying settings and allowing Duet Web Control to restart the firmware, I had a correct temperature reading for the hot end.
A finishing touch
On a delta printer, any small geometrical error will lead to the effector tilting as it moves in the XY plane. Even a small amount of tilt that is hard to see will cause problems. If you use a height sensor that is displaced from the nozzle – as I do – then tilt will alter the relative heights of the sensor and the nozzle. This will throw out delta calibration, unless you compensate for the varying height difference by using H parameters on the G30 commands in the bed.g file. Another effect of varying effector tilt is that if the nozzle is some distance below the effector – as it is in this design – then it will introduce scaling errors and geometrical distortion.
To make it easier to detect effector tilt, I attached a 30mm diameter bulls-eye spirit level to the top of the effector using double-sided adhesive tape. This revealed a change in tilt when the effector was near the X tower. I was able to correct for this in part by rotating the carriage on the carriage truck a few degrees.
After performing this upgrade, the printer is much quieter than before. This is because of the change from x16 microstepping on the Duet with A4982 drivers, to interpolated x256 microstepping on the Duet WiFi with TMC2660 drivers. The noisiest component is now the 40mm electronics cooling fan under the bed. I shall search for a quieter 40mm 24V fan, or perhaps do a small redesign of the electronics rear panel to use a slower-running 50mm or 60mm fan instead.
Another benefit of the upgrade is that I can now use the printer in a different room – as I occasionally need to do when hosting meetings – without needing to run a communications cable to it. The gcode file upload speed over WiFi is about 800 kbytes per second, similar to the speed I was previously getting with wired Ethernet on the Duet 0.8.5.