Monday 30 December 2013

Duet FET, PSU and Stepper Driver Testing

This blog post is primarily a cut and paste from notes made during the testing of the Duet v0.3 (note the current version is 0.6). I have uploaded the design files for version 0.3 onto the archive area of the github project so the differences between the design tested in these pictures and the current design can be seen.

Normally I would try and get more detail into the post about the design decisions but that will have to wait until a later post.

FETs Testing

FETs are on by default when 3.3V regulator is disconnected as Vgs = 5V (same as when MCU turns FETs on), so software not required. (Note this setup has been replaced in version 0.6 with FETs off by default).

Tested with 10A load gives Vds = 32mV - therefore dissipating 0.32W

32mV at 10A = 3.2mOhm on resistance. As expected from datasheet.Temp measured at ~40C with thermal camera (ambient ~23C):

Track adjacent to FET (carrying input power) got marginally hotter, though nothing to worry about particularly but aim to increase track width on Duet v0.4.

A 20A load would give 1.28W dissipation. i.e. 4 times as much as 10A, therefore expect 50-60C temp rise on FET from ambient. FET rated to 175C.

PSU Testing

Perfectly happy at low loads (<750mA) (note the Arduino Due Power supply only dives a total of 800mA). 12-24V in, 4.98V out. Voltage ripple = ~30mVpk-pk (DC-20MHZ) See scope plot below:

Marginally unstable with 1A or greater load and Vin >16V.
Voltage ripple = ~100mV (DC-20MHz). See scope plot below:

At 1A load, PWM IC temp = ~40C:

At 1.5A load, PWM IC temp = ~60C:

Further testing on 20/06/13:

Inductor L1 swapped from 22uH to 8.2uH. Tested 12V to 24V input and 0A to 1.5A output load.

12V input, 1.5A load, voltage ripple+noise = ~60mVpk-pk (DC-20MHZ) See scope plot below:

24V input, 1.5A load, voltage ripple+noise = ~90mVpk-pk (DC-20MHZ) See scope plot below:

Stepper Motor Testing

Initial testing completed using stepper.ino sketch. Timings changed to 10,000 for CW and 25,000 for CCW steps. An unloaded motor was run for 30mins with these step rates and then a thermal image was taken of Duet board. See below:

The three hot-spots seen in the image are the 3.3V regulator, the MCU and the stepper driver IC. All three showing temps of around 45C.

Note: Other random colourful spots are reflections off shiny surfaces - e.g. button switches and SD card slot. 


The main point of posting this now is to inform the discussion on the RepRap forums about potential improvements to the Powersupply:,285306

A great example of the benefits of releasing an open source design - really high quality feedback!

Monday 2 December 2013

Duet - Arduino Due Compatible 3D Printer Electronics

UPDATE: The Duet 0.6 has been superseded by the Duet 0.8.5, see this blog post:
New Duet electronics version 0.8.5

The Duet is a new 3D Printer controller board that is compatible with the Arduino Due. It has been developed by Andy Hingston and Tony Lock from Think3dPrint3d in conjunction with RepRapPro and with much advice from Chris Palmer (Nophead). This 3D Printer controller combines the Arduino Due microcontroller with 4 stepper motor controllers, Ethernet, Hi-Speed SD card slot and more. 
Think3DPrint3D Duet
Duet Main board
An additional expansion board offers a further 4 stepper motor controllers to allow for a total of 5 extruders or up to 8 axis drives.

Duet with Expansion board
Expansion board for up to 5 extruders in total 

Hardware Overview

The Duet runs the 32 bit, ARM core SAM3X8E microprocessor, as found on the Arduino Due. This is a step change from existing controllers using 8 bit mcroprocessors and leaves loads of overhead to do cool things (like run a webserver, run delta bots much faster etc)

Duet 3D Printer Controller Connections
Duet Connections
3D Printer hardware control

On the main board are 4 Allegro A4982 stepper drivers (X,Y,Z,E0), 3 FETs (Heated Bed, E0, Fan), 2 Thermistor inputs (Heated Bed, E0), 4 Endstop channels (X, Y, Z, E). The stepper drive current is electronically controlled with an I2C Digital potentiometer. As an alternative to using screw terminals there are double rows of pin headers for two wiring looms, 1 for the heated bed and one for the rest of the printer. This allows for the easy use of wiring looms to simplify printer assembly.


The USB port is a Hi-Speed A/B type allowing for standard for USB control from a PC and potentially support for USB devices in the future. The SD card socket is fully SD 2.0 compliant, supporting faster access and cards up to 32 GB. A 10/100T Ethernet port allows for network control via an on-board web server.


Power in comprises a 12-24V main input along with connections to control a standard ATX power supply. On board the Duet can use USB for 5V, incoming 5V from the ATX power supply and it has an inbuilt 2A switching power supply to provide 5V to support future expansion (for example powering a connected USB device).

Expansion board

The expansion board has a further 4 A4982 stepper drivers (E1, E2, E3, E4), another I2C digipot, 4 FETs (E1, E2, E3, E4) and corresponding thermistor inputs. It also has a header exposing 3 Serial channels, SPI bus and 2x I2C buses for further expansion.
Expansion board connections

Open Hardware

The Duet hardware design is licensed under the CERN OHW License 1.2: the design is free to be distributed and modified within the terms of this license. All the design files are here on Github.

Duet Open Hardware Logos

Not only is it Open Hardware but it was completely designed using the Open Source software package KiCAD so hacking and building on this design its accessible to all.

A detailed blog post on the hardware design will follow.

Software Overview

The Duet runs RepRap Firmware, a new C++ firmware by Adrian Bowyer. The firmware can be compiled with the Arduino IDE (tested with 1.5.4) or Eclipse and uploaded like other firmware, but the aim is for much of the printer specific information to be set by Gcode which is read on machine start from the SD card.

The software supports receiving GCode from 3 locations:
  1. Over the USB serial port (as current 3D printer controllers do) - making it compatible with software such as Pronterface and Repetier host.
  2. From the SD card, which also stores the web server files and the config files.
  3. From the Ethernet interface via the webserver:
RepRap Firmware web interface

RepRapPro have a video here showing the web interface in use with the Ormerod printer.

The software is adding new features daily, the most recent being added alpha level support for multiple extruder printing - see the T3P3 github, RepRapFirmware, multi extruder branch.

Here is a picture of the first dual extruder print from a Duet and expansion board combo. I will add a video when I have a chance to edit it!

Where to get it

We will stock our Web Shop tomorrow with a limited number of the first Duet production run available for immediate purchase, with expansion boards to follow next week. A larger production run is underway so don't despair if you miss the first batch.

Update: The Duex4 Expansion boards are available on our Web Shop. The source files for the board are on Github.

Update2: Those who are in Germany or Austria can now buy the Duet and Duex4 from RepRap Austria