3Drag controller

From RepRap
Jump to: navigation, search
Crystal Clear action run.png
3Drag controller

Release status: working

3Drag controller.jpg
Release Version 1.0
CAD Models
External Link

Based on the ATmega2560 microcontroller, allows you to manage four bipolar stepper motors to drive the mechanics of a 3D printer (X, Y, Z and a fourth motor for the extruder), the heater of the extruder, the heated plate and a fan. Also provides two inputs to read the temperature, a converter USB/serial port for interfacing the ATmega with the computer, an ICSP header, three inputs for limit switches (xSTOP, YSTOP and ZSTOP) and various status LEDs. It can be programmed directly from the IDE Arduino, taking advantage of the large amount of firmware and libraries that the RepRap community exchanges and updates daily on the web. The microcontroller ATmega2560, supplied with the firmware Marlin Erik van der Zalm properly configured to drive our electronics, is able to accommodate the Flash reserved for the program (256 kB) more lines of code, enabling you to implement more functionality than typical control card for 3D printers (3drag) available on the market.


  • Small design - board is 110mm x 65mm
  • Sanguino compatible (this version use a ATmega2560)
  • Up to 4 Pololu stepper driver boards (or Pololu compatible) on-board (X,Y,Z,Extruder)
  • FT232RL on-board for USB connectivity
  • 2 input thermistor
  • 3 N-MOSFETs for extruder, bed and fan
  • Selectable 12v/5v voltage or mechanical endstop
  • Extra pins available for expansion and development
  • Comunication LED and driver LED
  • All SMD components


When we first released our 3D printer, we tried to use some parts that were already available and tested, in full respect of the open source philosophy. In particular, we decided to use the electronic card Sanguinololu. The "open" firmware we chose, the Marlin firmware by Erik van der Zalm, solved the biggest part of the computer interface issues. The Sanguinololu was great, but being innovators by vocation, we looked around testing new developments. The first improvement was about introducing a fan, capable of blowing cool air on the just deposed layers, while the second came from the Sanguinololu weaknesses in managing the heated plate. The first new feature is very useful because it allows you to cool the deposed material more quickly and makes it more viscous than the subsequent deposition, while the latter is for those who want to use the ABS and serves to prevent the deformation of the lower layers the piece.

We replaced the original microcontroller with a great Atmel ATmega 2560, that can accommodate more lines of code in the Flash and allows us to implement more features than those of a typical 3D printers control board. We also re-shared the design in open source, in full respect of the open source world rules. The ATmega2560 processor sports 256 KB of program memory with 16 MHz clock. Our board can be programmed directly from the Arduino IDE: a USB connection to connect via a standard miniUSB cable is available, and the same port allows PC control during prints.

This board allows you to control a cooling fan: this is very useful since both the printing software Repetier host and the slicing software Slic3r include cooling management during extrusion phase: the fan is activated only when necessary, with a speed that is tuned on the characteristics of the printing layers.

The board also sports few LEDs connected to the stepper motors drivers, allowing you to check immediately whether the microcontroller commands are correctly given letting you check the operation status of the system in case of fault. Even MOSFETs that drive the extruder heater and the heated plate are matched with LEDs with the very same function. The same was done for the FT232RL that deals with the USB / serial conversion: it's equipped with LEDs indicating information exchange with the PC.

Regarding the control of the stepper-motors: the default drivers configuration is 1/16 of a step: by cutting the three thin tracks on the bottom, those connecting two by two the jumpers' pitches, you can solder the standard pin-strips to operate the manual selection of the steps through 2,54 mm jumpers. This operation can be made ​​for one or more drivers depending on the needs.

Schematic & Main Board Images

The circuit may appear small but it is a little complex, given that counts a 100-pin microcontroller, four stepper motors drivers, three MOSFETs allowing us to drive two heaters (one is that heating of the plate and the other one heats the nozzle of the extruder) and a low tension fan, as well as a USB / serial converter to interface the ATmega with the computer and to a power supply stage, which completes the ensemble.

The drivers motors are produced on our own and can be found in the scheme as signed U4, U5, U6, U7. Each module is essentially an Allegro A4988, very versatile since it can be set to define both the direction of rotation of the motor shaft and the number of degrees that the rotor must complete after each command: we can decide whether when we provide a pulse, the module will rotate the shaft of 1, 1/2, 1/4, 1/8 or 1/16 of a step at a time, based on the accuracy that you want to get.

Each driver consists of a dual H-bridge managed by an electronic device that allows you to set the direction of rotation of the electromagnetic field and, then, of the stepper-motor shaft. Each time a pulse arrives on pin STEP (the minimum allowable is 1 µs), unless otherwise set, outputs 1A, 1B, 2A and 2B provide the pulses for controlling the displacement of the rotor unless the inputs MS1, MS2, MS3 are set differently.

Notice that the /STEP line of each controller is connected to an NPN transistor, which serves as a current amplifier to drive a LED, which will pulsate similarly to the corresponding command line of the microcontroller (PA4 for U4, PF6 for U5, PF0 for U6 and PL3 for U7) so that we monitor what happens. Thus, in the case that an engine does not rotate despite its related LED pulses, it means that the problem is within the driver or the motor, or in the wiring. It is understood that since the LED pulses at the same frequency of the control pulses, we can see it flashing only when the corresponding motor will run at very low speed, since already at 25 Hz, the human eye sees the diode always illuminated.

Main Board BOM

  • R1: 10 kohm (0805)
  • R2: 10 kohm (0805)
  • R3: 330 ohm (0805)
  • R4: 10 ohm (0805)
  • R5: 100 kohm (0805)
  • R6: 1,8 kohm (0805)
  • R7: 4,7 kohm (0805)
  • R8: 4,7 kohm (0805)
  • R9: 4,7 kohm (0805)
  • R10: 10 ohm (0805)
  • R11: 100 kohm (0805)
  • R12: 1,8 kohm (0805)
  • R13: 10 ohm (0805)
  • R14: 100 kohm (0805)
  • R15: 1,8 kohm (0805)
  • R16: 470 ohm (0805)
  • R17: 470 ohm (0805)
  • R18: 10 ohm (0805)
  • R19: 10 ohm (0805)
  • R20: 330 ohm (0805)
  • R21: 330 ohm (0805)
  • R22: 330 ohm (0805)
  • R23: 330 ohm (0805)
  • R24: 10 kohm (0805)
  • R25: 10 kohm (0805)
  • R26: 10 kohm (0805)
  • R27: 10 kohm (0805)
  • R28: 100 kohm (0805)
  • R29: 100 kohm (0805)
  • R30: 100 kohm (0805)
  • R31: 100 kohm (0805)
  • R32: 4,7 kohm (0805)
  • R33: 4,7 kohm (0805)
  • R34: 4,7 kohm (0805)
  • R35: 4,7 kohm (0805)
  • R36: 10 kohm (0805)
  • R37: 10 kohm (0805)
  • C1: 100 nF (0805)
  • C2: 100 µF 25 VL (E)
  • C3: 100 nF (0805)
  • C4: 100 µF 25 VL (E)
  • C5: 100 µF 25 VL (E)
  • C6: 100 µF 25 VL (E)
  • C7: 10 µF 35 VL (B)
  • C8: 10 µF 35 VL (B)
  • C9: 22 pF (0805)
  • C10: 22 pF (0805)
  • C11: 100 µF 25 VL (E)
  • C12: 100 nF (0805)
  • C13: 100 µF 25 VL (E)
  • C14: 100 µF 25 VL (E)
  • C15: 100 nF (0805)
  • C16: 100 nF (0805)
  • C17: 100 nF (0805)
  • C18: 100 nF (0805)
  • D1: GF1M
  • D2: BAT42W
  • D3: MBRA140TRPBF
  • T1: BUK6215-75C
  • T2: BUK6215-75C
  • T3: BUK6215-75C
  • T4: BC817
  • T5: BC817
  • T6: BC817
  • T7: BC817
  • U1: ATMEGA2560-16AU
  • U2: MC7805ABD2T (D2PAK)
  • U3: FT232RL
  • U4: Driver
  • U5: Driver
  • U6: Driver
  • U7: Driver
  • LD1: LED (0805)
  • LD2: LED (0805)
  • LD3: LED (0805)
  • LD4: LED (0805)
  • LD5: LED (0805)
  • LD6: LED (0805)
  • LD7: LED (0805)
  • LD9: LED (0805)
  • LD10: LED (0805)
  • P1: Microswitch
  • Q1: 16 MHz (C7S)

Schematic & Driver Images

The control of the stepper motors has been entrusted to four modules based on the Allegro's A4988 integrated circuit which sports a dual H-bridge driver governed by a logic that controls the motor ignition and allows the motor to make shorter steps. As an example for each control pulse sent to STEP (the pin that receives the motor drive pulses) the stepper-motor can take an entire step or fractions ranging from 1/2 to 1/16, depending on the combination logic on MS1, MS2, MS3.

Driver BOM

  • R1: Trimmer 10 kohm
  • R2: -
  • R3: 100 kohm (0603)
  • R4: 10 kohm (0603)
  • R5: 20 kohm (0603)
  • R6: 100 kohm (0603)
  • R7: 0,05 ohm (0805)
  • R8: 0,05 ohm (0805)
  • C1: 4,7 µF (1206)
  • C2: 100 nF (0603)
  • C3: 100 nF (0603)
  • C4: 100 nF (0603)
  • C5: 100 nF (0603)
  • C6: 220 nF (0603)
  • C7: 220 nF ()
  • U1: A4988SETTR-T

How to get it

Fully assembled board are available from

Stepper driver are available from

3Drag printer is available in kit from

3Drag printer on wiki