Files
linuxcnc/docs/WIRING.md
Thaddeus Hughes 93f4041600 some warnings
2026-05-26 10:02:28 -05:00

7.4 KiB

This is how I have my LinuxCNC machine wired. I put a linuxCNC box in place of a Southwestern Industries TRAK CNC II control box. I am reusing the TRAK drives, motors, and encoders. Eventually, I switched to using linear encoders instead of the TRAK encoders.

Mesa card Role
6i24-16 FPGA card (PCIe host interface)
7i52S Servo interface daughter card
7i37TA Isolated I/O daughter card

TRAK Encoder Pinout

The encoders for both motors and the standard TRAK encoders use the same Amphenol CPC connector.

The encoders are differential 5V output. They might have an index pulse but I wasn't using it. The Z axis has the same pinout.

Pin Signal Color (in PC)
1 B- White
2 5V Red
3 B+ Blue
4 N/C
5 N/C
6 N/C
7 N/C
8 N/C
9 GND Black
10 GND Black
11 GND Black
12 A- Yellow
13 GND Black
14 A+ Green

Linear Encoder Pinout (DB9)

I switched to some linear encoders that have a D-sub connector. They are also 5V differential output, and nearly the same resolution, resulting in very easy switchover.

Pin Signal Color (in PC)
1 A- Yellow
2 GND Black
3 B- White
4 N/C N/C
5 Z- Tan
6 A+ Green
7 5V Red
8 B+ Blue
9 Z+ Maroon

DB37 Pinout

The DB37 cable contains drive signals and motor encoder signals.

This pinout was determined by probing. I'm not sure what some of the pins do; some of the ??? pins might actually be an index pulse or something.

Pin Signal Notes
1-5 ??? (N/C?)
6 YB- Y Encoder
7 YB+ Y Encoder
8 YA+ Y Encoder
9 YA- Y Encoder
10 XB+ X Encoder
11 XB- X Encoder
12 XA+ X Encoder
13 XA- X Encoder
14 XENW X Enable
15 XENR X Enable
16 YENW Y Enable
17 YENR Y Enable
18 ZENW Z Enable
19 ZENR Z Enable
20 ??? (N/C?)
21 5V
22 5V
23 GND
24 GND
25 5V
26 5V
27 GND
28 GND
29 5V
30 5V
31-37 GND

MESA Cards

7i37TA

Three enables are used - one for the X and Y axes, one for the z axis, and one for the spindle. This allows the z axis to be disabled independently for manual drilling operations.

Each works by connecting a pair of wires. Made = enabled.

The spindle only has enable; direction and speed is manually controlled.

A custom M101 and M102 g code enables/disables the z-axis.

Enable 7i37TA Pin 6i24-16 Pin Wire Color
XY OUT6+ 46 White & Green to black
Z OUT4+ 44 Red to black
Spindle OUT3+ 41 White to Green

7i52S

Encoder connector

(This is for connector 0; carries over to channels 0-4 as well)

Five encoder inputs are used - x, y, and z each use one without index pulse, and x and y have a secondary linear encoder that does use the index pulse

Sometimes the A-channels and B-channels are flipped, at least color-wise.

Pin Signal Function Wire Color
1 QA0 A+ Green
2 /QA0 A- Yellow
3 GND GND Black
4 QB0 B+ Blue
5 /QB0 B- White
6 +5V 5V Red
7 IDX0 I+ Maroon
8 /IDX0 I- Tan

Differential Output Connector

Three differential outputs are used - one for each x, y, and z

Pin Signal Function Color
1 GND N/C
2 GND N/C
3 TX0A TXA+ White
4 /TX0A TXA- Green
5 TX0B N/C
6 /TX0B N/C
7 +5V N/C
8 +5V N/C

HAL Channel assignments

Axis Encoder ch PWM ch Notes
X linear encoder.00 Joint position feedback
Y linear encoder.01 Joint position feedback
Z linear encoder.02 Joint position feedback
X motor encoder.03 Velocity/damping feedback
Y motor encoder.04 Velocity/damping feedback
Z motor (none) No dual loop on Z
X drive pwmgen.00 Differential PWM out
Y drive pwmgen.02 Differential PWM out
Z drive pwmgen.04 Differential PWM out

Servo Drive Config

PWM

  • Carrier: 15.5 kHz (hm2_5i24.0.pwmgen.pwm_frequency 15500)
  • output-type 1 (PWM + Direction pins)
  • offset-mode 1 → locked anti-phase / bipolar single-signal: duty cycle directly encodes signed command
  • scale = OUTPUT_SCALE: X = +1, Y = -1, Z = -1 (sign flips drive polarity to match wiring)
  • Duty cycle = (value/scale + 1) / 2
Commanded value Duty cycle Meaning
-1.0 0 % full reverse
-0.5 25 % half reverse
0.0 50 % stop
+0.5 75 % half forward
+1.0 100 % full forward

When the enable line is deasserted the pwmgen output is forced off (not 50%), so the amp sees a distinct disabled state vs. "commanded zero". You can hear the drives hum/whine at the 50% state.

WARNING: ENABLING THE DRIVE WITH THE PWM DISCONNECTED WILL SHOW AS A 0% DUTY CYCLE - CAUSING THE DRIVE TO RUN FULL REVERSE!

Enable

Enable lines are switched by 7i37TA isolated MOSFET outputs (OBITn+/OBITn-). Per the 7i37 manual, a low FPGA pin turns the MOSFET on. HAL sets invert_output true on the enable GPIOs, so HAL enable=TRUE → FPGA-low → MOSFET on → contact closed.

HAL enable FPGA pin MOSFET Contact Drive
TRUE LOW ON made enabled
FALSE HIGH OFF broken disabled

Fail-safe: cable cut, 5 V loss, or hm2 unconfigured all leave the MOSFET off → contact open → drive disabled.