Prusa i3 Rework Firmware

From RepRap
Jump to: navigation, search

Introduction | Bill of materials | Y-axis assembly | X-axis assembly | Connecting X-axis and Z-axis | Motor assembly

X and Y-axis motions | Heated bed assembly | Extruder assembly | Electronics and wiring | Marlin Firmware

Downloads - software and firmware

Step 1

After completing the build of your printer, it's time to breathe some life into it.

  • Start by downloading the Marlin firmware from this link:

[Marlin firmware used for Prusa i3 Hephestos - modified for Prusa i3 Rework]

Or choose for a Geeetech i3 X: [Firmware for Geeetech i3 X]

Original version can be found on GitHub: Marlin Firmware Repository

  • Next download the Arduino IDE from here:

[Arduino Download]

  • Download the Printrun application suite, which will be used to control your printer via USB:

[Printrun Download]

This suite consists of Printcore (a dumb G-code sender), Pronsole (featured command line G-code sender), Pronterface (Python G-code sender with GUI) and some helpful scripts. Together with Slic3r these tools form a complete printing toolchain.

  • If you get the Windows or OSX binaries Slic3r will already be included, if you are using GNU/Linux get Slic3r from here:

[Slic3r Linux Download]

Slic3r is used to create the G-Code from your STL or OBJ files to be read by Pronterface.

STL and OBJ 3D model files for testing can be obtained from [Thingiverse]. If you want to get into making your own stuff and learn about 3D modeling take a look at [Blender] - it's free and open source (GPL).

Step 2

After Downloading and installing all aforementioned applications start by unzipping the file to your desktop or another place where you can easily find it.

Doubleclick the file Marlin.ino. This should open a window similar to this one:

Arduino IDE with Marlin Firmware opened

Change the firmware

Step 1: Open the Settings

A large part of the code has been changed for me, but still can change some parts of the code or confirm in case something be wrong. If you do not change you can skip the following steps up to 10. If you opted for the current version, you should not ignore these steps. Still with the latest version of the variables differ.

To change the code Click on the tab that says Configuration.h.

Tab Configuration.h

Step 2: Date and name of the author of the changes

To make changes to the code you must indicate the name and the date of the person who initiated the changes.

#define STRING_VERSION_CONFIG_H __DATE__ "27/03/2015 1126h" __TIME__ // build date and time
#define STRING_CONFIG_H_AUTHOR "(Pedro Emanuel," // Who made the changes.

In this case replace 27 / 03/2015 1126h' 'by the current date on your computer, and' '(Pedro Emanuel,' 'by its name and other references.


When you connect your printer to your computer via USB, this is with a BAUDRATE that determines the printer connection speed, often this value is 115200.

#define BAUDRATE 115200

Pronterface BAUDRATE.

Step 4: RAMPS Motherboard

The next step will set the motherboard. In our case the chosen motherboard was' '33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed) .

So we chose the value 33:

#define MOTHERBOARD 33

'Note:' If we had two print heads it would be 34.

'Note on latest version of Marlin:' If you use a newer version of the plates are in boards.h and writing The option will be #define MOTHERBOARD BOARD_RAMPS_13_EFB instead of #define MOTHERBOARD BOARD_ULTIMAKER' '.

Step 5: Thermistor

This step is to set the thermistor, as we are using 2 thermistors 100k, one for the heated bed and the other to the print head. The thermistor is who will get the temperature information.

So we chose a value of 1 for both:

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0

Note: 'TEMP_SENSOR_0' 'refers to the print head thermistor and' TEMP_SENSOR_BED for the heated platen. If using a thermistor 10k (not recommended for heated table) would have to choose another option.

Step 6: Temperatures Min and Max

In this case you can set the minimum and maximum temperatures that the thermistor can detect .

minimum :
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5

'Note' HEATER_0_MINTEMP refers to the print head thermistor and 'BED_MINTEMP' 'for the heated platen. Maximum:

#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150

'Note' HEATER_0_MAXTEMP refers to the print head thermistor and 'BED_MAXTEMP' 'for the heated platen.

Step 7: Reverse movement of the motors

In these settings intentionally reverses some directions of the engines. When you have to make the first movement tests and verify that the motor is moving in the opposite direction can alter the value of true to false here.

#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR true    // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false

Step 8: Position of endstops

If your limit switches (endstops) are the root cause when sends the printer to Home which in this case will be: X = 215mm (MAX), Y = 0 mm (MIN) and Z = 0 mm (MIN).

So the code to be applied is:
#define X_HOME_DIR 1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

Where 1 is the maximum position of the X -1 and the minimum Y and Z.

Step 9: Set size of the print area

By default the Prusa i3 is approximately a dimension of 215 mm X, Y, Z of 210 mm and 180 mm. If you have a larger print area you can always change the following values:

#define X_MAX_POS 215
#define X_MIN_POS 0
#define Y_MAX_POS 210
#define Y_MIN_POS 0
#define Z_MAX_POS 180
#define Z_MIN_POS 0

Step 10: Speed of the motor

You can set the speed of the motors, these settings can be improved at the time of calibration, but most of these values are defined in the following calculator [ [ Josef Prusa ] ] .

// prusa i3 settings
#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,600}  // default steps per unit for prusa i3 rework 
#define DEFAULT_MAX_FEEDRATE          {500, 500, 2, 25}    // (mm/sec)
#define DEFAULT_MAX_ACCELERATION      {2000,2000,20,1000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.

Note : these values ​​work for the stepper drivers A4988. If you use DRV8825 drivers, the STEPS_PER_UNIT values ​​must be changed to double.

At the time of calibration recommend to draw a mark on the desired axis (X , Y or Z) and moving 10 cm and see how mm it moves, then we can get the correct value DEFAULT_AXIS_STEPS_PER_UNIT comparing with the result.

Install Marlin Firmware on the board

Step 1: Choose Board

Connect USB cable to the electronic assembly to the computer (this is connected to a USB port on the Arduino Mega). Wait for the system to install the drivers.

In the Arduino software choose 'Tools> Board> Arduino Mega or Mega 2560' '

Escolher Board Arduino Mega or Mega 2560

Step 2: Choose Serial COM Port

When connecting my computer has assigned the number COM5 to the Serial Port of my Arduino, in this case it may have assigned a different number. Avoid having other peripherals connected in order to easily find the right port of your Arduino.

If you have difficulties finding the COM Port, use the Windows Device Manager and connect your Arduino to the COM Port that you find.

In the Arduino software choose 'Tools> Port> COM5' '

Escolher Serial Port

Step 3: Compile and verify the firmware

Before making the Upload be sure to test to see if everything is OK by pressing the round button in the upper left corner in the shape of a checkmark inside:


When checking a progress bar shows the results below. If it is an error, and if it is not the first time you are following this process, make sure there is Pronterface connected to the printer or other application.

Progress Bar

Step 4: Upload to Arduino

Progress Bar

Your firmware is now uploaded. No need to make this process more than necessary, unless you want to change the permanent settings to the Printer or components.

(Note from user c8888:) If you encounter any problems while uploading firmware (for example: avrdude: stk500v2_ReceiveMessage(): timeout), the first thing to do is to change your (long - 2m) USB cable for a shorter (50cm) one.