Cameras & sensorsTroubleshooting

Maximum frame rate on a hardware trigger: exposure plus readout time

Your triggered camera tops out below its rated frame rate because every frame costs exposure plus readout. Work the cycle arithmetic and pick the fix.

LumaSpec Vision10 min read Share on LinkedIn

On this page 9 sections
  1. 01The cycle arithmetic: exposure plus readout
  2. 02Worked example: a 0.1 ms exposure still misses 60 fps
  3. 03Likely causes, most probable first
  4. 04What each fix buys
  5. 05Size the sensor to the rate, not the other way round
  6. 06Bench tests before you rewire anything
  7. 07When the usual answer is wrong
  8. 08The decision, case by case
  9. 09Questions

You pulse the trigger line at 60 Hz and the camera delivers barely 37 frames per second. Nothing is loose: in hardware trigger mode a frame occupies the camera for its whole exposure plus a full sensor readout, and pulses that land inside that window are dropped. This guide gives you the cycle arithmetic, a worked example that shows why even a 0.1 ms exposure cannot reach 60 fps on a 16.7 ms sensor, the likely causes ranked by how often they turn up, and a bench test and a fix for each. It is written for anyone wiring a trigger to an area scan camera or a board-level camera.

The cycle arithmetic: exposure plus readout

In free-run, a global shutter camera can expose the next frame while the current one is still streaming off the sensor, so the rated frame rate describes readout speed alone. Hardware trigger mode usually serializes the work: the pulse starts the exposure, the exposure completes, the full frame is read out, and only then does the camera arm itself for the next pulse. Industrial camera documentation is explicit that a triggered frame's maximum rate comes from the sensor's readout time plus the configured exposure.

f_max(triggered) = 1 / (t_exposure + t_readout)

Both times must use the same unit. Measure the readout on your own unit: run free-run at the shortest exposure the camera allows, read the sustained frame rate, and compute 1000 divided by that rate to get milliseconds. Four limits can cap a capture chain — exposure, readout, link bandwidth and host processing — and the lowest one decides. The formula covers the first two; causes 5 and 6 below cover the rest. The free-running side of the same math is walked in camera hardware trigger frame rate with external pulses.

Worked example: a 0.1 ms exposure still misses 60 fps

Take a sensor rated 60 fps at full frame and trigger it from a pulse generator.

  • Rated rate 60 fps, so readout ≈ 1000 / 60 = 16.7 ms.
  • Exposure 10 ms: cycle = 10 + 16.7 = 26.7 ms, so ceiling = 1000 / 26.7 ≈ 37.5 fps.
  • Exposure 0.1 ms: cycle = 0.1 + 16.7 = 16.8 ms, so ceiling = 1000 / 16.8 ≈ 59.5 fps.

A true 60 fps with a 0.1 ms exposure would need a readout of 1000 / 60 − 0.1 = 16.57 ms. The sensor's 16.7 ms misses that by about 0.1 ms, and nothing on the trigger line recovers it. That is the signature of a readout-limited triggered camera: the measured ceiling sits just under the free-run rating no matter how short the exposure gets. The fix belongs to the sensor or the readout width, not to the pulse source.

Likely causes, most probable first

Work down the list; each cause carries its test and its fix.

  1. Exposure larger than the cycle budget. The camera is healthy; the arithmetic caps it. Test: read the exposure setting and compare it with 1000 / f_target − t_readout. At a 16.7 ms readout and a 60 fps target the budget is zero, so any exposure overruns. Fix: cut exposure and raise light output — the lights finder sorts machine vision lights by wavelength and form factor — and cap auto exposure so it cannot creep back (cap the maximum auto exposure time).
  2. Width-controlled exposure mode. Some sensors take exposure straight from the trigger pulse width, so a 5 ms pulse is a 5 ms exposure that eats the budget. Test: switch to a fixed timed exposure and rerun the train (why trigger pulse width sets your camera exposure time).
  3. Pulses faster than the cycle. Snapshot-style triggering accepts one pulse per cycle and discards the rest, so a clean 60 Hz train yields 37.5 fps against the 26.7 ms cycle above. Test: count acquired frames against a known pulse count. Fix: pace the train at 80-90 percent of the computed ceiling, or enable an overlap trigger mode if the camera documents one; one frame per pulse with no follow-up usually points at the trigger wiring or level, which is covered in camera GPIO wiring: prevent damage and triage power faults. If a PLC generates the pulses, its scan time bounds how evenly they can be spaced — the PLC scan time and maximum scan rate guidelines put numbers on that limit.
  4. Readout too long at full frame. The sensor itself cannot meet the target. Test: stream free-run at minimal exposure; if the sustained rate already misses the target, no trigger setting saves it. Fix: shrink the ROI height, or apply binning or subsampling where the sensor supports it; binning changes readout in its own way (4x4 binning vs 2x2: sensor readout decides your frame rate). Measure the ROI gain rather than assuming it — a few trigger implementations keep full-frame timing regardless of ROI size.
  5. The link cannot carry the frames. Data rate = width × height × bytes per pixel × frame rate. A 4000 × 3000 8-bit frame is 12 MB; at 30 fps that is 360 MB/s, far past GigE's roughly 118 MB/s payload ceiling (1000 Mbit/s less protocol overhead) and into USB3 territory at roughly 350-400 MB/s. Test: read dropped-frame and packet-underrun counters; on GigE the shortfall grows with exposure (why your GigE camera frame rate drops at longer exposure times). Fix: 8-bit pixel format, smaller ROI, or a faster link, with the frame buffer absorbing short bursts (camera burst capture faster than link bandwidth).
  6. Processing slower than acquisition. Frames queue behind the algorithm and the buffer overflows downstream of a perfectly timed camera. Test: time the inspection pipeline per frame and compare it with the frame interval (acquisition faster than processing: fix the frame rate gap).

What each fix buys

  • Exposure: 10 ms to 2 ms against the 16.7 ms readout lifts the ceiling from 37.5 to 1000 / 18.7 ≈ 53.5 fps. Near-zero exposure approaches 1000 / 16.7 ≈ 60 fps and never crosses it.
  • Readout: halving the row count halves the readout on most CMOS sensors. The 16.7 ms sensor cut to about 8.3 ms leaves 1000 / 9.3 ≈ 107 fps with a 1 ms exposure — provided the trigger mode times the cycle from the ROI.
  • Link: the shop's own pair shows the lever on identical pixels. The LS-CMR-0053 runs a 12 MP rolling shutter sensor on a 1/1.7" format over GigE at 9 fps. The LS-CMR-0166 moves the same 12 MP sensor onto USB3 and reaches 30 fps. Identical pixels, one third of the cycle: 111 ms versus 33 ms. When readout dominates, the interface is the fix.

Both cameras print their full-frame rates:

Specification LS-CMR-0053 LS-CMR-0166 LS-BCM-0003
Resolution 4000 px x 3000 px 4000 × 3000 (12MP) 2048 × 1536 (3MP)
Pixel size 1.85 μm x 1.85 μm 1.85 μm 3.45 μm
Max. frame rate 9 fps 30 fps 120 fps
Sensor make Sony – Sony
Sensor model IMX 226 Sony IMX226 Sony IMX252
Shutter Rolling Shutter rolling shutter Global
Sensor size 1/1.7" 1/1.7" 1/1.8"
Sensor type CMOS – CMOS
Dynamic range 60.0 dB – >70.0 dB
Data interface GigE USB 3.0 USB3.0
Pixel bit depth 8 / 10 / 12 bits 10-bit 10-bit
Trigger mode ● Soft Trigger; ● Hardware Trigger; ● Free Run – ● Soft Trigger ● Hardware Trigger ● Free Run
Price $560.00 $560.00 $690.00

Values as printed in each product's data sheet; open a part for its drawing and full specifications.

Size the sensor to the rate, not the other way round

t_readout ≤ 1000 / f_target − t_exposure

Worked case: the target is 120 fps triggered with a 2 ms exposure. Budget readout = 1000 / 120 − 2 = 8.33 − 2 = 6.33 ms. A sensor whose free-run tops out at 120 fps carries an 8.3 ms cycle, so with the 2 ms exposure its triggered ceiling is 1000 / 10.3 ≈ 97 fps — short of target. Meeting it takes a sensor rated near 1000 / 6.33 ≈ 158 fps at full frame, or an ROI that reads out in 6.33 ms, or a sub-millisecond exposure backed by strobing.

For compact builds, one USB3 board-level camera pairs a global shutter with a 120 fps full-frame rate:

Board-level cameras3.1 MP USB3 board-level camera, IMX252, 1/1.8" global shutter, 120 fps (LS-BCM-0003)LS-BCM-0003
Sensor format
1/1.8"
Lens mount
C-mount
Interface
USB3
Resolution
5 MP
$690.00View partBuild a system with it

The cycle budget there is 1000 / 120 = 8.3 ms, so a 2 ms exposure lands the triggered ceiling near 97 fps and a 0.5 ms exposure near 1000 / 8.8 ≈ 114 fps. Treat the rated free-run rate as the triggered ceiling minus exposure and the bench holds no surprises.

Resolution and rate together: the MV-CH120-11UC combines a 12 MP global shutter sensor with a USB3 link in a high-speed version:

Area scan camerasHikrobot MV-CH120-11UC 12 MP Area Scan Camera, USB3, IMX304, High-speed version, ColorMV-CH120-11UC
Sensor format
1.1"
Lens mount
C-mount
Interface
USB3
Resolution
12 MP
$2,339.00 · quotedView and quoteBuild a system with it

USB3 keeps that pixel stream clear of the GigE bottleneck from cause 5, which matters once a trimmed ROI makes readout fast enough for the link to become the next binding limit.

Bench tests before you rewire anything

  1. Free-run at the shortest exposure. Record the sustained rate; 1000 divided by it is the readout time in milliseconds.
  2. Trigger at 1 Hz. One frame per pulse confirms polarity, level and wiring.
  3. Step the trigger rate up. Raise it in 10 fps steps and find where acquired frames stop tracking pulses. Implied readout = 1000 / f_measured − t_exposure.
  4. Compare with step 1. Agreement means physics; an implied readout far longer than measured means dropped pulses or a mis-set trigger mode.
  5. Read the counters. Dropped-frame and underrun counters separate link loss from trigger loss.

Prevention is one habit: fix the exposure, cap auto exposure, and write trigger + exposure + readout into the design budget next to payload and optics.

When the usual answer is wrong

  • Overlap modes exist. Some cameras let the next exposure overlap the tail of the previous readout even while triggered, which pushes the ceiling toward the free-run rating. The capability appears in camera documentation as an overlapped-exposure or overlap trigger description; if your model lists none, plan on serialized timing.
  • USB2 links fail first. A USB2 link moves only about 35-40 MB/s, so small board cameras on USB2 can be link-limited before the sensor objects; measure before blaming the sensor.
  • Fixed trigger timing. Where trigger mode holds full-frame timing regardless of ROI, the bench measurement in the section above decides — not the assumption.

The decision, case by case

  • Target below half the free-run rate: solvable in settings — timed exposure inside the budget, auto exposure capped, pulses paced at 80-90 percent of the ceiling.
  • Target within 15 percent of free-run: near-zero exposure with a strobed light; then accept the readout remainder or trim the ROI if the trigger mode honors it.
  • Target above the full-frame free-run rate: a faster sensor or a faster link, sized by the 6.33 ms budget formula — the 9 fps-to-30 fps jump on identical 12 MP pixels shows the size of that lever.

The camera finder and the camera configurator both filter by shutter type and interface against your rate budget. The cameras topic page collects the rest of the timing fixes, and free expert support comes with every order if the numbers argue against the part you had in mind.

Questions

How do I measure a sensor's readout time if the data sheet only lists frame rate?

Stream the camera in free-run at the shortest exposure it allows, read the sustained frame rate, and divide 1000 by it to get readout time in milliseconds. A camera holding 120 fps at minimal exposure is reading out in about 8.3 ms. Repeat at your intended ROI: the ROI rate gives the ROI readout time you can plug straight into 1/(exposure + readout).

Why does my triggered camera skip pulses even when the wiring is clean?

Snapshot-style triggering accepts one pulse per complete cycle and drops pulses that arrive during exposure and readout, so a 60 Hz train yields only as many frames as the cycle allows. A few cameras buffer one pending pulse; most drop all of them. Pace the train at 80-90 percent of 1/(exposure + readout), or use an overlap trigger mode if your camera documents one, and count frames against pulses to confirm.

What exposure time leaves room for 120 fps triggered capture?

The whole cycle must fit inside 1000/120 = 8.33 ms. With a 5 ms readout, exposure can run up to 3.3 ms; with an 8.3 ms cycle typical of a 120 fps full-frame sensor, almost nothing is left, so realistic plans trim the ROI, apply binning, or pick a faster sensor. Compute t_exposure ≤ 1000/120 − t_readout before ordering hardware.

Does shortening exposure always raise the triggered frame rate?

Only while exposure is a meaningful share of the cycle. On a 16.7 ms readout, cutting exposure from 10 ms to 2 ms lifts the ceiling from 37.5 to 53.5 fps, but cutting from 1 ms to 0.1 ms moves it only from 56.5 to 59.5 fps. Once exposure is negligible, only a shorter readout — smaller ROI, faster link or faster sensor — raises the rate.

Does hardware triggering behave differently on a rolling shutter sensor?

The cycle arithmetic is identical — exposure plus readout — but a rolling shutter sensor exposes row by row, so a triggered full frame is captured line by line and fast-moving parts distort unless motion freezes within the row-scan time. Divide: a 16.7 ms full-frame scan over 480 rows (illustrative) is about 35 µs per row, and that row time is your per-row motion-freeze budget.