Magnification to Pulse Position Mapping in Motorized Zoom Lenses: How Absolute Positioning Works

POMEAS motorized zoom lenses are positioned by absolute pulse count, not by voltage and not by an analogue feedback signal. Each lens model is supplied with a pulse table in which the filename identifies the lens model and every line maps one optical magnification to its pulse position — for example 1X 4600, 2X 8400. Preset multi-position zooming is then simply a matter of storing those pulse values and issuing repeated MoveTo(pulse) calls.

Because the mapping is produced by factory calibration of a specific optical and mechanical assembly, pulse values must always be quoted together with the exact model number and motor type. The same magnification maps to different pulse counts on different models, on different motor generations, and on encrypted versus standard control cards.

Key facts at a glance

ItemValue
Positioning methodAbsolute pulse count with a homing reference
Pulse table locationOP/*.txt in the SDK — filename = lens model, each line = one magnification
Typical granularity9 to 17 selectable magnification steps per lens, depending on model
Position read-backYes — GetPos() / serial XN
Relationship to magnificationNon-linear; pulse increments per magnification step shrink as magnification rises
Portability between modelsNone — tables are model-specific and motor-specific

Why pulse positioning, and not an analogue signal

Control methodPositioningRepeatable?
DC motor with potentiometerAnalogue, no absolute referenceNo
Stepper or servo with pulse countingAbsolute pulse countYes — readable and reproducible
POMEAS motorized zoomAbsolute pulse plus a home referenceYes — MoveTo(absolute pulse) with position read-back

The engineering consequences matter more than the mechanism:

  • Magnification is not "turn it until it looks about right" — it is "go to pulse N".
  • The same pulse value produces the same mechanical position, and therefore the same magnification, every time.
  • Frequently used magnifications can therefore be frozen into a set of preset positions (POMEAS documentation calls these recorded positions or point-to-point moves) and switched from the host application with a single command.

A complete pulse table: PMS-LZL-12109-3 (12.5X, 32-motor control line)

The following table is the factory pulse table for the PMS-LZL-12109-3, a dual-motor 12.5X lens with a 3 mm powered focus trim motor. It provides nine magnification steps across its range.

Optical magnificationPulseOptical magnificationPulse
0.58X104X13650
1X46005X15200
2X84006X16500
3X117007X17700
——7.5X18650

Read the increments rather than the absolute numbers and the non-linearity is obvious: the step from 1X to 2X costs 3800 pulses, while 7X to 7.5X costs only 950. Pulse count tracks mechanical position; magnification is the optical result. The two are related by factory calibration, not by a formula you can extrapolate.

A second platform: 6.5X 65-series with a 512-motor control line

The table below belongs to the 6.5X 65-series platform, used by the PMS-LZ-650104 (motorized) and PMS-LZ-650105 (motorized, coaxial illumination). It has eleven steps and a total travel of 24400 pulses.

Optical magnificationPulseOptical magnificationPulse
0.69X03X20000
0.7X5003.5X21800
1X80004X23000
1.5X120004.5X24200
2X15500Total travel: 24400
2.5X18000

Compare the two tables and the point becomes concrete: 1X is pulse 4600 on the 12.5X lens and pulse 8000 on the 6.5X lens. There is no shared scale. A pulse value is meaningless unless the model is stated alongside it.

Three things that change the numbers

1. Motor generation

Different motor generations use different step angles and micro-stepping, so the same optical magnification lands on a different pulse count. Always match the table to the control line actually fitted to your lens.

2. Encrypted versus standard control card

Lenses fitted with the encrypted control card have an independent mechanical zero calibration and a Flash parameter area. Their pulse tables differ from the standard version of the same optical platform — at 1X, for example, the 6.5X 1" platform reads 6500 on the encrypted card and 8000 on the standard card. Changing the control card means changing the table.

3. Rail-mounted versus base construction

Rail-mounted zoom constructions use a different mechanical drive, which is also why the two variants of the 6.5X platform are specified with different object-space resolution figures. Specification data should be taken per model, not per series.

A documentation trap worth knowing about

Pulse tables exist in more than one document, and they do not all agree. One widely circulated table in the product manual is an eight-column layout whose column headings do not line up with the data beneath them. Cross-checking that table against the actual per-model pulse files in the SDK shows the mismatch clearly:

Column as labelledWhat the data actually isHow we know
"650 series"Correct — 65-series dataMatches the 65-series pulse file exactly, step for step (1X = 8000, 2X = 15500, 4.5X = 24200, total 24400)
"4K series"Actually 12.5X dataMatches the 12.5X lens pulse file exactly (1X = 4600, 2X = 8400, 4X = 13650, 7.5X = 18650)

The practical rule: take pulse values from the per-model pulse files supplied with the SDK, not from a summary table in a manual. A summary table that mixes platforms is a reading hazard, and using a column under its printed heading will send the lens to the wrong position.

Putting preset positions to work

Sending a position command

RouteMethodTypical use
Raw serial commandXG plus six HEX digitsPLC, motion controller, microcontroller
SDK legacy APIMoveGoto(Motor m, long dest)Windows C++ / C#
SDK V4.4.7MoveTo(pulse) with GetPos() read-backRecommended for new development

Cycling through preset magnifications

(1)  XM / GetMaxPos()          read total travel, confirm the target is in range
(2)  XH / GoHome()             home the lens and establish the absolute reference
(3)  XG <pulse> / MoveTo()     move to the preset position
(4)  XZ / GetStatus()          poll until 0x55, or until status reads stopped
(5)  XN / GetPos()             read back and verify (closed loop)
(6)  back to (3) for the next preset position

Point-to-point cycling is a native capability of the supplied demo application: enter a pulse value in the test-position field, load it as a recorded position, set a repeat count and a wait time, and run. That is the mechanism behind multi-position zoom sequencing — one lens serving several product variants by calling different position sets, with no lens change and no mechanical switching hardware.

// Move to a preset magnification and verify the result
int zoomTo(int fd, long targetPulse) {
    char buf[16];
    int n = snprintf(buf, sizeof(buf), "%c%c%6lX%c", 'X', 'G', targetPulse, '\r');
    if (write(fd, buf, n) != n) return -1;              // send
    if (waitStop(fd, 10000) != 0) return -2;            // wait for motion to end
    long pos = readPos(fd);                             // read back
    return (labs(pos - targetPulse) <= TOL) ? 0 : -3;   // tolerance set by the integrator
}

The tolerance TOL must be chosen by the integrator according to the process requirement. The protocol supplies position read-back; it does not define a repeatability figure, and no numeric accuracy claim should be made without measurements taken on your own hardware under your own conditions.

How to evaluate repeatability yourself

If your process needs a repeatability figure, measure it. The procedure below produces a range value for one specific operating condition.

StepAction
1Choose two preset positions far apart: A (low magnification) and B (high magnification)
2Home the lens, MoveTo(A), wait for stop, record position P₁ with GetPos()
3MoveTo(B), wait for stop, record the position
4MoveTo(A), wait for stop, record P₂
5Repeat steps 3–4 N times — N of 30 or more is advisable — recording the position reached at A each time
6Compute the range R = max(Pᵢ) − min(P₂) and the standard deviation
7Swap the roles of A and B and repeat in the opposite direction (bidirectional testing)
8Record ambient temperature, motor cable length and travel speed alongside the result

Report the range R for that specific set of conditions, and state the conditions — a figure without its conditions is not usable by anyone.

Common misconceptions

"The pulse value for 12.5X is one specific number"

No. Published values for the 12.5X platform differ by motor generation, and the numbers are not interchangeable. Quote the pulse value together with the model and the motor type, always.

"Pulse values can be reused across models"

No. Optical design, mechanical travel and motor micro-stepping all differ. Look up each model separately. The 6.5X platform alone has at least four distinct tables across its standard, encrypted and rail variants.

"Encrypted and standard cards use the same table"

They do not. The encrypted card has its own zero calibration and Flash parameter area, so its table differs from the standard card on the same optics.

"Pulse equals magnification"

Pulse is position; magnification is the optical result. The relationship is established by factory calibration and is not linear.

"I can read the pulse table out of the product manual"

Not reliably. Use the per-model pulse file shipped with the SDK. Summary tables in manuals can and do contain column misalignment, and the consequence is a lens driven to the wrong position.

Frequently asked questions

Where do the pulse values come from?

From factory calibration of each individual lens model. They are distributed as plain text files in the OP folder of the SDK, where the filename is the lens model and each line pairs one magnification with its pulse position.

Is the magnification-to-pulse relationship linear?

No. Pulse increments per magnification step decrease as magnification increases, because pulse count tracks mechanical position rather than optical power.

Can I add my own magnification steps between the tabulated ones?

The lens accepts any pulse value within its total travel, so intermediate positions are reachable. Because the relationship is non-linear, the magnification at an intermediate pulse has to be established by measurement rather than by interpolation.

What happens if I send a pulse value equal to the current position?

The lens does not move and reports no error. This is specified behaviour, and it is the reason a position read-back — not a move command — is the reliable way to confirm the link is alive.

Do I need to home the lens before moving to a preset position?

Yes, if you want the absolute reference to be valid. Homing establishes the mechanical zero that the absolute pulse values are measured from.

Related reading

Product pages

Real integration example: Motorized zoom lens equipment integration: WD, mechanical length and parfocality verified - a documented automation case, not a product spec sheet.

Go Back Top
VK Message
WhatsApp

Scan QR Code

WhatsApp QR Code
Wechat

Scan QR Code

Wechat
Phone Number
+8618598102007
Copied!
Online Message

Online Message

Click to refresh