Introduction | Bill of Materials | Y-axis Assembly | X-axis Assembly | Connecting X-axis and Z-axis | Motor Installation | X and Y-Axis Motion | Heated Bed Assembly | Extruder Installation | Electronics and Wiring | Firmware Configuration | Validation and Testing | Working with Files and Printing
Your Baja i3 Rework kit is shipped with a fully configured control board assembly. We've loaded basic settings so you'll be able to get your machine online quicker. The steps below are provided as a reference to how we arrived at the settings that are programmed into your board. For first time builders and those not yet experienced in how these machines work we strongly suggest using the settings loaded on the board until you are more familiar with how the various firmware parameters work and how changing them impacts the performance of the machine.
Your machine has Marlin firmware installed. It was chosen because it's feature rich, robust and easy to use. It's the same thing we use in our in house bot farm. The version is from the 1.0x branch with the current code and config file for your machine in our Baja i3 Rework Github.
For now move on to the next step validation and testing.
The document below is Triffid Hunter's wonderful guide in the Reprap Wiki.  It's the gold standard for firmware configuration for Reprap style open source printers.
Assuming you're using belts and pulleys, the XY steps-per-mm can be accurately calculated using your motor, pulley, and belt characteristics, and once set they shouldn't need to be calibrated further. But there's no harm in making sure! If you've calculated this value correctly but your objects come out the wrong size by a noticeable amount, your belts may be damaged or something else is awry!
The basic formula is:
steps_per_mm = (motor_steps_per_rev * driver_microstep) / (belt_pitch * pulley_number_of_teeth)
Some common examples:
// NEMA 17 motor with T2 belt and 20-tooth pulley: (200 * 16) / (2 * 20) = 80.0 // NEMA 17 motor with T5 belt and 8-tooth pulley: (200 * 16) / (5 * 8) = 80.0 // NEMA 17 motor with XL belt and 8-tooth pulley: (200 * 16) / (5.08 * 8) = 78.74
Most RepRap printers use a pair of threaded rods for the Z axis. So to calculate how far the Z axis moves for each revolution of the motor, first you need to know how much rotation is being transmitted to the Z rods, and then use the "thread pitch" of the rod (distance-per-revolution) to determine the vertical motion.
The basic formula to calculate motion on a rotating rod is:
steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch
Some common examples:
// NEMA 17 with standard pitch M5 threaded rod: (200 * 16) / 0.8 = 4000 // NEMA 17 with standard pitch M8 threaded rod: (200 * 16) / 1.25 = 2560 // NEMA 17 with SAE 5/16" threaded rod. It has 18 threads per inch (25.4mm / 18): (200 * 16) / (25.4 / 18) = 2267.7165355
Some printers connect the Z motor to the Z rods with a belt and pulleys. As long as the pulleys have the same diameter the above formula will work. But if the pulleys differ you'll need to include this ratio in the final result. For example, if the motor pulley was half the size of the rod pulley, you would need to multiply the final result by 2.
There are an increasingly wide variety of motors and extruder setups to choose from. "Wade" extruders use a NEMA motor to drive a large reduction gear that turns a "hobbed bolt." Direct-drive extruders typically use a motor with a planetary gearbox to turn a drive gear, such as the popular MK7. Bowden setups can use either method to push the filament through a tube to the hot end. There are others, such as worm drives, but we won't get into those here.
For a typical Wade extruder, the hobbed bolt will be made from an M8 bolt, and its "effective diameter" will be around 7mm. The direct-drive MK7 gear is specified as having an effective diameter of 10.56mm. These are just starting points to get close to the correct value, and then you'll measure and calibrate to get the exact value later.
The standard formula is:
e_steps_per_mm = (motor_steps_per_rev * driver_microstep) * (big_gear_teeth / small_gear_teeth) / (hob_effective_diameter * pi)
Some typical examples:
// Classic Wade with a 39:11 gear ratio (200 * 16) * (39 / 11) / (7 * 3.14159) = 515.91048 // Gregstruder with a 51:11 gear ratio (200 * 16) * (51 / 11) / (7 * 3.14159) = 674.65217 // Gregstruder with a 43:10 gear ratio (200 * 16) * (43 / 10) / (7 * 3.14159) = 625.70681 // MK7 Direct Drive with 2engineers 50:1 planetary gear motor (48 * 16) * (50 / 1) / (10.56 * 3.14159) = 1157.49147
Required tools: vernier caliper with depth gauge, or similar tool that can precisely measure 100mm. Your hob effective diameter is unlikely to be exactly 7mm.
new_e_steps = old_e_steps * (100 / distance_actually_moved) … or, old_e_steps * (100 / (distance_to_mark + 80))
At Z=0, you should be able to have a single piece of paper between your nozzle and the bed, and move it with a little "grabbing" but not quite enough to bend the paper when you push it. This is a simple, quick and effective test to use when levelling your bed. This small gap almost perfectly compensates for thermal expansion, which causes your hot-end to actually get longer as it heats up!
Rather than tuning your endstop endlessly, you could simply make a macro that homes Z using the endstop then sends G92 Z-nnn where -nnn is the negative position of your endstop. Your endstop must of course be below Z=0 for this to work. (Not too much, or you may damage the nozzle and/or print-bed!) Ideally in this setup your endstop would be set so that the (cold) nozzle just touches the bed, and then you'd send G92 Z=-0.1 (or your measured thermal expansion). Note that most slicing software adds a HOME command followed by G92 Z0 to the starting G-Code, so you will also need to tune your slicing settings to make sure your G-Code homes to Z-nnn. There are now many adjustable Z-endstops available for download, and these can be real time-savers.
When your Z=0 point is set correctly, your bottom layer will be slightly fatter than layers on top, but not extremely so. Most slicing software is set up by default to extrude a little extra material in the first layer, and you can tune this to get the perfect extrusion for your first layer, as well. (See below.)
Bed adhesion is strongly related to the Z=0 point. If you're not getting enough adhesion, print slower with a lower Z=0 point so the first layer is squished more. If you're getting too much adhesion, raise the Z=0 point a little so the first layer isn't quite so squished.
These are simple to visualise. When your extruder draws a line of plastic, that line has a height and width. You get to choose these values.
Best results are obtained when layer height < 80% of nozzle diameter, and extrusion width >= nozzle diameter.
Eg; with an 0.35 nozzle, your maximum layer height is 0.35*0.8= 0.28mm and your extrusion width should be 0.4mm or greater. with an 0.5mm nozzle, your layer height can be up to 0.4mm, and an 0.25mm nozzle will give you 0.2mm max layer height.
You can use a lower layer height or larger extrusion width if you wish, it will work fine. The slicing software automatically calculates the appropriate volume to extrude based on the settings you choose. There is no hard lower limit on layer height - it is limited by your ability to keep flow consistent at very low flowrates. Some reprappers have printed layers as small as 5 micron - 0.005mm!
Personally I go for layer height of 0.2mm, and extrusion width of 0.5mm regardless of which nozzle I'm using.
Slic3r automatically chooses an extrusion width for you based on your nozzle diameter. If you're determined to choose, you can use the extrusion width advanced setting. It is frequently advantageous to choose as models may have walls of a particular width, and by choosing you can ensure they are entirely filled with perimeter with no gap in the middle and no infill.
Each type of plastic, and each colourant for each type of plastic alters the ideal printing temperature. E.g., I can print opaque PLA at 165°C with fantastic results, but my translucent PLA prefers 180°C!
Every machine will have different numbers due to differences in thermistor, and how close to barrel temperature your thermistor is actually sensing.
Here's how I find my optimum temperature for each roll of filament that I have:
Bed adhesion is critically important for quality prints. With the right amount of bed adhesion, your parts will:
This procedure helps attain 1 through 3 by finding the correct bed surface temperature. 4 is obtained by experimenting with various bed coatings such as PVA wood glue (best for PLA), UHU Glue (for nylon), automotive window tint, hairspray, ABS juice, sugar water (ABS), etc.
You should generally print your first layer with the bed about 10° hotter than the regular layers' temperature, to ensure that the plastic is very sticky and gets a good grip.
For reference, the SURFACE temperature of your bed (NOT the temperature measured by your sensor) should be around 105°C for ABS, and around 57°C for PLA.
Your thermistor WILL sense a higher temperature than the surface – a gradient of several degrees forms across your glass. DO NOT muck with thermistor tables or move your thermistor to the surface. You WANT it close to the heater so it can respond quickly and give a short feedback loop. Just find whatever number gets the surface to the right temperature, and stick with it!
After performing this procedure, if your prints warp off the bed mid-print at ends or corners, try adding a brim (Slic3r/Cura setting) and experimenting with various bed coatings. PVA wood glue diluted very thinly in water is excellent for PLA, and certain brands of hairspray are reportedly excellent with ABS.
Now, with everything very close to ideal values, we can finally dial E steps in that final little bit!
Now print your favourite calibration piece (e.g., ultimate calibration) and see how it measures!