System designHow-to

Multiple cameras share one strobe: let one camera fire it

Why later cameras return black frames on a shared strobe, which single camera should fire it, and the pulse and exposure times that keep every frame lit.

LumaSpec Vision11 min read Share on LinkedIn

On this page 8 sections
  1. 01Why do cameras in a synchronous job go black when they share one strobe?
  2. 02Which camera should fire the shared strobe?
  3. 03How long should the pulse and the exposure be?
  4. 04How do you set the strobe assignment in the job, step by step?
  5. 05How do you verify that every camera caught the pulse?
  6. 06When is one shared strobe the wrong answer?
  7. 07What do you need for a four-camera strobed cell?
  8. 08Questions

A four-camera synchronous job, one strobe light shared by all of them, and three of the four frames come back black: the triggers arrived, the light fired, and the images are still dark. The cause is trigger skew. The job activates the cameras one after another, milliseconds apart, so a pulse timed to the first camera lands outside the later cameras' exposure windows. This guide gives you the assignment rule — exactly one camera fires the shared strobe, placed second to last in the activation order — the two inequalities that size pulse width and exposure, a worked four-camera example with the arithmetic shown, and the verification test that proves every frame is lit.

Why do cameras in a synchronous job go black when they share one strobe?

Your later cameras return black frames because the job activates them one after another, typically about 1 ms per camera on a command-based GigE sequence, so a strobe pulse fired with the first camera is already over before the last camera opens its shutter.

A synchronous triggered job does not start every camera on the same edge. The host activates camera 1, then camera 2, and so on, and each activation costs a command round trip — about 0.5 to 1 ms on a switched GigE network. In a four-camera job, camera 4 opens its shutter roughly 3 ms after camera 1. If camera 1 owns the strobe and fires a 1 ms pulse at its own trigger, that pulse is gone before camera 4 integrates a single row. Camera 4 then records ambient only, and in an enclosed cell that means a black frame.

The failure has two grades. A fully missed pulse gives black images; a partially missed pulse gives dim ones that pass at set-up and fail when ambient shifts. Both come from the same geometry, and both are fixed the same way: put the pulse where every exposure window can see it.

That is a different problem from one camera whose strobe and exposure disagree, which Strobe light on but camera image is black: fix the timing covers. Here every camera is timed correctly against its own trigger; the shared light sits in the wrong place.

Which camera should fire the shared strobe?

Give the strobe to exactly one camera in the group and place it second to last in the activation order: camera 1 in a two-camera job, camera 2 in a three-camera job, camera 3 in a four-camera job, and so on.

One requirement generates the whole rule: the pulse must start after every camera has begun to expose, and end before the first camera's exposure closes. A camera late in the sequence fires the pulse when nearly the whole group is already armed, which is why synchronous job set-ups use the second-to-last slot — only one activation remains to cover, and a pulse of a few milliseconds covers it easily.

Cameras in the job Camera that owns the strobe Strobe setting on the others
2 Camera 1 off
3 Camera 2 off
4 Camera 3 off
6 Camera 5 off

Never assign the strobe to two cameras at once. The second pulse doubles the light's duty cycle, heats the LED and shifts brightness between runs, and the configuration breaks silently when someone adds a camera. One light, one owner. If each camera has its own light, each light gets its own owner — the rule is per light, not per job.

How long should the pulse and the exposure be?

Size the pulse to outlast the time from the owning camera's activation to the last camera's first exposure, about 1 ms per camera still waiting, and size every exposure to cover the pulse plus the activation skew with a 2 ms margin.

Work with five numbers. Let t_act be the activation interval between cameras in ms — measure it, because command-based jobs run near 1 ms and hardware fan-out near 0.1 ms. Let N be the camera count, t_own the owning camera's activation time, P the strobe pulse width in ms, E the exposure time in ms, and margin a safety you add by hand — 2 ms unless your measured jitter says otherwise.

t_own = (N − 2) × t_act activation time of the owning camera P ≥ t_act + margin pulse still on when the last camera starts E ≥ t_own + P + margin first camera still exposing when the pulse ends

Worked example, four cameras at 1 ms activation, strobe owned by camera 3:

  • t_own = (4 − 2) × 1 ms = 2 ms
  • P ≥ 1 ms + 2 ms = 3 ms, set P = 4 ms so the last camera catches most of the pulse
  • E ≥ 2 ms + 4 ms + 2 ms = 8 ms, set 8 ms on all four cameras
  • Top frame rate at that exposure: 1000 ms ÷ 8 ms = 125 fps
Camera Activates at Exposure window Pulse (2–6 ms) coverage
1 0 ms 0–8 ms full
2 1 ms 1–9 ms full
3 (owns strobe) 2 ms 2–10 ms full
4 3 ms 3–11 ms 3–6 ms, 75% of the pulse

Camera 4 meets the pulse 1 ms into its 4 ms width and catches 3 of the 4 ms, about 25% dimmer than the others — close enough for most per-camera thresholds. If matched brightness matters, assign the strobe to camera 4 instead: the pulse then runs from 3 to 7 ms, every window contains it in full, and E ≥ 3 ms + 4 ms + 2 ms = 9 ms, so set 10 ms.

The pulse is also your motion budget. A part moving at 50 mm/s smears 50 mm/s × 4 ms = 0.2 mm during a 4 ms pulse; if that exceeds your allowed blur, shorten the pulse and pay for it in light. The trade-offs are set out in How strobe pulse width freezes motion blur in machine vision and Strobe machine vision light: overdrive, duty cycle and timing.

How do you set the strobe assignment in the job, step by step?

Set the chain up in six steps: fix the activation order, measure the skew, give the strobe to the second-to-last camera only, wire its output to the controller trigger input, set pulse width and exposure from the formulas, then log twenty cycles.

  1. Number the cameras in activation order. Camera 1 through camera N is the order the job activates them — the sequence in your configuration, not the physical layout, decides the timing.
  2. Measure the skew. Run the job twenty times and compare each camera's frame-start timestamp against the master trigger, or scope the trigger line and one camera's exposure output. Command-based GigE jobs typically show about 1 ms per camera; a hardware fan-out shows under 0.1 ms. Use your measured number in the formulas, not the typical one.
  3. Assign the strobe once. Give it to camera N − 1 — camera 1 in a two-camera job, camera 2 in a three-camera job, camera 3 in a four-camera job — and set the strobe assignment to none on every other camera. If your software fires the light from the controller directly, apply the same position rule: trigger the light after the last camera is armed.
  4. Wire the pulse path. Run the owning camera's strobe or opto-isolated output to the trigger input of the light controller channel that drives the shared light, then set the pulse width on the controller — 4 ms in the worked example.
  5. Set the exposures. Apply E ≥ t_own + P + margin on every camera — 8 ms in the worked example — keeping the same value everywhere as the starting point.
  6. Log twenty cycles with parts in view and verify as in the next section.

How do you verify that every camera caught the pulse?

Capture at least twenty cycles and read the mean gray level of every frame from every camera: a mean near the black level means that camera missed the pulse, and which camera is dark tells you directly which timing number to change.

Match the symptom to the fix:

Symptom in the logs Likely cause Fix
Last camera dark, others bright Pulse ends before its exposure starts Lengthen P by at least the remaining activation gap, or move the assignment to the last camera
First camera dark, others bright Pulse fires after its exposure has closed Raise E to t_own + P + margin
All cameras dark, every cycle No owner assigned, or the controller never triggers Check that exactly one camera owns the strobe and that its output reaches the controller trigger input
One camera dark at random That camera starts late on some cycles Check its trigger chain and network load; incomplete frames under a shared trigger have their own causes

For the last row, Multiple GigE cameras, same trigger: why frames arrive incomplete covers the trigger-side causes. If only the first cycle after power-up is dark, that is usually exposure settling rather than strobe placement — First camera frame dark: exposure settling or light timing? walks through it.

When is one shared strobe the wrong answer?

Keep the single shared strobe while all cameras need the same light at the same instant; split to one light per camera, each with its own single owner, when the views need different illumination, and sequence lights when one camera must capture several looks.

Three situations break the shared-light assumption. Different geometry per view: a bright-field and a dark-field camera on the same part want different lights, so give each light its own owner and treat them as independent strobes. Several looks per camera: multispectral or multi-angle capture fires two or more pulses per cycle, which Multi wavelength light: sequence colours to get more from one camera covers; each pulse still needs exactly one timing owner. Ambient too strong to beat: if the cell cannot be enclosed, control the ambient instead of overpowering it — Ambient light variation in pick and place vision: control it shows the levers. Strobing remains gentler on the LED than continuous running, as LED lifetime L70: why strobe mode makes lights last longer quantifies, but keep the duty cycle within the controller's rating.

What do you need for a four-camera strobed cell?

A four-camera cell needs a strobe-capable controller with at least one free channel, global shutter cameras when anything moves, and a buffered fan-out that delivers the job trigger to all four camera inputs without a long daisy chain.

One channel drives the shared light and the rest stay spare. The LS-CTL-0070 is a 4-channel, 200 W digital control box with strobe output and RS-232 set-up — the shared strobe of this example plus room for a second light or a spare.

Light controllersDigital control box, 4 ch, 200 W, RS232 (LS-CTL-0070)LS-CTL-0070
Output
Constant voltage 24 V
Channels
4 channels
Control
Digital
Feature
Strobe
$549.00View partBuild a system with it

Shutter type decides the camera choice: a rolling shutter scans the frame, so a short pulse lights only the rows being read out, while a global shutter exposes every row at once. The MV-CU020-90GC is a 2.5 MP global shutter GigE camera with a C-mount.

Area scan camerasHikrobot MV-CU020-90GC 2.5 MP Area Scan Camera, GigE, GMAX4002, ColorMV-CU020-90GC
Sensor format
1/1.7"
Lens mount
C-mount
Interface
GigE
Resolution
Up to 3 MP
$309.00View partBuild a system with it

Two-camera cells with a large light can run from the LS-CTL-0264, a 2-channel, 400 W high power digital controller with a network option; the strobe still goes to the first camera alone, exactly as the table above shows.

Light controllersHigh power digital controller (LS-CTL-S53, network option), 2 ch, 400 W (LS-CTL-0264)LS-CTL-0264
Channels
2 channels
Control
Digital
Feature
High power
Output
Constant voltage 24 V
$769.00View partBuild a system with it

Distribute the job trigger with a buffered fan-out rather than chaining it through the cameras — the patterns in Multi camera exposure synchronization with a shared trigger apply to the trigger side of exactly this set-up. To size channels and power for your own light, start the light controller configurator or browse strobe-capable controllers in the light controller finder; the area scan camera finder filters by shutter, interface and resolution when the cameras need picking too. More capture-timing patterns sit on the systems topic page.

Questions

Does cable length between the owning camera's output and the controller matter?

For millisecond pulses, no. A line carrying a 4 ms pulse tolerates tens of metres of shielded cable, because signal propagation is nanoseconds per metre and adds nothing measurable to the timing. Keep the cable shielded and away from motor power lines; noise coupling onto the pulse edges is the real risk, not delay.

Does the rule change if a PLC or the controller's own logic fires the light?

No. The requirement is identical: the pulse must start after the last camera begins to expose and end before the first camera's exposure closes. Fire the light from an output timed after the final activation; assigning the second-to-last camera is one way to produce that timing, not the only one.

Why not give every camera a long exposure and let the first camera fire the strobe?

A longer exposure extends a window's end, not its start. The last camera has not begun exposing when an early pulse fires, so no exposure setting can make it catch that pulse. The owner has to sit late in the sequence, and the pulse has to outlast the remaining activation time.

How short can the strobe pulse be before brightness suffers?

Image brightness scales with pulse energy, so halving the pulse halves the light unless the drive current rises. Controllers with an overdrive mode exchange short high-current pulses for duty-cycle limits, which makes pulses of tens of microseconds practical. Check peak current and maximum duty rating before shortening below about 100 µs.

Do all cameras in the job need the same exposure time?

No. Each exposure window only has to contain the pulse, so exposures may differ per camera. Start with one value everywhere, prove the pulse timing, then tune each camera from its own histogram for its viewing angle, keeping the earliest-activating camera at or above the sizing formula.