From Geeetech Wiki
Jump to: navigation, search



Sanguinololu is highly integrated with all the functions that a 3D printer needs. It is of high capacity-price ratio and support Reprap style printer and other CNC devices (Computer numerical control devices). The 4 stepper drivers are completely compatible with A4988 and DRV8825. Sanguinololu adapts developer friendly expansion port supporting I2C,SPI,UART,as well as ADC pins. All 14 expansion pins are reserved to be GPIO as well. Power supply for sanguinololu is also flexible; users can choose ATX-4 power input or the 2pin connector to supply.

Features: multiple communication configurations :


2.Support multiple power configurations:

Main board supplied by 5mm screw terminal, and optional 4pin ATX connector: 7v-12v

3.Adapts Atmel's ATmega1284 drop-in compatible. Currently, we use 1284P, the bootloader has been burned before shipping, and users can put it into use after burning the programming code.

4.Adapts FT232RL on-board for USB connectivity, which is an industrial USB-serial chip, ensuring the stability and convenience of installation.

5.Selectable power supply for end stops (5v or12v).

6.With 4 stepper driver on board (Z supports 2 stepper motors)

7.2 N-MOSFETs for extruder/bed, or other peripheral device

8.Supports LCD 2004 module, available for off-line printing.

Version 1.3a - Updated July 21, 2011

Version 1.3a has no software changes - the pin assignments remain the same and your 1.2+ compatible firmware should work here fine. The hardware changes:

  • Removed the Molex HDD connector in favor of using the voltage regulator - some power supplies give a dirty 5V signal when there is no motherboard load, so its better to just use the power supply's ATX+4 connector and the 5V voltage regulator.
  • Added a jumper to enable/disable USB auto-reset. This way if you're printing from an SD card using SDSL you can disconnect your USB and reconnect it without interrupting a print.
  • R7 and R8 are now 100k pull-up resistors that are on the stepper-enable lines. This ensures the stepper motors stay disabled and don't move while uploading new firmware, rebooting, etc. The current limiting resistors for the FTDI are gone.
  • There is an extra Z-motor header for Prusa Mendel.

Overview and Hardware Resources


size:100mm x 60mm


Software Resources

Compiling environment: Arduino IDE for windows

Firmware: Marlin

PC Software:



Sanguinololu driver for windows (32bit/64bit)


Interface Layout


Interface specifications

  • 2 ADC interfaces for thermometry: one for extruder and another for hotbed.
  • 3 PWM to control extruder, hotbed and fan.
  • 3 end stops for x/y/z axis( mechanical, optical or hall sensor)
  • The USB 5V VBUS is connected to the output of the 5V regulator. This is bad for the regulator and bad for the PC. Some users report the regulator getting very hot (because it is trying to power the PC), other users report the PC giving USB over current errors. Nophead and Nothinman recommend cutting the 5V track to the USB connector. The only downside is the board needs the 12V supply before it will do anything, but who cares?

An alternate fix for the 1.3a board is to cut the trace between the USB chip pin 4 and C13. This is functionally identical to building a Sanguinololu without the USB port and FT232RL and using an offboard USB-serial cable. The advantage over cutting the 5V trace at the USB connector is that the USB serial port doesn't disappear from the host PC when the printer is switched off, which can anger host software that is still running.

  • When the bootstrap loader runs during reset and when downloading firmware the motors are enabled due to pull-downs on the Pololus (The enable pins are pulled up by 100K resistors on the Sanguinololu but they are pulled down by 100K on each Pololu). The step pins are floating and this can cause random motor movements. The E step pin is next to E dir pin which the bootstrap thinks is an LED to be flashed. Crosstalk can cause the extruder to spin when firmware is being loaded. This is not good as it will be cold, so could damage the hot end. Nophead recommends changing the enable line pull ups (R7 and R8) to 4K7 to ensure the motors are disabled until the firmware enables them.

A software fix is to use the the Gen7 boot strap that does not flash the non-existent LED.

  • The pads and traces on the board are not robust enough to handle the high current involved when controlling the heated bed with the sanguinololu's dedicated mosfet. If left as is, the board will heat up in this area, could be damaged and the plastic connectors discolored. To fix, simply add a direct current path by way of (preferably insulated) wire from the 12v input to the 12v pins on the Heated Bed (HB) connector; from the center pin of the HB mosfet to the two ground pins on the HB connector; and from the ground pin on the mosfet to the ground input of the board (probably the ground side of the 12v connector). Find the appropriate traces using continuity check or resistance mode on your multimeter, and check after to ensure you didn't create a short between any of these components in the process. It would be prudent to check for shorts before starting so you don't waste effort trying to fix a short you think you just created but was already there before you applied this fix. To understand this fix, pretend that no traces exist between the high current pathways of the 12v input and 12v pins of the HB connector; the ground input and the ground pin on the mosfet, and the center pin of the mosfet and ground pins on the HB connector. Assume you must create these pathways, then do so!

Jumper Instruction

San jumper1.jpg

Boot jumper cap: do remember to put the jumper cap, or it will affect the connection with PC(the system can’t detect the corresponding COM port) and the upload of firmware.

San jumper2.jpg

Step size of stepper driver (A4988)

jumper       Yes/No     stepsize     
ms1     ms2      ms3 
no      no       no     fullstep
yes     no       no     halfstep
no      yes      no     1/4step
yes     yes      no     1/8step
yes     yes      yes    1/16step 

Step size of stepper driver (Drv8825)

jumper   Yes/No       step size
ms1     ms2      ms3
no      no       no    full step
yes     no       no    half step
no      yes      no    1/4 step
yes     yes      no    1/4 step
no      no       yes   1/16 step
yes     no       yes   1/32 step
no     yes    yes      1/32step
yes    yes    yes      1/32step

Development Environment setting

Interface Connecting and Setting

Pay attention to the Plus-n-Minus of power supply, in case the inverse connection may cause damage to the board.

File Burning

Windows users need install driver before uploading. The board: Tools > Board > sanguino W/ATmega1284P 16mhz, as shown below.

Melzi FB1.jpg

Configuring serial interface: Tools > Serial Port > the corresponding COM Port of Sanguinololu is usually the last one. As shown below


Click the check“ Button1.jpg” button to check if it is right and then click the “Button2.jpg ” button to upload firmware, as shown below.

Rumba 11.jpg

Upon uploading, IDE will display the rate of progress; when done uploading appears, the uploading process succeeded

Rumba 12.jpg

After uploading, you can go on to the next step. If you cannot upload, check the dialog box below to identify the problem and solve it. The common mistakes are the wrong select of type of board or serial port etc.

Software Setting

Arduino IDE Installation

Move the file "sanguino" into Arduino> hardware, reopen IDE.

Windows will prompt that a new USB device, named FT232R USB UART was found when connecting USB with Sanguinololu to the PC. Then, windows will open the dialog box “found new hardware wizard”, check “no, not this time”, then click “next” to continue.

Rumba 14.jpg

Check “install from a list or specific location (advanced)”, then click “next”.


Specify “drivers” in Arduino 1.0.1 installation directory to install driver.

Rumba 16.jpg

If everything goes well, windows will install the corresponding driver. The graph below shows installation completed.


Now, you can find the corresponding Sanguinololu device in device manager of windows


Get Started

Sanguinololu is the CPU of a 3D printer, manipulating the whole process of printing. Sanguinololu can’t be put in use directly without uploading firmware.

1. Firmware uploading- marlin.

2. Setting parameters of the firmware

The parameters that need setting are as below, for those not mentioned just leave them as default.

 #define BAUDRATE 250000

This parameter is for the baud rate of serial port. Note: a successful communication can be realized only when the Baud rate of upper computer is identical with that of Firmware. The Baud rate is not set in random. The common Baud rate are: 2400,9600,19200,38400,57600,115200,250000. The last three are frequently used for 3D Printer.

 #define MOTHERBOARD 62

This parameter is set for board type. 3D Printer has many types of main board, and the settings of IOs are different, therefore, the parameter has to correspond to the type of your board, or it can’t operate normally. The parameter of Sanguinololu should be 62(single- nozzle). For other board, you can refer to the annotation on the board.

 #define TEMP_SENSOR_0 3
 #define TEMP_SENSOR_BED 3

The two parameters are set for the type of temperature sensor respectively. They are the critical parameter to check if the sensor read temperature correctly. The printer can’t operate normally, even has potential risk (damage the device and even worse). You must modify depending on the temperature sensor you use.

 #define EXTRUDE_MINTEMP 170

This parameter is set to avoid potential risks when the extruder operates before reaching the rated temperature. If you use other 3D Printer, such as printer to make Chocolates, 45℃ is appropriate, so that the parameter configured to a lower value(such as 40℃).

 const bool X_ENDSTOPS_INVERTING = true;
 const bool Y_ENDSTOPS_INVERTING = true;
 const bool Z_ENDSTOPS_INVERTING = true.

The three parameters are set for the end stops of three axes. If the configuration is true, the end stop outputs 1 in default condition, and outputs 0 when triggered. That is to say, mechanical end stop should connect to the NO (normally open) contactor. If it is connected to the NC (normally closed), true should be changed to false.

 #define INVERT_X_DIR false
 #define INVERT_Y_DIR true

Mistakes are often made in the above two parameters. The parameters are different for different machinery. In principle, the origin should be at lower-left corner of the print platform (origin: [0, 0]), or at up-right corner (origin: [max, max]). Only in this way will the printing be correct, otherwise, the printing is the mirror image of one axis which is not what expected.

 #define X_HOME_DIR -1
 #define Y_HOME_DIR -1
 #define Z_HOME_DIR -1

If the position of the origin is the minimum, the parameter is -1; if it is the maximum, the parameter is 1.

 #define X_MAX_POS 205
 #define X_MIN_POS 0
 #define Y_MAX_POS 205
 #define Y_MIN_POS 0
 #define Z_MAX_POS 200
 #define Z_MIN_POS 0

These parameters are crucial to the printing size. Fill in parameters by reference to the coordinate graphs. It is important to note that the origin is not the printing center and the real printing center usually lies at [(x.max - x.min)/2, (y.max -y.min/2)]. The coordinate of central will be used in the slice tool. The printing center’s coordinate must correspond to the parameter configuration, or it will print to the outside of the platform.

 #define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}

The parameter means the homing speeds (mm/min). This parameter can be set as default if you use the x-axis and y-axis adopt synchronous belt drive and z-axis adopts screw drive.

 #define DEFAULT_AXIS_STEPS_PER_UNIT {85.3333, 85.3333, 2560, 158.8308}

These parameters are crucial to the printing size. These parameters indicate the pulse the axis need when operating 1mm. they are corresponding to x, y, z axis and extruder respectively. In most cases these figure should be calculated by yourself, you can refer to:

So far, the commonest parameters have been configured and the printer can work now. In addition, if the 2004 LCD needs verifying, you should delete the “//” from “//#define REPRAP_DISCOUNT_SMART_CONTROLLER” to ensure the normal working.


1. The LED doesn’t light when connected to USB and 5v external power supply.

① LED is broken ②LED is not well welded ③ the power supply doesn’t work.

2.How to solve it if the driver installation failed?

Click here to reinstall the driver(( in Arduino IDE/hardware

3. What type of printer can Printrboard be applied to?

Solidoodle,printrbot,and most type of reprap(with 2 stepper motor drivers for Z axis and single extruder)


Arduino 1.0.1 for Mac

How to buy