Omron E6A2-CW3C Rotary Encoder: Wiring, Quadrature, and Signal Verification
The Omron E6A2-CW3C is a compact 25 mm diameter incremental rotary encoder intended for low-speed machine feedback, conveyor indexing, and discrete position sensing on industrial controls. This reference consolidates the official Omron E6A2-C lineup data, the E6A2-C datasheet, and field experience capturing the encoder's quadrature output on a Siglent SDS1000CML oscilloscope. The goal is to give controls engineers a single document for wiring, decoding, and verifying the encoder so that the integration into a PLC high-speed counter (HSC) or microcontroller quadrature input is predictable the first time.
1. Series Overview and Model Code
The E6A2-C is a 25 mm incremental rotary encoder in Omron's compact encoder family. The suffix code identifies mechanical and electrical options:
| Position | Code | Meaning |
|---|---|---|
| 1 | CW | Shaft style: CW = solid shaft, standard |
| 2 | 3 | Output configuration: 3 = voltage output (push-pull, NPN open-collector variants available) |
| 3 | C | Connection: C = pre-wired cable exit (radial) |
| 4 | 100P/R | Resolution (pulses per revolution) selected by suffix or example code |
| 5 | 0.5M | Cable length: 0.5 m pigtail standard |
The example call-out in the Omron lineup page is E6A2-CW3C 100P/R 0.5M, which resolves to a 100 pulse-per-revolution (PPR) encoder with a 0.5 m cable. Common PPR options in the family include 10, 20, 60, 100, 200, 300, 360, 400, 500, 600, 720, 800, 1,000, 1,024, 1,200, 1,500, 1,800, and 2,000 P/R. The E6A2-CW3C you most often encounter in hobby and lab contexts is the 100 P/R build.
2. Electrical and Mechanical Specifications
The values below are reproduced and summarized from the official E6A2-C datasheet. Verify against the datasheet revision you have on hand; ratings are subject to change without notice.
| Parameter | Value | Notes |
|---|---|---|
| Supply voltage (Vcc) | 12 to 24 VDC ± 10% (ripple p-p ≤ 5%) | Some 5 V variants exist on the secondary market; confirm before substituting |
| Current consumption | 50 mA max | At 24 VDC |
| Output configuration | Voltage output (push-pull) | Capable of sourcing and sinking |
| Output logic | A and B in quadrature, 90° phase shift | Direction resolved by lead/lag of B relative to A |
| Resolution (CW3C example) | 100 P/R (400 counts/rev in 4x decode) | Counts are quadrature-decoded upstream |
| Maximum response frequency | 20 kHz (electrical) | Equals (RPM × PPR) / 60 |
| Maximum mechanical RPM | 5,000 min-1 | Derate above 3,000 RPM for service life |
| Shaft loading | Radial 10 N, thrust 5 N | Use a flexible coupling |
| Starting torque | 1 mN·m typical | Light finger-pressure rotation |
| Shaft diameter | 4 mm | Standard for 25 mm series |
| Protection class | IP50 | Dust-protected; no water/oil protection — install inside enclosure |
| Ambient temperature | −10 to +55 °C operating; −25 to +80 °C storage | Non-condensing |
| Vibration resistance | 10 to 500 Hz, 150 m/s² (approx. 15 g), 3 axes | Per Omron test method |
| Shock resistance | 500 m/s² (approx. 50 g), 3 axes, 3 times each | Per Omron test method |
| Cable | 4-conductor, oil-resistant PVC, 0.5 m pigtail | Brown/Blue/Black/White standard color code |
2.1 Deriving the Maximum RPM from Response Frequency
The maximum shaft speed is set by the electrical response frequency rather than by mechanical bearing limits. Use the relationship:
RPM_max = (F_max × 60) / PPR
For the E6A2-CW3C at 100 PPR with Fmax = 20 kHz:
RPM_max = (20,000 × 60) / 100 = 12,000 RPM
The mechanical bearing limit (5,000 RPM) is the binding constraint. Operate below 3,000 RPM for continuous duty and reserve 5,000 RPM for short transients only.
3. Wiring and Pinout
The pre-wired E6A2-CW3C pigtail uses a four-wire color code that is not the same as a typical quadrature cable you would build yourself. Verify with a multimeter before applying power.
| Wire color | Function | Typical termination |
|---|---|---|
| Brown | Vcc (12 to 24 VDC) | PLC 24 V supply or DIN-rail PSU; fuse at 0.5 A |
| Blue | GND (0 V) | Common ground tied to PLC and PSU |
| Black | Output A (phase) | PLC HSC input (e.g., D2 on Arduino, X0 on Mitsubishi FX, I0 on Allen-Bradley MicroLogix) |
| White | Output B (phase) | PLC HSC input B (e.g., D3 on Arduino, X1 on Mitsubishi FX) |
The encoder has no Z (index) channel on the 4-wire version. If your application needs a once-per-turn reference pulse, you must step up to an E6A2-C variant with the Z output or to a larger E6B2/E6C2 series encoder.
3.1 Pull-Down Considerations
The voltage-output (push-pull) driver in the E6A2-C actively drives both high and low, so external pull-ups or pull-downs are normally not required. However, in long-cable installations or where the input is wired to a high-impedance FET, install a 10 kΩ pull-down at the receiver to guarantee a defined low during power-up transitions and to suppress induced noise on the rising edge.
3.2 Cable Length and Shielding
The standard 0.5 m pigtail is intended for an enclosure-mounted installation where the encoder is wired directly to a nearby terminal block. If you must extend the run:
- Keep total cable length below 10 m to limit capacitance-induced edge rounding.
- Use shielded twisted pair (STP) with the shield bonded to ground at one end only (typically the PLC/PSU end).
- Avoid routing parallel to VFD output cables; cross at 90° when unavoidable.
- Twist the A/B pair at ≥ 5 turns per meter to maximize common-mode rejection.
4. Quadrature Theory for the CW3C
The CW3C's 100 P/R raw output becomes 400 counts per revolution after 4x quadrature decoding. The integer position after N counts is:
Position_counts = Σ (Direction_n) where Direction_n = +1 or -1
Mechanical degrees per count at 4x decode:
θ = 360° / (4 × PPR) = 360° / 400 = 0.9° per count
This resolution is adequate for conveyor indexing, fill-level cam timing, and similar non-precision applications. For closed-loop servo position control, expect the E6A2-C to be a feedback indicator, not a precision reference.
4.1 Quadrature Direction Logic
| A (black) | B (white) | Edge of A | Direction |
|---|---|---|---|
| 0 | 0 | rising | +1 if B = 0, −1 if B = 1 |
| 0 | 1 | rising | +1 if B = 0, −1 if B = 1 |
| 1 | 1 | falling | +1 if B = 1, −1 if B = 0 |
| 1 | 0 | falling | +1 if B = 1, −1 if B = 0 |
Rotating the shaft clockwise when viewed from the front face (the side with the encoder body label) causes A to lead B; counter-clockwise reverses the lead/lag relationship. Confirm the direction against your application's coordinate system before commissioning.
5. Signal Verification with an Oscilloscope
The most reliable way to confirm the encoder is alive and producing clean quadrature is to capture one full revolution on a two-channel scope. The original field capture was performed on a Siglent SDS1000CML scope, with the captured waveform saved as a native .DAV file. The proprietary Siglent .DAV format opens with the Siglent EasyScopeX utility, which requires the NI-VISA runtime (the full NI-VISA driver install is not necessary — the runtime package alone is sufficient).
5.1 Recommended Test Setup
- Power the encoder from a 24 VDC bench supply capable of at least 100 mA; current-limit at 0.2 A for protection.
- Connect Channel 1 scope probe to the Black wire (Output A); set the probe to 1x and the scope channel to 1x (match attenuation).
- Connect Channel 2 scope probe to the White wire (Output B); set the probe to 1x and the scope channel to 1x (match attenuation).
- Set the scope time base to 5 ms/div and trigger on Channel 1 rising edge at 6 V.
- Rotate the shaft slowly by hand at roughly 60 RPM; at 100 PPR this produces an A-period of 10 ms, easily captured on the 5 ms/div range.
- Save a screen capture plus a CSV export plus the native
.DAVfile for post-processing.
5.2 Expected Waveform
At 24 V supply, the high level should sit between 22 V and 24 V (Vcc minus output transistor saturation) and the low level should sit below 0.5 V. The A and B waveforms should be clean square waves with a 90° (electrical) phase offset and approximately 50% duty cycle.
5.3 The 0.5 V Channel Offset Pitfall
The original capture of the E6A2-CW3C showed Channel 2 sitting at about 0.5 V during the low portion of its cycle while Channel 1 sat cleanly at 0 V. Investigation traced the offset to Channel 2 having never been used before except for a probe compensation check; the attenuation setting on the scope was left at the default 10x while the physical probe was switched to 1x for the measurement. After aligning both the probe switch and the channel menu to 1x, the low portion of Channel 2 dropped to < 0.1 V, matching Channel 1.
Always verify on a known DC source (a 5 V rail from the bench supply, for instance) before trusting the encoder trace. A 5 V rail displayed as 50 V tells you the scope attenuation is set to 10x on a 1x probe — or vice versa.
6. Capturing a Full Revolution
To characterize the encoder for an application, capture at least one full revolution at the application's nominal RPM. The number of A pulses per CSV row should equal the PPR (100 for the CW3C). Confirm by counting rising edges on A over one mechanical revolution:
N_rising = PPR = 100 ± 0
If Nrising differs from PPR, suspect:
- Loose shaft coupling slipping (mechanical, not electrical).
- Trigger set too high, missing edges near the top of the pulse.
- Encoder resolution suffix is not what was ordered — verify the cable label and the box.
7. Integration with PLC High-Speed Counters
The CW3C drives directly into any 24 V sourcing HSC input. Typical wiring targets:
| Platform | HSC input terminal | Configuration register |
|---|---|---|
| Allen-Bradley MicroLogix 1400 | I0 (input 0, HSC0:A) | HSC mode 6 (quadrature 4x) |
| Allen-Bradley CompactLogix 5380 | Local 24 V high-speed input 0 | CIO tag, HSC instruction |
| Mitsubishi FX5U | X0 (phase A), X1 (phase B) | High-speed counter CH1 in 4x mode |
| Siemens S7-1200 | I0.0 (A), I0.1 (B) on SB1223 or onboard | CTRL_HSC, mode = quadrature 4x |
| Omron CP1E/CP1L | 0.00 (phase A), 0.01 (phase B) | PRV instruction with PRV2=0003 |
| Arduino Uno/Mega | D2 (INT0), D3 (INT1) | External interrupt on both edges, quadrature in ISR |
| ESP32 | GPIO 16, 17 | pcnt_unit_set_edge_action, 4x decode via PCNT |
7.1 Arduino Reference Sketch
// E6A2-CW3C 4x quadrature decode on Arduino Uno
// Wiring: Black -> D2 (INT0), White -> D3 (INT1)
volatile long counter = 0;
void isrA() {
bool a = digitalRead(2);
bool b = digitalRead(3);
// Direction: CW = A leads B
if (a == b) counter++; else counter--;
}
void isrB() {
bool a = digitalRead(2);
bool b = digitalRead(3);
if (a != b) counter++; else counter--;
}
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
attachInterrupt(0, isrA, CHANGE);
attachInterrupt(1, isrB, CHANGE);
Serial.begin(115200);
}
void loop() {
static long last = 0;
long c;
noInterrupts();
c = counter;
interrupts();
if (c != last) {
Serial.print("pos=");
Serial.println(c);
last = c;
}
delay(20);
}
7.2 Omron CP1L Structured Text Fragment
// 4x quadrature read into D0 using PRV2
// CIO 0.00 = A, CIO 0.01 = B, CIO 0.04 = Z (unused on CW3C)
LD P_On
PRV2 #0003 D0 // Pulse counter CH1, mode 3 = 4x quadrature
OUT D100 // Snapshot to D100 for HMI display
8. Troubleshooting Matrix
| Symptom | Likely cause | Corrective action |
|---|---|---|
| No output on either channel | Brown/Blue reversed; no supply; blown output driver | Verify 24 V across Brown-Blue with multimeter |
| One channel sits at ~0.5 V during the low portion | Scope probe attenuation mismatch | Match probe switch and channel menu to 1x or 10x |
| Output high stuck at supply voltage, no switching | Mechanical slip; coupling backed off; shaft key missing | Rotate shaft by hand and watch for pulse train |
| Counts drift when shaft is stationary | EMI on long cable; missing pull-down | Add 10 kΩ pull-down at receiver; shield one end |
| Direction inverted from expected | A/B wires swapped at PLC, or shaft view convention mismatch | Swap Black/White at PLC OR reverse expected direction flag |
| Counts per revolution wrong | PLC HSC not configured for 4x, or wrong PPR variant installed | Confirm HSC mode = quadrature 4x; verify part suffix |
| Missed pulses at high RPM | PLC HSC input filter active | Disable input filter on HSC inputs (e.g., S7-1200 input filter = none) |
| Counts accumulate when not rotating | Input noise pickup on long cable run | Twist pair, ground shield at one end, shorten cable |
| Shaft turns but counts jitter around a value | Bearings worn; mechanical play in coupling | Replace encoder; re-seat coupling |
| High-side voltage low (~20 V instead of 24 V) | Long cable + scope probe 10x measuring under supply | Verify supply at encoder terminals, not at PSU terminals |
9. Mechanical Installation Notes
Despite the encoder's small 25 mm body, the shaft is a 4 mm stub with light-duty bearings. Treat it gently:
- Use a flexible spider coupling (e.g., an Oldham or jaw coupling) to absorb parallel and angular misalignment up to 0.1 mm and 1° respectively.
- Never hammer the shaft to install a pulley or sprocket — press-fit only with a shaft-mounting tool or set screw on the driven member.
- Keep radial load below 10 N and thrust load below 5 N. Belt drives require a tensioner to keep belt pull below the radial limit.
- Allow 5 mm of axial float in the mating part; do not end-mount the encoder against a hard stop.
- Mount the body to a flat, machined surface using M3 screws through the two mounting holes; torque to 0.5 N·m.
10. Lifecycle and Spares
Omron rates the E6A2-C mechanical service life at the typical > 10,000 hours at maximum RPM, with derating extending life proportionally at lower speeds. For 24/7 industrial service:
- Spec the operating RPM at 60% of the mechanical limit (3,000 RPM continuous).
- Mount the encoder in a position accessible for replacement without disturbing the driven shaft.
- Keep a spare on the shelf; the pre-wired 0.5 m pigtail is a frequent stockout item and a 5-week lead time is not unusual for the 100 P/R build.
11. Frequently Asked Questions
What supply voltage does the Omron E6A2-CW3C require?
The E6A2-CW3C runs on 12 to 24 VDC ± 10% with ripple below 5% p-p. Some third-party 5 V variants exist; verify the marking on the encoder body or the datasheet that ships with the unit before substituting a 5 V supply.
How many counts per revolution does the 100 P/R CW3C produce?
The CW3C outputs 100 pulses per revolution on each of A and B. With 4x quadrature decoding in the PLC high-speed counter, you get 400 counts per revolution, or 0.9° mechanical per count.
Does the E6A2-CW3C have a Z (index) channel?
No. The 4-wire CW3C pigtail (Brown/Blue/Black/White) provides Vcc, GND, A, and B only. For a once-per-turn index, step up to a 5- or 6-wire E6A2-C variant or to the E6B2/E6C2 families.
Why does Channel 2 of my scope show ~0.5 V offset on the low portion of the waveform?
Most commonly because the probe's physical 1x/10x switch is set to 1x while the scope channel menu is still set to 10x (or vice versa). The scope then applies the wrong vertical scale factor and displays a phantom DC offset. Match the probe switch and the channel menu, then re-compensate the probe, and the offset disappears.
What is the maximum RPM for the 100 P/R CW3C?
The mechanical bearing limit is 5,000 RPM. The electrical response limit at 100 PPR is 12,000 RPM. For continuous duty, derate to 3,000 RPM; reserve 5,000 RPM for short transients only.
Can I extend the 0.5 m pigtail on the CW3C?
Yes, with shielded twisted pair, total length below 10 m, and the shield bonded to ground at one end only. Beyond 10 m, expect edge rounding from cable capacitance and consider a line-driver receiver or a differential-output encoder family.
Is the E6A2-CW3C rated for outdoor or washdown environments?
No. The datasheet explicitly states "No protection is provided against water or oil." The body is IP50 (dust-protected only). Install the encoder inside an enclosure with at least IP65 rating for any environment that exposes it to water, coolant, or oil mist.