123 Main Street, New York, NY 10001

Flicker Mitigation (IEEE 1789) for LED Drivers

← Back to: Lighting & LED Drivers

Flicker mitigation means keeping the LED light output stable by suppressing iLED(t) modulation—especially at low frequencies and during deep dimming—so the waveform stays in a safer “frequency vs modulation-depth” region. In practice, flicker is solved by measuring iLED(t) (or an optical proxy), finding the worst-case corner (VIN/temperature/dimming/transition), and fixing the smallest root cause in the command path, loop interaction, or boundary behavior.

What Flicker Mitigation Means (Engineering Definition)

Flicker mitigation is the engineering work of keeping LED light output modulation low across dimming and operating corners by controlling the underlying LED current modulation.

Engineering definition: Flicker is luminous output modulation driven by LED current modulation (iLED(t)). It can show up as low-frequency visible flicker, mid-frequency motion-related stroboscopic artifacts, or sampling-driven camera banding. The shared root is still the same measurable variable: current vs time.

Scope fence for this page

  • Covers: ripple-current sources, deep-dimming stability, loop interaction (outer/inner), and measurement/validation evidence.
  • Does not cover: detailed power-stage sizing equations (magnetics/capacitance math), protocol implementations (DALI/DMX/PLC/PoE), or a full EMC cookbook (only flicker-relevant coupling is referenced).

Evidence fields (the page-wide “coordinate system”)

Every claim of “flicker-free” should map back to a minimum evidence set. These fields make results repeatable and keep debugging deterministic.

  • iLED(t): waveform + average level + peak-to-peak ripple + any low-frequency envelope.
  • Vripple / bus ripple: input/bus ripple correlated to iLED(t) envelope (helps separate “energy path” vs “control injection”).
  • Dimming level: PWM duty / analog setpoint / hybrid mode flag at the same timestamp as the waveform capture.
  • Dimming command behavior: step size, update rate, filtering/ramping state (to catch command-induced modulation).
  • Fault & limit flags: OTP, OVP/UVP, short/open handling, hiccup/auto-retry, thermal derating states.
  • Corner tags: VIN min/nom/max, temperature, load condition (string voltage/headroom), and any mode transitions.
Measure iLED(t) Classify flicker type Correlate with command Track flags & corners
F1 — Flicker as LED current modulation in a control chain Block diagram from dimming command through control loops and power stage to LED current iLED(t), light output, and human/camera perception, highlighting modulation injection points. Dimming Command PWM / Analog / Hybrid Input Conditioning Filter · Ramp · De-jitter Control Loop(s) Reference Shaping Compensation Power Stage Energy path + switching iLED(t) Average + Ripple + Envelope modulation Light Output L(t) follows iLED(t) Human Camera Key idea: Remove flicker by reducing iLED modulation across dimming, disturbances, and mode transitions.

Figure text is intentionally minimal; the measurable variable is highlighted as iLED(t).

Flicker Taxonomy: Visible vs Stroboscopic vs Camera Banding

Before choosing metrics or fixes, first classify what type of flicker is being observed—each type fails in different corners and needs different evidence.

Classification rule: the same hardware can look “fine” under one observation method and fail under another. Use the taxonomy below to route testing toward the right signals: iLED(t) plus frequency content, with camera parameters used only to reproduce the symptom.

1) Visible Flicker (low-frequency envelope becomes perceptible)

  • Typical trigger: low-frequency modulation, especially at deep dimming where ripple becomes large relative to the average current.
  • What to capture: iLED(t) with enough time span to see the slow envelope + correlate with Vripple and dimming level.
  • Typical trap: checking only output voltage ripple and assuming “small V ripple” guarantees “no flicker” (it does not—current is the controlled quantity).

2) Stroboscopic Effect (motion-related artifacts from mid-band modulation)

  • Typical trigger: mid-frequency modulation interacting with eye motion or moving objects; perceived as “stepping” or “broken motion” rather than obvious blinking.
  • What to capture: iLED(t) with a spectrum view (conceptually: identify dominant components) + dimming command update behavior.
  • Typical trap: raising PWM frequency blindly without checking whether the modulation energy moved into a band that increases motion sensitivity or loop interaction.

3) Camera Banding (rolling-shutter sampling interacts with modulation)

  • Typical trigger: rolling shutter / exposure sampling aligns poorly with light modulation; different phones or settings can change stripe visibility dramatically.
  • What to capture: iLED(t) modulation frequency content + reproduce the artifact by varying camera frame rate/exposure (camera settings are supporting evidence, not the root cause).
  • Typical trap: treating banding as “camera-only” and skipping electrical measurements—banding is still explained by iLED(t) modulation.
Visible: envelope Stroboscopic: mid-band Camera: sampling Root: iLED(t)
F2 — Frequency-axis map of flicker types A frequency-axis band map separating low-frequency visible flicker, mid-band stroboscopic sensitivity, and camera banding driven by sampling interaction, highlighting which observer is most sensitive. Flicker taxonomy by modulation frequency band higher frequency lower frequency Visible Flicker Slow envelope Stroboscopic Motion sensitivity Camera Banding Sampling interaction Human most sensitive Motion reveals artifacts Camera most sensitive low mid high Rule: Classify first, then choose metrics and test corners; iLED(t) remains the root evidence for all types.

Bands are conceptual: the purpose is evidence routing, not hard-coded thresholds.

IEEE 1789 in Practice: What It Actually Constrains

IEEE 1789 is best used as a two-dimensional risk framework: flicker acceptability is constrained by the combination of modulation frequency and modulation depth—the goal is to keep measured LED current modulation in safer regions across corners.

Practical translation (no tables required): lower modulation frequencies generally demand much smaller modulation depth to avoid visible artifacts, while higher frequencies can tolerate more depth for human perception—but sampling (camera banding) may still remain sensitive. The framework encourages moving the operating point down (less depth) and/or right (higher frequency), while validating the result at worst corners.

The two control “knobs” to manage

  • Knob 1 — Modulation frequency: the dominant frequency component of the measured modulation (for example, a low-frequency envelope, a mid-band component from dimming updates, or a sampling-relevant component that triggers camera banding).
  • Knob 2 — Modulation depth: the modulation magnitude relative to the average current level (depth must be normalized to the mean, otherwise deep-dimming risk is underestimated).

Engineering actions that move the point into safer regions

  • Reduce depth at the source: suppress iLED(t) ripple/envelope so modulation stays small even when average current is low.
  • Avoid “moving energy into a new sensitive band”: a fix that improves visible flicker can still worsen camera banding if modulation is shifted into a sampling-relevant region.
  • Stabilize mode transitions: prevent slow-limit behaviors (thermal derating, protection retries, CV↔CC handover) from creating low-frequency envelopes.
  • Shape commands: ramp or filter dimming updates so command steps do not inject dominant modulation components into the loop.
  • Validate at corners: the point can drift with VIN, temperature, and headroom; safer-region claims must hold across the matrix.

Evidence to prove the “region shift”

Minimum evidence set: measure dominant frequency + modulation depth from iLED(t) (preferred) or an optical sensor signal, and tag the capture with dimming level, command behavior, fault/limit flags, and corner conditions.

F3 — Modulation depth vs frequency: a safer-region view A conceptual 2D map showing modulation depth versus modulation frequency, with a preferred safer region and higher-risk region, and arrows indicating how engineering actions shift the operating point. higher frequency lower frequency higher depth lower depth Higher risk low freq + high depth Preferred direction lower depth across corners A Low-f envelope B Mid-band C Sampling-sensitive reduce depth shift frequency Goal: Keep iLED modulation in safer regions across dimming levels and worst-case operating corners.

This figure is conceptual by design: it communicates actionable “direction” without hard-coded thresholds or copied tables.

Root Causes of Flicker: What Creates iLED Modulation

Treat flicker as a measurable modulation problem and debug it with a failure tree: each branch must map to two concrete measurements and a discriminator that separates energy-path ripple from control injection and sensing noise.

Failure-tree rule: each root-cause class below is defined by a distinct injection mechanism and a repeatable waveform/log fingerprint. The fastest path is to capture iLED(t) plus one correlated signal (bus ripple, command, flag/state, or sense noise), then classify which branch matches.

Six root-cause classes (each with “First 2 measurements”)

  • Input low-frequency ripple / insufficient hold-up: capture Vbus ripple + iLED(t) envelope and check correlation.
  • Current-loop bandwidth / compensation issues: capture iLED(t) step response + command step timing (ringing/overshoot indicates loop interaction).
  • Dimming injection (PWM too low / analog noise / hybrid switching glitch): capture dimming command + iLED(t) aligned in time.
  • Protection / limiting / thermal derating “slow actions”: capture limit/flag state + iLED(t) envelope near thresholds (breathing patterns).
  • Sensing-chain noise / ground bounce / reference drift: capture sense node noise + iLED(t) ripple to prove injection through measurement.
  • Multi-loop interaction (outer vs inner, CV↔CC crossing, startup/hiccup boundary): capture mode/state flag + iLED(t) envelope around transitions.

Symptom → evidence mapping (seed list for the field playbook)

The list below is intentionally framed as “two things to capture” so later chapters can reference the same evidence fields without scope creep.

  • Flicker only at deep dimming: (1) iLED(t) envelope at 1% / 0.1% (2) command update behavior (step/ramp/filter state).
  • Flicker appears when VIN changes: (1) Vbus ripple (2) iLED(t) envelope correlation.
  • Breathing near thermal limits: (1) derating/OTP flag (2) iLED(t) envelope periodicity.
  • Banding changes across phones/settings: (1) iLED(t) dominant components (2) camera setting used only to reproduce.
  • Step dimming causes oscillation: (1) command step timestamp (2) iLED(t) step response/ringing signature.
  • Random jitter or “sparkly” modulation: (1) sense node noise (2) iLED(t) high-frequency ripple behavior.
F4 — Flicker failure tree with evidence hooks A failure tree from “Flicker observed” to six root-cause classes, each annotated with its first two measurements (evidence fields) for fast isolation. Flicker observed Visible Stroboscopic Camera banding Input LF ripple Vbus + iLED envelope Loop suppression Step + ringing Dimming injection Cmd + iLED Protection / derate Flag + envelope Sensing noise Sense + iLED Multi-loop / mode State + envelope Evidence rule: Each branch is identified by two measurements; iLED(t) is always one of them. Discriminator: Correlate envelope with Vbus / command / flags / sense noise to isolate the injection path.

Each root-cause class is annotated with “First 2 measurements” to keep debugging deterministic and repeatable.

Measurement & Metrics: How to Prove Flicker Is Gone

“Flicker-free” is only credible when the conclusion is reproducible: use the same probe points, the same corner matrix, and the same screenshot fields to extract modulation depth and dominant components from the best-available signal.

Measurement priority (evidence strength): iLED(t) (current probe or sense resistor) > photodiode output > output-voltage ripple (auxiliary only). The root variable is current modulation; voltage ripple can look “small” even when current modulation is not.

What to measure (and why)

  • iLED(t): the primary evidence. Use it to quantify modulation depth relative to the mean and to identify dominant components.
  • Photodiode output: a practical optical proxy for L(t). Helpful for validating camera banding and for correlating electrical vs optical effects.
  • Vripple / Vbus ripple: supporting context to correlate low-frequency envelopes or supply disturbances with iLED(t).

How to extract the minimum useful metrics

  • Modulation depth (relative to mean): quantify ripple/envelope magnitude against the average current level. Always record the mean; deep dimming fails without normalization.
  • Dominant component + sidebands (concept): identify the dominant modulation component and whether additional bands appear (e.g., beating near transitions or command updates).
  • Dimming sweep worst-point scan: flicker is often worst at a specific dimming level or transition region—scan 100% → 10% → 1% → 0.1% (within product limits) and record the worst point.

Test corner matrix (make results repeatable)

Corner tags to record with every capture: VIN (min/nom/max), temperature (cold/room/hot), string/headroom condition (representative string count or Vstring margin), and dimming level sweep (100% → 1% → 0.1% where applicable).

Screenshot checklist (must be visible in every proof capture)

  • Timebase and vertical scale (so the envelope and amplitude are comparable).
  • Mean value (required for relative modulation depth).
  • Dimming command and any mode flag (PWM/analog/hybrid, transition state).
  • Input/bus status (VIN/Vbus level and, if relevant, ripple state).
  • Probe point ID (A/B/C) and probe method (current probe vs sense resistor vs photodiode).
iLED(t) first Depth vs mean Dominant component Dimming sweep Corner tags
F5 — Probe-point diagram for reproducible flicker measurements A wiring-style block diagram showing LED driver, LED string, sense element, photodiode, and three probe points A/B/C feeding a scope/logger, emphasizing repeatability at the same points. LED Driver Power + control dimming cmd / flags LED String Sense element shunt / sense node Photodiode optical proxy Scope / Logger CH-A CH-B CH-C A iLED(t) B L(t) C VIN/Vbus Repeatability: use the same A/B/C points, same timebase, and record corner tags in every capture. Screenshot must show: timebase, vertical scale, mean value, dimming cmd, VIN/Vbus status, and probe IDs.

A/B/C points are intentionally fixed to eliminate “moved probe” ambiguity and to make results comparable across teams and builds.

Low-Ripple Current Design: Suppression Mechanisms

Low-ripple iLED(t) is achieved through two complementary suppression paths: an energy-buffer path that reduces low-frequency energy deficits, and a control-suppression path that increases current-loop rejection in the target band—both must be verified with the same metrics and corner sweep.

Two-path model: the energy path reduces how much supply/bus disturbance becomes current modulation, while the control path reduces how much error and command injection becomes current modulation. Improving only one path can still leave a “worst dimming point” that fails.

Path 1 — Energy buffer path (reduce the low-frequency gap)

  • What it does: reduces the amplitude of low-frequency disturbance seen by the LED current (e.g., reduces the size of the low-frequency energy deficit).
  • Where it shows up: the low-frequency envelope in iLED(t) shrinks and correlates less with Vbus ripple across VIN corners.
  • How to prove it: using H2-5 captures, compare relative modulation depth of the low-frequency envelope before/after at the same dimming sweep and corner tags.

Path 2 — Control suppression path (increase rejection in the target band)

  • What it does: strengthens current-loop suppression where flicker is most sensitive for the application (without introducing oscillation or noise-driven jitter).
  • Where it shows up: reduced step-response ringing, reduced dominant components in the measured band, and improved stability through mode transitions.
  • How to prove it: keep A/B/C probe points fixed and compare dominant components and modulation depth during command steps and dimming sweep worst points.

Common pitfalls (and how to detect them with evidence)

  • “Cap-only fix”: low-frequency ripple may improve, but the worst dimming point can still fail due to control interaction. Detect by dimming sweep—look for a specific level where depth rises again.
  • “Bandwidth too high”: can convert noise into iLED jitter and create new components. Detect by increased high-frequency ripple/jitter at the same mean current.
  • “Voltage ripple looks good”: Vout ripple can be small while iLED(t) modulation remains large. Detect by prioritizing iLED(t) evidence (H2-5 hierarchy).
Energy buffer path Control suppression path Worst-point sweep Relative depth No voltage-only claims
F6 — Two suppression paths that reduce iLED ripple A conceptual diagram showing energy-buffer and control-suppression paths in parallel, both contributing to reduced iLED ripple, with measurement evidence outputs (depth and dominant component) on the right. Input / Bus disturbance iLED ripple envelope + components Energy buffer path hold-up / buffering Control suppression path bandwidth compensation Measured evidence modulation depth dominant component Pitfall: Improving only one path can still fail the worst-point dimming sweep; verify both with the same evidence protocol.

The diagram stays topology-agnostic: it explains “what suppresses ripple” without relying on buck/boost specifics.

Dual-Loop Suppression: When Outer Loop Fights Inner Loop

A large fraction of “mysterious flicker” in deep dimming is not caused by a weak power stage, but by control interaction: the outer loop perturbs the reference or mode, while the inner current loop tries to follow under limits—creating a low-frequency envelope, ringing, or frequent saturation events in iLED(t).

Dual-loop rule of thumb: the inner current loop must dominate the dynamics, while the outer loop must be slower and shape references gently. Any fast outer-loop correction, unstable handover, or aggressive filtering that eats phase margin can translate directly into current modulation.

Common dual-loop scenarios (control structure only)

  • Outer management loop + inner current loop: an outer loop shapes a current reference (brightness/power/voltage management concept), the inner loop enforces iLED(t).
  • CV↔CC region crossing: two objectives compete near a boundary; repeated handover or weak hysteresis creates envelope “breathing.”
  • Limit loops as hidden outer loops: thermal derating / protective limiting / boundary logic acts like a slow outer controller that can fight the inner loop at corners.

What “loop fighting” looks like in evidence

  • Low-frequency envelope: iLED(t) has a slow “breathing” modulation even when the command is steady.
  • Step-response ringing: a dimming step produces prolonged ringing or beating, indicating interaction or insufficient phase margin.
  • Frequent saturation / limiting: repeated clamping events (or limit flags) line up with current modulation and envelope growth.

How to stop it (principles that can be verified)

  • Bandwidth separation: outer slower, inner faster.
    Verify by showing that outer updates no longer dominate the iLED(t) envelope in the worst-point dimming sweep.
  • Handover strategy: use soft switching, explicit limits, and state hysteresis to prevent boundary chatter.
    Verify by stable mode flags and reduced envelope near region crossings (CV↔CC or limit boundaries).
  • Sampling/filter + phase-margin discipline: filtering must not trade away stability; keep rejection without introducing slow oscillation.
    Verify via cleaner step response (less ringing) and reduced sideband behavior across corners.
  • Anti-windup / saturation hygiene: avoid pushing the inner loop into persistent saturation; clamp integrators conceptually and shape references.
    Verify by fewer saturation events and reduced envelope at deep dimming.

Evidence hooks (symptom → first two captures)

  • Envelope at steady command: capture iLED(t) + outer reference (or mode/limit flags).
  • Ringing after step: capture iLED(t) + dimming step timestamp (command edge aligned).
  • Only near crossings: capture iLED(t) + CV/CC (or state) flag around the boundary.
  • Clamping suspected: capture iLED(t) + saturation/limit indicator (flag or limiter output concept).
Outer slower Inner dominates Soft handover Hysteresis Anti-windup
F7 — Dual-loop interaction points that create iLED modulation A block diagram showing outer controller feeding reference shaping into an inner current loop, with marked interaction points for limit/saturation, mode select (CV↔CC), and sampling/filter that can cause envelope and ringing. Outer Controller slow management Reference Shaping slew / filter / limits Inner Current Loop fast regulation Power Stage plant iLED(t) envelope / ringing limit mode CV↔CC sample filter Evidence hooks: capture iLED(t) + ref + mode/limit flags at worst-point dimming sweep. Fingerprints: low-f envelope, step ringing, frequent saturation, boundary chatter.

The diagram is topology-agnostic by design: it highlights interaction points that translate control conflict into iLED modulation.

Stable Deep Dimming: Analog vs PWM vs Hybrid (1% / 0.1%)

Deep dimming is the hardest flicker corner because the mean current is small: noise, offsets, quantization, minimum on-time, and handover boundaries can dominate the relative modulation depth. A flicker-free claim must survive the dimming sweep worst point.

Deep-dimming rule: always judge modulation depth relative to the mean and validate using a dimming sweep. The “worst point” is often near a transition (mode/handover/min-on-time) rather than at the smallest setting.

Three dimming methods: typical benefits and flicker traps

  • Analog dimming (concept): smooth control in principle, but deep-dimming can amplify noise/offset/quantization into visible modulation.
    Bad pattern: low mean with persistent jitter → large relative depth.
  • PWM dimming (concept): robust mean control, but too-low PWM frequency or insufficient duty resolution can create visible flicker or camera banding.
    Bad pattern: periodic envelope or “steppy” brightness due to quantization/min-on-time.
  • Hybrid (concept): extends range, but a poorly designed switch point can create steps and low-frequency breathing.
    Bad pattern: new envelope appears only around a particular dimming level (handover bump).

Engineering strategies (principles only, evidence-driven)

  • PWM minimum-frequency strategy (camera-aware): avoid operating points where sampling becomes sensitive; validate with photodiode and iLED(t) evidence rather than camera settings alone.
  • Reference shaping at deep dimming: apply slew/filters/limits so command updates do not inject dominant components; enforce minimum on-time behavior conceptually without producing low-frequency envelopes.
  • Low-current stability guards: use limiting discipline and anti-windup concepts so integrators do not fight boundaries; avoid repeated saturation events that become “breathing.”
  • Hybrid handover design: add hysteresis + soft switching so the system does not chatter at the switch point; the evidence target is envelope removal in the sweep worst point.

Evidence chain: dimming sweep worst point must pass

Required proof: in the sweep (100% → 10% → 1% → 0.1%, within product limits), record the worst point and show: iLED(t) envelope suppression, stable mode/limit flags, and no new dominant low-frequency component across VIN/temp/string corners.

Deep-dim worst point Relative depth Min on-time Handover bump Camera-aware
F8 — Deep-dimming waveforms: analog vs PWM vs hybrid bad patterns Three stacked waveform panels comparing iLED(t) over time for analog dimming, PWM dimming, and hybrid dimming, highlighting typical bad patterns (jitter, low-frequency envelope, steps/handover bump) with minimal labels. Analog bad: jitter low mean PWM bad: low-f envelope Hybrid bad: handover bump switch Evidence target: find the worst point in the dimming sweep, then remove the bad pattern in iLED(t).

Waveforms are illustrative: they communicate fingerprints (jitter / envelope / handover bump) without relying on topology-specific details.

Dimming Interfaces as Flicker Injectors (0–10V / PWM In / Digital Commands)

The dimming interface is not a neutral pipe. Noise, quantization, and steps can enter through the command chain, pass through conditioning, become a moving reference, and finally appear as modulation in iLED(t). This section explains injection paths without protocol implementation details.

Scope: interface signal → conditioning → reference → loops → iLED(t). Out of scope: protocol frames, addressing, diagnostics, or bus-specific implementation (covered in dedicated control-interface pages).

Three injection classes (source → path → fingerprint)

  • Analog input noise / ground reference drift: noisy input or drifting reference becomes reference jitter.
    Fingerprint: at deep dimming, small absolute jitter becomes large relative depth in iLED(t).
  • PWM input resolution / filtering strategy: limited duty resolution or aggressive averaging can create a low-frequency envelope.
    Fingerprint: the envelope changes when only PWM conditioning changes (same power stage).
  • Digital command stepping / scene switching: discrete steps act as step excitation for loops (often triggers H2-7 loop fighting).
    Fingerprint: repeatable ringing/envelope aligned to command updates or scene transitions.

Anti-injection principles (conditioning is the safety block)

  • Debounce + appropriate filtering: reduce noise without introducing slow oscillation or excessive phase delay in the effective reference.
  • Reference shaping: convert steps into controlled ramps (linear ramp or S-curve concept) so loops are not shocked.
  • Slope limiting for commands: cap how fast the effective reference can move to avoid envelope creation and loop conflict.
  • Stable handover behavior: if multiple command sources/modes exist, apply hysteresis and soft switching so the reference does not chatter.

Evidence method: isolate interface injection with A/B comparisons

Keep constant: power stage, loop compensation, VIN, temperature, and string/headroom condition.
Change only: command source and/or conditioning strategy.
Compare: iLED(t) relative modulation depth, dominant component, and envelope presence at the same dimming sweep points.

Noise injection Quantization Step excitation Conditioning block A/B proof
F9 — Interface → conditioning → reference → loops: where flicker is injected A chain diagram with three interface inputs (0–10V, PWM IN, Digital Cmd) feeding a highlighted conditioning block (debounce, filter, slew limit), then reference, loops, and iLED(t), with labeled injection arrows for noise, quant, and step. Interface Inputs 0–10V noise PWM IN quant Digital Cmd step Conditioning the safety block debounce filter slew limit Reference shaped target Loops outer / inner iLED(t) modulation noise quant step Evidence: same power stage, swap command chain / conditioning only → compare iLED(t). Compare: relative depth, dominant component, envelope presence at the same dimming sweep points.

The highlighted conditioning block is intentionally the focal point: it is where injection is prevented before it becomes a moving reference.

Validation Checklist: Pass/Fail Criteria for Flicker

A flicker mitigation claim is credible only if it passes a repeatable engineering gate: worst-case scenarios, a fixed record pack, and layered pass/fail criteria that can be audited later.

Gate philosophy: validate by worst-case scenarios (low-frequency worst, deep-dimming worst, transition worst), and ensure every data set is reproducible with the same record template and the same evidence fields.

Worst-case scenarios (engineering-focused)

  • Low-frequency ripple worst: VIN min + high load + hot.
    Purpose: expose envelope formation when margin is lowest and disturbance is highest.
  • Deep-dimming worst: 1% / 0.1% + small command steps.
    Purpose: amplify relative depth sensitivity and reveal quantization/jitter injection.
  • Transition worst: CV↔CC / limiting / thermal derating boundaries.
    Purpose: catch boundary chatter, loop fighting, and step-excited ringing.

Record pack template (audit-ready)

  • Waveforms: iLED(t) (primary), optional photodiode, optional VIN/Vbus context.
  • Dominant component view: a spectrum or dominant-component readout (tool-agnostic) captured at the same test point.
  • Corner tags: VIN, temperature, string/headroom condition, dimming level, and command source/conditioning profile.
  • Screenshot fields: timebase, vertical scale, mean value, command/mode flags, and probe IDs (consistent with H2-5).

Layered pass/fail criteria (no forced numeric thresholds)

  • Layer 1 — Electrical: relative modulation depth improves versus baseline for the same corner and same sweep point.
  • Layer 2 — Structure: no persistent low-frequency envelope, no boundary chatter, no prolonged step ringing.
  • Layer 3 — Phenomenon: no visible flicker and no camera banding artifacts under representative sampling conditions.

How to use this gate

  • Run the matrix, mark Pass/Fail per cell, and attach the record pack to each Fail cell.
  • Classify Fail cells by root-cause family: interface injection (H2-9), dual-loop fighting (H2-7), or deep-dimming boundary issues (H2-8).
  • Re-test only the impacted cells after changes, keeping the same measurement points and screenshot fields.
Worst-case corners Record pack 3-layer criteria Audit-ready Matrix marks
F10 — Flicker validation test matrix (engineering gate) A grid-style test matrix with scenario rows and dimming-level columns, showing pass/fail markers per cell plus a record-pack checklist and layered criteria summary. Test Matrix (Gate) 100% 10% 1% 0.1% Low-f worst VIN min load/hot Deep-dim worst 1%/0.1% small steps Transition worst CV↔CC limits × × × × × × Record pack iLED waveform dominant component corner tags 3-layer criteria relative depth envelope / ringing visible / banding Use: mark Pass/Fail per cell, attach the record pack to every Fail cell, then map failures to root-cause chapters. Map: H2-9 injection, H2-7 loop fighting, H2-8 deep-dim boundary, H2-6 suppression mechanisms.

Markers in cells are illustrative; in real validation, the matrix is filled with measured pass/fail outcomes and linked evidence.

H2-11 — Field Debug Playbook

Field Debug Playbook: Symptom → Evidence → Isolate → First Fix

This chapter turns flicker mitigation into an on-site SOP. Each symptom is resolved by capturing two evidence points (always include iLED(t) or optical proxy), then applying a single discriminator, then making the smallest fix that proves the root cause.

F11 — Flicker debug decision tree (evidence-first) A compact decision tree: start from symptom, capture iLED and one correlated signal, then route to deep dimming, interface injection, VIN/flags/thermal boundary, or dual-loop interaction. Decision Tree: Evidence-First Flicker Isolation Always capture iLED(t) + 1 correlated factor (command / VIN ripple / flags / temperature). Start: Flicker observed Evidence #1: iLED(t) envelope / spectrum Evidence #2 (pick one) Command/ref • VIN ripple • Flags • Temperature • Photodiode Q1: Only in deep dimming (≤1%)? Look for low-frequency envelope or step-driven ring. Route: Stable Deep Dimming Fix: ramp/limit ref, anti-windup, PWM min freq strategy Q2: Correlated to command/ref changes? If yes: interface injection or step excitation. Route: Interface Injection Fix: conditioning filter + buffer, slew-limit commands Q3: Correlated to VIN / flags / temperature? If yes: boundary behavior (UV/OV/OTP/derating). Route: Boundary + Dual-Loop Interaction YES NO YES NO
F11. Use this tree to pick the fastest discriminator. The “first fix” should be the smallest change that reduces iLED envelope under the same test condition.
Cite this figure — ICNavigator: “Flicker Mitigation (IEEE 1789)” — Fig. F11 (Field Debug Decision Tree), 3:2 SVG.

Symptoms (8+) — Each with 2 Measurements, 1 Discriminator, 1 First Fix

Capture the two measurements under a fixed test condition (VIN, temperature, dimming level). Save the waveform scale, average, dimming command, and any UV/OV/OTP flags for audit.

1) Flicker only in deep dimming (≤1% / 0.1%)
First 2 measurements
  • iLED(t): envelope at 1% / 0.1% (same VIN and temperature)
  • Command/ref: compare raw dim input vs conditioned reference (time-aligned)
Discriminator
If the low-frequency envelope appears only at very low current and follows command quantization/noise, the dominant cause is deep-dim stability and reference sensitivity (not power-stage energy ripple).
First fix (minimum action)
  • Apply slew-limited ramp to reference (remove step excitation); re-run the same dim sweep
  • Add anti-windup / clamp concept in the low-current region (reduce limit-cycle behavior)
MCP4725 • ramp reference TLV9062 • buffer/filter INA180 • iLED sense ADS1115 • sweep logging
2) Stable at full brightness, flickers when dimmed
First 2 measurements
  • iLED(t): compare 100% vs 10% vs 1% (same VIN); check relative modulation depth
  • Sense/Ref node: observe baseline noise/offset drift at the current-sense/command path
Discriminator
If absolute ripple stays similar but relative modulation depth spikes at low current, the system is noise/offset dominated in deep dimming (reference and sensing sensitivity).
First fix (minimum action)
  • Increase conditioning (filtering + buffering) on the dim reference path
  • Reduce reference “granularity” (continuous ramp instead of small steps) and re-check envelope
TLV9062 • low-noise buffer MCP4725 • smooth dim steps INA180 • shunt monitor
3) Flicker appears when input voltage fluctuates
First 2 measurements
  • VIN/Vbus ripple: capture the low-frequency component during the flicker event
  • iLED(t): check whether the envelope is time-correlated with VIN ripple
Discriminator
If iLED envelope is strongly correlated (same phase or fixed delay) with VIN ripple, the root cause is insufficient suppression of input disturbance (energy path + loop rejection).
First fix (minimum action)
  • Add a supervisor gate to prevent boundary chatter during sags (debounce / delay concept)
  • Re-test at the same VIN condition and compare envelope magnitude (before/after)
TPS3703 • UV/OV debounce INA180 • iLED correlation ADS1115 • slow envelope log
4) Starts stable, then flickers after warm-up (thermal)
First 2 measurements
  • iLED(t): record from cold to steady-state temperature
  • Temperature / derating flag: log temperature and any limit/derating transitions
Discriminator
If flicker begins near a derating/limit transition and repeats periodically, the thermal control acts like a slow outer loop that can fight the current loop.
First fix (minimum action)
  • Introduce hysteresis and rate limiting around derating transitions (avoid boundary oscillation)
  • Re-run the same warm-up profile and verify the envelope disappears
TMP117 • temperature evidence INA180 • iLED tracking ADS1115 • profile logging
5) Small dimming command steps cause visible jumps or ringing
First 2 measurements
  • Command/ref: confirm step timing and magnitude (record exact step size)
  • iLED(t): capture step response (look for low-frequency ring / envelope)
Discriminator
If every step produces a repeatable ring/envelope, the system is step-excitation limited: command shaping (slew limit) should reduce the symptom without changing the power stage.
First fix (minimum action)
  • Add S-curve / linear ramp on commands (remove hard steps) and repeat the exact same step test
  • Reduce effective command bandwidth before it enters control loops (conditioning block)
MCP4725 • ramp generator TLV9062 • active filter
6) Multiple luminaires influence each other (no system/network scope)
First 2 measurements
  • iLED(t) of one unit: compare “single unit on” vs “multiple units on”
  • Shared analog reference: observe reference/ground shift or noise injection on the dim input chain
Discriminator
If the same unit is stable alone but flickers when others run, and the reference node shows added noise/shift, the dominant cause is command/reference injection (not intrinsic current-loop instability).
First fix (minimum action)
  • Buffer and low-pass the dim reference before it enters control loops (conditioning block hardening)
  • Repeat A/B test by changing only conditioning (prove injection sensitivity)
TLV9062 • buffer isolation INA180 • iLED comparison
7) Periodic on/off near protection thresholds (hiccup-like behavior)
First 2 measurements
  • iLED(t): confirm periodicity and duty of the on/off behavior
  • UV/OV/OTP flags: log threshold events (or supervisor output) aligned to iLED
Discriminator
If the brightness toggles with repeated threshold trips, the boundary control is oscillating. The first objective is to stop “threshold chatter” before tuning loop behavior.
First fix (minimum action)
  • Add time delay and hysteresis on UV/OV decision points to prevent rapid re-entry
  • Retest at the same boundary condition and confirm the toggling breaks
TPS3703 • window supervisor INA180 • iLED evidence
8) Camera shows banding, but flicker is not obvious to human eye
First 2 measurements
  • Photodiode output (or iLED): identify dominant modulation components and stability
  • Camera settings record: frame rate / shutter (record only to reproduce; no protocol scope)
Discriminator
If modulation components are stable and interact with sampling, the issue is banding susceptibility. Raising effective modulation frequency and removing low-frequency envelope reduces banding risk.
First fix (minimum action)
  • Shift modulation away from sampling interaction by adjusting PWM strategy (minimum frequency policy concept)
  • Verify improvement using the same camera settings plus photodiode/iLED evidence
BPW34 • optical pickup OPA380 • photodiode TIA

Save-For-Audit (Minimum Evidence Set)

  • Waveforms: time axis + vertical scale + average value + dimming command state
  • Environment: VIN state (min/nom/max), temperature (cold/hot), dimming level (100%→1%→0.1%)
  • Flags: UV/OV/OTP/derating/limit indicators aligned to iLED(t)

Result should be reproducible by repeating the same condition and capturing the same two evidence points.

Request a Quote

Accepted Formats

pdf, csv, xls, xlsx, zip

Attachment

Drag & drop files here or use the button below.

FAQs (12) — Flicker Mitigation (IEEE 1789)

Each answer is evidence-first: capture iLED(t) (or photodiode proxy) plus one correlated factor (command/VIN/flags/temperature), then apply a single discriminator, then do the smallest fix that proves the cause.

1) Should flicker be judged by LED current or output voltage ripple?
Maps to H2-5 Evidence iLED(t) > photodiode > Vout ripple MPN INA180 (iLED sense)

Short answer: Judge flicker by iLED(t) (or optical output), not by Vout ripple alone. Evidence: capture iLED envelope/spectrum (shunt + INA180) and align it with the dimming command; use Vout ripple only to explain correlation. First fix: lock the probe point and run a dimming sweep to find the worst point before changing hardware.

2) Why can 100/120 Hz ripple feel flickery even when ripple looks “small”?
Maps to H2-2, H2-3 Evidence frequency + modulation depth

Short answer: “Small” absolute ripple can still be a large relative modulation depth, especially in deep dimming. Evidence: compute modulation depth from iLED(t) (relative to average) and identify the dominant frequency component; confirm whether the envelope sits in a sensitivity band (conceptually, not by quoting tables). First fix: reduce the envelope depth at the dominant frequency, then re-check perception.

3) Deep-dimming “breathing”: dual-loop fighting or command shaping not enough?
Maps to H2-7, H2-9 Evidence iLED envelope vs command timing MPN MCP4725 (smooth ramp)

Short answer: Use correlation to decide. Evidence: align iLED envelope with command/ref updates; if the envelope repeats at command step timing, it is injection/step excitation (H2-9). If it correlates with mode/limit activity, it is loop interaction (H2-7). First fix: apply a slew-limited ramp (e.g., MCP4725 + buffer) and retest the same dim step sequence.

4) Is higher PWM frequency always safer? Why can camera banding get worse?
Maps to H2-2, H2-8 Evidence photodiode/iLED + camera settings record MPN BPW34 + OPA380 (optical proxy)

Short answer: Higher PWM can reduce visible flicker yet still increase sampling interaction with rolling shutters. Evidence: measure optical modulation with BPW34 + OPA380 (or iLED) and record camera frame rate/shutter only to reproduce the banding; check if a stable modulation component aliases into banding. First fix: remove low-frequency envelope first, then adjust PWM strategy to reduce sampling susceptibility.

5) How to choose a hybrid-dimming transition point without brightness steps?
Maps to H2-8 Evidence step response at transition

Short answer: Treat the transition as a disturbance that can create steps and a low-frequency envelope. Evidence: run a dimming sweep through the transition and capture iLED(t) average, overshoot, and any envelope/ringing around the crossing. First fix: add soft handoff (hysteresis + ramped reference) so the transition is continuous; then repeat the exact sweep to confirm the step disappears.

6) If the outer loop is faster, shouldn’t it suppress ripple better? Why can it flicker more?
Maps to H2-7 Evidence ringing + low-frequency envelope

Short answer: A faster outer loop can invade the inner loop’s territory and reduce stability margin, creating an envelope. Evidence: apply a small reference step and capture iLED(t) for ringing/envelope; monitor how often limits/hand-offs trigger. First fix: restore bandwidth separation (outer slower, inner faster) and introduce a clean handoff strategy (limit + hysteresis) before further tuning.

7) Low-current jitter: sampling noise or loop phase margin?
Maps to H2-6, H2-8 Evidence correlation vs fixed-frequency ring MPN ADS1115 (slow envelope logging)

Short answer: Noise-driven jitter follows noise sources; stability issues show repeatable ringing. Evidence: check whether iLED(t) jitter correlates with reference/sense noise and changes with filtering, or whether it shows a stable ringing pattern under small steps; log envelope trends during sweeps (ADS1115 is sufficient for slow envelopes). First fix: harden low-current region with clamps/anti-windup and appropriate filtering, then retest the same steps.

8) Periodic flicker near OTP/OV/short: “normal hiccup” or unstable loop?
Maps to H2-4, H2-11 Evidence iLED periodicity + protection flags MPN TPS3703 (window supervisor)

Short answer: Use flag alignment to decide. Evidence: time-align iLED(t) on/off pattern with UV/OV/OTP/short flags (or a TPS3703 supervisor output); strong alignment indicates boundary chatter/hiccup behavior, while flicker without flags points to loop instability. First fix: add debounce/hysteresis and a soft recovery around thresholds, then repeat at the same boundary condition to confirm periodic toggling stops.

9) 0–10 V analog dimming gets flickerier with long cables: filter first or reference ground?
Maps to H2-9, H2-5 Evidence raw input vs conditioned ref MPN TLV9062 (buffer/filter)

Short answer: Compare the raw input to the conditioned reference. Evidence: measure the 0–10 V input at the connector and the post-conditioning ref that enters the loop; if ref moves with cable-induced noise/ground shift and iLED follows, ground/reference injection dominates. First fix: buffer and low-pass the reference path (TLV9062-class buffer + conditioning) and retest A/B with the same cable.

10) Same hardware, different dimming controllers cause very different flicker — which chain segment is guilty?
Maps to H2-9 Evidence only command source changes

Short answer: If the power stage is unchanged, the difference is in the command/reference conditioning segment. Evidence: keep VIN/temperature/load fixed, swap only the command source, and compare iLED modulation depth and dominant frequency; then compare pre/post-conditioning reference waveforms. First fix: make the driver less sensitive to command artifacts using stronger deglitching, filtering, and slew-limited ramps before loops.

11) How to design validation cases so the “worst point” is not missed?
Maps to H2-10 Evidence test matrix + saved waveforms

Short answer: A worst point usually lives at boundaries, not at nominal conditions. Evidence: sweep dimming (100%→1%→0.1%) across VIN min/nom/max and cold/hot, and include mode transitions (limits, CV↔CC crossings); save waveforms with scales, averages, and flags. First fix: turn the matrix into a pass/fail gate: any fail must include iLED envelope evidence and the exact settings to reproduce.

12) Ripple is low, but users still report headache/discomfort — what next?
Maps to H2-2, H2-5, H2-10 Evidence frequency + depth in the complaint scenario

Short answer: Re-test in the exact complaint scenario and re-classify the risk type. Evidence: capture iLED(t) or photodiode output and extract dominant frequency and modulation depth at the reported dim level, motion context, and environment; compare to your validation matrix to find the missed corner. First fix: eliminate any residual low-frequency envelope and confirm improvements with the same measurement setup and saved parameters for audit.