Marlin has a setting that tells it how far each axis can go. By default, it also refuses to move beyond those limits. If your machine doesn't go far enough, you have the wrong limits (so Marlin thinks your machine is smaller than it really is) and/or you have the wrong steps-per-mm (so Marlin thinks your machine moves more than it actually does for a given number of steps). This part of Configuration.h gives the machine size and enables soft limits (your numbers should be different, to match the travel of your ORD Bot's axes):
- Code: Select all
#define min_software_endstops true //If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true //If true, axis won't move to coordinates greater than the defined lengths below.
// Travel limits after homing
#define X_MAX_POS 210
#define X_MIN_POS 0
#define Y_MAX_POS 333
#define Y_MIN_POS 0
#define Z_MAX_POS 100
#define Z_MIN_POS 0
And this is where the the steps-per-mm are set (note that this is for an eShapeOko, not an ORD Bot, so your settings
will differ):
- Code: Select all
#define DEFAULT_AXIS_STEPS_PER_UNIT {16.0*200.0/18.0/2.032, 16.0*200.0/18.0/2.032, 16.0*200.0/1.25, 712.7}
The calculation for X and Y is <driver microsteps/step> * <motor steps/rev> / <pulley teeth/rev> / <belt pitch mm/tooth>. Units cancel out and you should have microsteps/mm. For Z, it is <driver microsteps/step> * <motor steps/rev> / <leadscrew lead mm/rev>; again, units should be microsteps/mm. Last value (extruder steps-per-mm) is set empirically by measuring actual length pulled through the extruder and adjusting to compensate. Tip: to avoid the non-obvious pitfall of integer division in C, the simplest way is to use a decimal point on all numbers (in C, 7/2 is 3, but 7.0/2.0 is 3.5). Another tip: it really helps to spell the units out, because it allows you to double-check that you're multiplying when you mean to multiply and dividing when you mean to divide. It was one of the most useful things I learned in first-year high-school physics.
You can change the steps-per-mm temporarily with the M92 g-code command (or even write them to EEPROM using M500 if that's enabled). However, to change the min/max limits and whether soft limits are enabled or not, you need to recompile Marlin and upload it.