User Tools

Site Tools


ORD Bot Software

There are a lot of steps to go from CAD software down to the printed parts. There are a lot of options, but from a high level perspective they all do the same steps.

  • Create your STL file
  • Slice the STL file into layers and create the G-Code.
  • Control the printer and send the G-Code to it.
  • Software (usually called firmware) on the Arduino to convert the G-Code into actual motion.

Firmware configuration

The term firmware usually means software that runs on dedicated hardware like the Arduino rather than a general purpose machine like a personal computer.

The firmware attempts to be able to work on as many types of machines as possible. You therefore need to describe your machine in the firmware. This is usually done by changing some text in a file called configuration.h.


You need to tell the firmware the type of electronics you are using, like RAMPS, Sanguinolulo, etc

If you are using RAMPS 1.3 or 1.4 and Marlin, then use in the firmware:

#define MOTHERBOARD 33

if you have an extruder, bed and fan, or

#define MOTHERBOARD 34

if you have two extruders and a bed


X and Y

Stepper Resolution (s) = 200 steps/rev
Driver microstepping (m) = 16 microsteps/motor step
Pulley teeth (d) = 20 
MXL Belt pitch (p) = 0.08 inches (2.032mm)
Resolution = s * m / d /p
Resolution = 200 * 16 / 20 / 2.032 = **78.7402** steps/mm


Resolution = s * m / p
Stepper Resolution (s) = 200 steps/rev
Driver microstepping (m) = 16 microsteps/motor step
!!! For 1/4-20 Threaded Rod !!!
Lead Screw pitch (p) = #1/4-20 = 20 threads/in = 0.05 inch = 1.27 mm
Resolution = 200steps/rev * 16microsteps / 1.27mm/thread = 2519.68
!!! For 8mm x 1.25mm Threaded Rod !!!
Resolution = 200step/rev * 16microsteps / 1.25mm/thread = 2560 steps/mm 

E (Extruder)

You generally need to determine this by calibration or get the number from someone who has done it.

The MakerGear Extruder is about **1387** steps/mm with a 16 microstep driver.
The MakerBot MK7 is about **100.323** steps/mm with a 16 microstep driver.
The QU-BD MBE Extruder is about **106.707** steps/mm with a 16 microstep driver. (according to automation technologies)
The QU-BD MBE Extruder is about **93.36304** steps/mm with a 16 microstep driver. (according to qu-bd)


Depending on the firmware you use there will be a line that looks like this somewhere in configuration.h There are usually some comments before the line to help you. Here are two different firmware examples.

float axis_steps_per_unit[] = {78.7402, 78.7402, 2560, 1387}

#define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,2560,1387}

Motor Directions

If the motors spin the wrong way you can either adjust your wiring or change it in software. Look for these settings in configuration.h

#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

Work Area

You only need end stops on one side of each axis. That is usually the zero side. The controller can then find the zero point on it's own. If you tell the controller how much travel each axis has, it will not move farther than that. You do not need limit switches at the upper other end.

Forgetting to set the work are size is a typical Newbie mistake. The default number may be smaller than you want and the axis will appear to stop too early.

Make the adjustments in configuration.h

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

Speed, Acceleration, Jerk

There is a line in configuration.h that defines the maximum speed and acceleration of the axes. This is what it looks like in Marlin.

#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45}
#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}


#define DEFAULT_XYJERK 20.0
#define DEFAULT_ZJERK 0.4

End Stops

If you are using end stops, make sure that they are configured correctly. Pullup resistors should be enabled. Set the homing position to 0,0,0 if it isn't already.

Getting the correct behavior from the endstops may require some experimentation, depending on the position and the wiring of the limit switches. Use the following diagram as a guide:

TIP (Marlin): When homing, if you motors move a little away from the endstop and then stop, you most probably need to invert the logic of the switches, either by rewiring them or by inverting the X_ENDSTOPS_INVERTING setting in Configuration.h file in Marlin.

Thermal Settings

Configuration.h also allows you to set up your extruder's thermal characteristics. It comes pre-programmed with PID profiles for some extruders, so comment in the one you are using. There is also a max-temp cutoff for the extruder. This shuts down the printer if the extruder goes over that temperature. Determine the highest temperature you will use, and set that value to 20ºC higher.

ord/software.txt · Last modified: 2012/12/11 18:33 by bdring