skip to Main Content

motionPro 6600 motion controller Documentation

The motionPro 6600 motion controller is powered by the high power Toshiba TB6600 bipolar stepper drivers capable of putting out an impressive 5A of current per phase at upto 40V of input voltage. This controller can be used in a multitude of applications such as milling machines, laser engravers, robotics, pick-n-place machines etc. However, this one is particularly usefuly for beefed up heavy builds that need that extra power drive.


The motionPro 6600 motion controller is a four-axes motion system for stepper motor-driven machines and comes with integrated, high-powered motor drivers. The hardware is designed to be software agnostic and will work with any logic that puts out TTL-level step and direction signals.

The motionPro 6600 comes integrated with the latest version of grbl firmware, but it can also be controlled using any external software such as the popular Mach 3, LinuxCNC, or even custom softwares for bespoke applications. The controller eliminates the need for any external drivers and comes equipped with four high-powered, independently configurable Toshiba stepper motor drivers.


Active cooling for the heatsink through a fan maybe needed depending on how hard you plan to drive your drivers. You can use standard 120mm computer fans for this purpose and these can be powered using the onboard 12V power outputs.


No specialised tools are need to get started with the controller. You will need:

A flat head screwdriver
Some wire cutters
A small nose plier
A soldering iron (optional)

Installing drivers

The motionPro 6600 CNC controller uses a USB to UART bridge from Silicon Labs to connect to your computer. Before you connect the controller to your PC you will need to download the virtual com port (VCP) drivers. Once the drivers are installed your PC should auto-detect the hardware and create a numbered virtual serial port. This port can be used to connect the frontend GUI to your machine.

In Windows, this should be visible under Device Manager and in OSX you should be able to see this by typing ‘lsusb’ in the Terminal window.

Download the drivers available here

The USB works only with the onboard grbl firmware and not with the external logic.

Power inputs

The motionPro 6600 can be powered using a 15-36V power supply capable of delivering at least 15A. Two types of connectors are available – A screw type terminal and a JST VH 3.96mm pitch header. Both of them are located on the far left of the board.

Driver current limiting

All stepper drivers need to have current limiting set to prevent excessive current draw that can damage the motors and the drivers. By default, the current limit is set to 2A per phase.

150 milliohm current sense resistors are used. The board has separate 1-pin headers next to presets on the board marked as Vref. Connect a multimeter between this header and GND and turn the preset to change the reference voltage. A chart on the board shows the Vref voltages for currents in increments of 500mA.

DO NOT set the current limit higher than the motor’s rated limit. It is always a good idea to set the current limit to approximately 20% lower than the rated motor current.

Driver torque and resolution settings

Each axes is independently configurable for current limits, stepper resolution and torque settings.

Torque settings

A 3-pin header controls the available torque that the drivers can supply. Setting it to AUTO will work in most situations. This setting looks at the stream of step pulses and adjusts torque accordingly. For a steady stream of pulses, the torque is consistently held high. The other setting is 100% torque. This setting enables the driver to supply 100% torque all the time.

The torque settings determines the heat produced by the drivers. If you chose to put the drivers in 100% torque mode, you will see the heatsink more warmer than at AUTO settings. A cooling fan might be needed in such cases.

Stepper resolution

The stepper resolution is set using a 3 way micro slide switch. A chart showing the micro-step value and the corresponding switch value is shown on the board. The driver used here supports upto 16 micro steps.

Logic control inputs

Three different control inputs can be used to control the drivers.


The USB connection controls the drivers using the native grbl firmware. Simply plugin in your cable to the computer, install the drivers and use any grbl-compatible GUI.

Parallel port and 14-pin IDC header

A complete set of STEP, DIR and LIMIT control signals for each axis is broken out on the board in the form of a 14-pin header and a parallel/printer port. All inputs are opto-isolated. To select the external control input, simply slide the input selector switch to the position marked as DB25.

Parallel port pin map

The parallel port pins are mapped as shown below. A pin map is also available on the underside of the board.

2 – X STEP
3 – X DIR
4 – Y STEP
5 – Y DIR
6 – Z STEP
7 – Z DIR
8 – A STEP
9 – A DIR
10 – X LIMIT
11 – Y LIMIT
12 – Z LIMIT
18 TO 25 GND/COM

Parallel port expansion

The unused parallel port pins are expanded into a single header on the left of the port. These also include the A step and A dir pins which can be used to control an external driver (except when the AUX axis driver is being used as the 4th axis).

Note that while any of the limit switches or the Emergency STOP inputs are triggered and active, none of the inputs will be able to move the axes. You will need to manually move the axes such that they release the stops and are not active anymore.

Jog control input

The 14-pin IDC header is also used for the bundled jog controller. This controller allows the user to jog the machine without any control input. To use the jog controller, simply plugin in the jogger using the cable provided.

Please note that while using the 14-pin header as a control input you will need to short the pins titled IDC EN on the board. These pins are located at the very top next to the parallel port.

At any given time, any one of the inputs is active.

Using the onboard grbl firmware

The motionPro 6600 ships with the following default settings

  • The default current limit for each stepper motor is configured at 2A.
  • Limit switch mode is set to active HIGH i.e. NC switches can be connected in this mode.
  • Stepper resolution is set at 1/16 steps for all drivers
  • Clone axis is set to clone the Y-axis
  • All default values set by grbl are left untouched (except $4 as described below)

The default ‘step enable’ setting, $4, is set to 1 since the TB6600 drivers need an active-high enable input while the default grbl value is 0. DO NOT change this.

Using the controller with the onboard grbl firmware is quite simple.

  • Switch the selector switch below the main expansion header in the middle of the board to ‘Select grbl’. This essentially ignores any input through the DB25/parallel port.
  • Set the current limit for the drivers.
  • Set the stepper resolution and make sure the micro step value selected is the same reflected in your grbl steps/mm settings ($100, $101 and $102).
  • Set the torque adjustment jumpers. For most cases, you’d want to leave this on AUTO.
  • Make sure neither of the ends top indicators or the emergency stop indicator is ON. If either is lighted it means that either the machine has tripped any of your limit switches or is a weird state where the emergency stop was activated.
  • Now plug in the USB cable and connect to your suitable choice of grbl control software and test each of the axis. If they do not move in the direction you think is correct, then power off the board and reverse the connectors on the board. You can also do this by settings the axes direction mask in grbl. Refer the grbl wiki for more information on this.

The endstop states are read and reported only if the appropriate settings are enabled in grbl – $20 and $21. To read and report hard limit states, mechanical switches need to be installed and connected to the controller either in NC or NO modes.

The expansion header

Standard outputs from the grbl firmware have also been made available in the form an expansion header. This header also includes the Spindle PWM and Spindle Direction outputs. These are typically used to control the spindle speed and direction on a mill. However, they can also be used to control a laser driver for laser engravers and cutters.

Motor connections

Before connecting the motors you’ll need to identify which wires represent the coils. This guide explains in detail how to identify connections for a 4 and 6-wire stepper motor.

This controller comes with two 4-pin connectors for connecting the motors. The smaller connector is a standard 0.1 inch pitch connector for connecting smaller NEMA 17 motors. The larger header is for connecting beefier NEMA 23 and 34 motors.

Always test motors and their direction of movement when they are not in the system hooked up with the rails. This helps in identifying how a specific wire pair combination affects the direction of the motor.

Configure the AUX axis

The AUX axis is a custom configurable axis that can be used for a variety of purposes. Its function can be selected using a selector switch.

As a 4th axis

Simply slide the switch to the A axis position to use the AUX axis as a 4th axis. This feature is available only through the parallel port input.

To clone the X or Y axis

The AUX axis can also act as a duplicate driver for the X or Y axes. This is particularly useful for machines that use two motors for these axes.

Note that all current, torque and stepper resolutions are independently configurable for the AUX axis.

Endstop switch configuration

A host of limit switch options are available.

Limit switches are either normally open (NO) or normally closed (NC). When normally open switches are used, set the limit switch mode to ACTIVE LOW. With NC switches set the limit switch mode to ACTIVE HIGH.

On the board, there is a 2×4 header with numbers around the pins. Pins 1 and 3 and 2 and 4 are shorted. Also, pins 2 and 4 are common pins. Connect your limit switch common terminals here.

Series vs parallel connections

In a typical motion system there are 6 limit switches (2 for each axis on either ends).

Series connections. Typically normally closed limit switches are connected in series with each other as shown here. In this case, when either switches gets tripped it breaks the connection stopping the motor’s motion. If you are using this mode, set the limit switch mode to active high, connect the common terminal either on pins 2 or 4 and the other terminal on 1 or 3. In the series connection mode, you’ll need to use only one pair of the 2×4 headers.

Parallel connection. Limit switches that are normally open are wired in parallel with each other. When either of them is tripped stop motion is triggered. If you are using this configuration, connect the common terminals of both switches on pins 2 and 4 and the other terminals on pins 1 and 3.

Make sure you match the axis limit switches with the ones marked on the board.

For configuring limit switches with grbl refer this post.

Various grbl maintenance operations

To change the default grbl settings connect to your controller board using the USB cable and open the serial monitor. Once connected you should see a message such as this:

Grbl v0.Xx [‘$’ for help]

This confirms that you are able to access all control settings for grbl. A full list of settings and their description is available here. To view the settings type $$ and grbl should respond with the settings that are pre-configured. To change any of the settings type $ followed by the associated number and the setting value. The grbl wiki here describes in detail the settings, its values and how to change them.

Typical values that you would need to change are the steps/mm, max travel distance, the acceleration rates and homing.

Updating the grbl firmware

Please proceed with caution and know what you are doing. Updating the firmware will erase all custom settings and options. This will reset grbl back to its default settings.

This controller comes pre-installed with grbl 1.1f. Whenever a new release comes in you can update the firmware yourself using the Arduino IDE. Download the grbl zip or clone the git repository into a new folder. You should find a new folder called grbl inside this main folder (usually named grbl-master). Copy the grbl folder to the Arduino libraries folder. This is usually under your ‘Documents/Arduino’ folder.

Restart the IDE and you should now see the grbl item under File > Examples menu. Please make a note of your existing settings, mask values etc. This is important!

Clear the EEPROM and upload the new firmware

Before you update the firmware, you’ll need to clear all existing settings and values. From the Arduino IDE menu, open the eeprom_clear program (File > Examples > EEPROM). Now upload this program to the controller as you would any other program.

Now open the grblUpload sketch and simply upload the sketch to get the updated firmware.

The other way is to upload a pre-compiled HEX file (also available on the grbl page) using a HEX uploader and an AVR programmer (there are plenty of cheaper clones of these programmers).

If the above method does not work, use the 10-pin ISP header next to the AVR processor to program the board. You will need one an AVR programmer such as this or this. Please install any 3rd party drivers that would be needed by your programmer before attempting this. Make sure you line up the red wire from the programmer with pin 1 of the header (marked on the board).

Heat management

This controller requires a heatsink for the drivers. This is mounted on the underside of the board. The driver chips also dissipate heat through the PCB (though not very efficiently).

DO NOT operate the board without the heatsink! The driver chips will burn out if done so.

Working with LinuxCNC is simple to setup and easy to use with the motionPro 6600.

Here is a handy checklist:

  1. Slide the selector switch below the breakout header in the middle of the board to ‘Select DB25’.
  2. Hookup your end stop switches to the appropriate inputs. Read this section on how to do this.
  3. Make sure your ESTOP and other endstop switches are  not triggered.

The direction inverts for X, Y and Z are specific to my machine and yours may not need them. The ESTOP input has to be inverted though.

Here is what the Stepconf configuration screen looks like

Base Information

The maximum jitter is specified for my machine (an ancient Pentium 5 machine). You should test yours by running the Latency Test tool.

Download the HAL and INI files for my machine.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top