Encoder & System Parameters
CPR = number of physical line pairs on the disc. Also called LPR or lines/rev.
×4 is standard for servo/PLC applications. Uses A and B channels.
Speed & Timer
Maximum motor speed at which encoder must still count correctly.
RP2350 = 150 MHz; Arduino Mega = 16 MHz; STM32F4 = 84–168 MHz.
Linear Axis (optional)
Leave at 0 if this is a pure rotary application.
Enter 5 for 5:1 reduction. Enter 1 for direct drive.
Results
PPR (Pulses per Revolution)
—
counts per revolution
Max Count Frequency
—
kHz at max RPM
Angular Resolution
—
arc-minutes per count
Linear Resolution
—
µm per count
Velocity Resolution
—
mm/min per count/s
Min Measurable Speed
—
RPM at 1 count/sec
Timer / Counter Requirements
Minimum timer counter resolution to correctly capture all encoder edges at maximum RPM.
Min Counter Depth
—
bits (for 10× oversampling)
Min Sampling Rate
—
× count frequency
Counts per Nyquist Period
—
timer ticks per edge
Common Encoder Specifications
| Encoder / Application | CPR | ×4 PPR | Max freq (3000 RPM) | Notes |
|---|---|---|---|---|
| Generic stepper shaft encoder | 100 | 400 | 20 kHz | Basic positioning feedback |
| Omron E6B2 (standard) | 360 | 1,440 | 72 kHz | Popular incremental encoder |
| T&C DC Servo Drive default | 1,250 | 5,000 | 250 kHz | 5mm screw → 1µm resolution |
| Heidenhain ERN 1020 | 2,048 | 8,192 | 410 kHz | High-res industrial encoder |
| Renishaw RESOLUTE (abs) | — | 26-bit | Serial protocol | Absolute; BiSS-C / SSI |
| Dynapar HS35 (1000 CPR) | 1,000 | 4,000 | 200 kHz | Industrial duty cycle encoder |
MCU Hardware Encoder Counter Limits
| MCU / Platform | Hardware Encoder? | Max Count Freq | Notes |
|---|---|---|---|
| RP2350 (Pico 2) | Yes — PIO | ~62 MHz | PIO state machine; effectively limited by clock/4 |
| STM32F4 (TIM1/TIM2) | Yes — HW TIM | 168 MHz ÷ 2 | TIM in encoder mode, 32-bit counter |
| STM32G4 | Yes — HW TIM | 170 MHz ÷ 2 | Also supports LPTIM for slow speeds |
| Arduino Mega (ATmega2560) | No — software ISR | ~25 kHz | ISR latency limits; use external QDEC chip for fast axes |
| ESP32 | Yes — PCNT | 40 MHz | PCNT unit; 16-bit signed counter with filter |
| ATSAM3X8E (Arduino Due) | Yes — TC in QDEC | 84 MHz ÷ 2 | Native quadrature decode in timer/counter |