Skip to content

Dual Gantry Configuration

Alden Hart edited this page Jul 6, 2013 · 17 revisions

This page describes how to set up configuration for a Dual gantry setup. The example given is a Shapeoko with a Dual Y gantry.

Overview

A dual gantry setup uses 2 motors to drive a single axis. Commonly the dual gantry is the Y axis, but not always. The 4 motors on TinyG can be used to support a dual Y gantry like so:

Motor | Axis 
------|------
Motor1 | X Axis
Motor2 | Y1 Axis
Motor3 | Y2 Axis
Motor4 | Z Axis

The Y2 axis has reverse polarity from Y1 as the 2 motors are facing each other and therefore need to turn in the opposite direction from each other.

Note that the 'A' axis is not used. Only the 4 motors and the X, Y and Z axes.

Settings

Here are some example settings for a Shapeoko dual Y gantry setup. You will probably need to experiment to get exact settings for your machine, but this is a good starting point. The maximum velocities and feed rates are set intentionally low and can probably be set higher with tuning.

Motor 1 (X Axis)

Setting | Description | Notes
--------|-------------|-------
$1ma=0 | Map to X axis| 0=X axis, 1=Y axis, 2=Z axis
$1sa=1.8 | Step angle in degrees | Set 1.8 for 200 step / revolution motors, 0.9 for 400 step / revolution
$1tr=36.54 | Travel per rev in mm | This value should be calibrated to your setup
$1mi=8 | Microsteps to 8 | Experiment with 4x microstepping for more power
$1po=0 | Polarity normal | Set polarity so X travels to the right for positive values (G0 X10)
$1pm=0 | Power management mode | 0=axis remains powered when idle

Motor 2 (Y1 Axis)

Setting | Description | Notes
--------|-------------|-------
$2ma=1 | Map to Y axis| 
$2sa=1.8 | Step angle in degrees |
$2tr=36.54 | Travel per rev in mm | This value should be calibrated to your setup
$2mi=8 | Microsteps to 8 | Try 4x for more power
$2po=0 | Polarity normal | Set polarity so Y travels to the rear of the machine for positive values (G0 Y10)
$2pm=0 | Power management mode | 0=axis remains powered when idle

Motor 3 (Y2 Axis)

Setting | Description | Notes
--------|-------------|-------
$3ma=1 | Map to Y axis| Same as Motor 2
$3sa=1.8 | Step angle in degrees |
$3tr=36.54 | Travel per rev in mm | MUST BE THE SAME AS MOTOR 2
$3mi=8 | Microsteps to 8 | Should be the same as motor 2
$3po=1 | Polarity reversed | MUST BE OPPOSITE MOTOR 2
$3pm=0 | Power management mode | Should be the same as motor 2

Motor 4 (Z Axis)

Setting | Description | Notes
--------|-------------|-------
$4ma=2 | Map to Z axis| 
$4sa=1.8 | Step angle in degrees |
$4tr=1.25 | Travel per rev in mm | The stock Shapeoko Z screw is 1.25 mm / rev
$4mi=4 | Microsteps to 4 |
$4po=0 | Polarity normal | Set polarity so Z travels up for positive values (G0 Z10)
$4pm=1 | Power management mode | 1=axis shuts off when idle. Can also use $4pm=0

X Axis

Setting | Description | Notes
--------|-------------|-------
$xam=1 | Axis mode normal |  
$xvm=10000 | Velocity maximum | Max velocity for axis, aka "traverse rate" or "seek" 
$xfr=10000 | Feed rate maximum | Maximum feed rate for that axis. Limits F words to this value
$xtm=220 | Travel maximum 220mm | Used by homing to know when to give up
$xjm=5000000000 | Jerk maximum | That's 5 billion
$xjh=10000000000 | Jerk homing | That's 10 billion - jerk used during homing operations
$xjd=0.01 | Junction deviation | For cornering control
$xsn=1 | Minimum switch mode | 1=homing-only
$xsx=0 | Maximum switch mode | 0=disabled
$xsv=3000 | Search velocity | Homing speed during search phase (drive to switch)
$xlv=100 | Latch velocity | Homing speed during latch phase (drive off switch)
$xzb=3 | Zero backoff | offset from switch for zero in absolute coordinate system

Y Axis

Y axis commands will drive both Y motors.

Setting | Description | Notes
--------|-------------|-------
$yam=1 | Axis mode normal |  
$yvm=10000 | Velocity maximum |
$yfr=10000 | Feed rate maximum | 
$ytm=220 | Travel maximum 220mm | 
$yjm=5000000000 | Jerk maximum | That's 5 billion
$yjh=10000000000 | Jerk homing | That's 10 billion - jerk used during homing operations
$yjd=0.01 | Junction deviation | For cornering control
$ysn=1 | Minimum switch mode | 1=homing-only
$ysx=0 | Maximum switch mode | 0=disabled
$ysv=3000 | Search velocity | Homing speed during search phase (drive to switch)
$ylv=100 | Latch velocity | Homing speed during latch phase (drive off switch)
$yzb=3 | Zero backoff | offset from switch for zero in absolute coordinate system

Z Axis

Setting | Description | Notes
--------|-------------|-------
$zam=1 | Axis mode normal |  
$zvm=600 | Velocity maximum |
$zfr=600 | Feed rate maximum | 
$ztm=100 | Travel maximum 220mm | 
$zjm=50000000 | Jerk maximum | That's 50 million
$zjh=100000000 | Jerk homing | That's 100 million - jerk used during homing operations
$zjd=0.01 | Junction deviation | For cornering control
$zsn=0 | Minimum switch mode | 0=disabled
$zsx=1 | Maximum switch mode | 1=homing-only
$zsv=600 | Search velocity | Homing speed during search phase (drive to switch)
$zlv=100 | Latch velocity | Homing speed during latch phase (drive off switch)
$zzb=3 | Zero backoff | offset from switch for zero in absolute coordinate system

Additional Settings

Setting | Description | Notes
--------|-------------|-------
$ja=2000000 | Junction acceleration mode normal | max centripetal acceleration around corners
Clone this wiki locally