Wanhao Duplicator i3 Plus Conversion: Firmware

For my Wanhao i3 Plus clone conversion to a RAMPS setup, I chose Marlin as my firmware. This is for practical reasons more than because I have a strong opinion one way or another. I have read much more about Marlin than any other firmware and I have a friend who runs a Marlin variant for his printer; therefore, I know I can lean on him for configuration help.

I will not go into every small step of setting up and configuring Marlin. There are plenty of guides online that can do a much better job. What I do want to cover are the configuration options that you need to know specifically for the Wanhao Duplicator i3 Plus and its various rebranded counterparts.

Basic Parameters

  • 200, 200, 180 mm build volume (X, Y and Z respectively)
  • Extruder steps per mm: 96
  • X steps per mm: 80.15
  • Y steps per mm: 80.15
  • Z steps per mm: 399.5

The steps per mm numbers above are what mine is currently set to. I am still doing some tuning to make things more precise, but this should get you started. I would assume that your numbers would be identical to mine assuming you still have the stock motors, belts and drive screws. However, other settings inside of Marlin could affect these numbers.

Configuration Changes

I will paste my full configuration.h file below, but here are the lines that I have changed. I will put the line number as it appears in the original Marlin 1.1.x configuration.h file. Listed below are what they were changed to for getting my printer working, but not necessarily perfect. I don’t anticipate that I will update this document with every little change I make in the future.

  • Line 275: #define TEMP_SENSOR_BED 1
  • Line 326: #define PID_AUTOTUNE_MENU
  • Line 339: #define DEFAULT_Kp 25.83
  • Line 340: #define DEFAULT_Ki 1.49
  • Line 341: #define DEFAULT_Kd 112.15
  • Line 475: #define X_MIN_ENDSTOP_INVERTING true
  • Line 476: #define Y_MIN_ENDSTOP_INVERTING true
  • Line 477: #define Z_MIN_ENDSTOP_INVERTING true
  • Line 512: #define DEFAULT_AXIS_STEPS_PER_UNIT { 80.15, 80.15, 399.5, 96 }
  • Line 527: #define DEFAULT_MAX_ACCELERATION { 3000, 2000, 100, 10000 }
  • Line 537: #define DEFAULT_ACCELERATION 1500
  • Line 764: #define Z_MAX_POS 180
  • Line 1231: #define ENCODER_PULSES_PER_STEP 2
  • Line 1237: #define ENCODER_STEPS_PER_MENU_ITEM 2
  • Line 1254: #define REVERSE_ENCODER_DIRECTION
  • Line 1262: #define REVERSE_MENU_DIRECTION

Configuration Details

Lines 1231 and down have to do with the particular LCD display that came with my RAMPS board. You will have to look around for the settings for the display you are using. Mine says “RepRapDiscount Full Graphic Smart Controller” below the LCD.

Line 275 sets the type of thermistor for the heated bed. I uncommented line 326. This was to turn on a PID autotune feature on the control unit. PID is set with lines 339-341. The endstops have to be switched to true because on the Wanhao printer they are wired NO (normally open) as opposed to NC (normally closed).

The DEFAULT_AXIS_STEPS_PER_UNIT on line 512 is to set the motor driver steps. This is a line that you will adjust to dial in how far each step on the motor actually is. You can read the long and detailed version of axis calibration at the RepRap Wiki or check out this Instructable about calibration to get you started.

527 and 537 were changes I made because I was getting a drastic y-axis shift. It turned out the shift was due to the motor driver overheating. With a fan blowing on my RAMPS board I no longer have that problem. I may change lines 527 and 537 back to the default numbers to get more speed out of the printer.

That should be enough information to get you up and running with Marlin. Then you can spend the next 3 years continuing to tweak these settings and many other parameters.

Leave a Reply