Skip to main content

LED Indicator

Status LED sub-circuit — full sheet
Hardware version

MDD400 v2.9 — Fabricated prototype, bench-test phase. Status LED has not yet been observed in a long-duration soak test; the bring-up check in this page's Testing & Verification section is required for first acceptance.

Overview

The MDD400 has a single rear-facing status LED — an amber 0603 SMD LED (D2) driven by a PNP high-side switch (Q1 BC807-25). It is primarily a service indicator for technician bring-up and fault-finding: it faces the rear of the board — visible at the rear connector panel (where the NMEA 2000 cable enters) but not from the helm once the unit is bulkhead-mounted. Because it is reachable at the rear panel, it also doubles as an owner-level diagnostic — e.g. confirming power-good before returning a unit for repair. It is a candidate for DNP (do-not-populate) on production tiers. The sub-circuit is drawn on esp32_module.kicad_sch (the same KiCad sheet as the ESP32 Module page) because LED_EN is an ESP32 GPIO; this page documents the LED-side hardware only.

This page covers a single sub-circuit:

  • Status LED — Q1 high-side switch and D2 amber indicator, hardware-biased default-on and overridden by the firmware LED_EN GPIO.

The boot-priority order — hardware on by default, then firmware takes over — means a technician working at the rear of the board sees the supply rail come up regardless of whether firmware boots successfully, which is the diagnostic property the designer wanted.

Functional specification and design objectives

The status LED circuit must:

  • illuminate as a power-good indicator as soon as VCC is stable, before firmware starts running (default LED_EN floating or LOW → Q1 ON, D2 lit);
  • extinguish under firmware control so the MCU can implement application-level status patterns (LED_EN HIGH → Q1 OFF, D2 dark);
  • drive the amber 0603 LED at a current well below its 20 mA absolute maximum while remaining clearly visible to a technician at the rear of the board; and
  • not glow dimly when firmware holds the LED off.

Status LED

Status LED sub-circuit — Q1 (BC807-25 PNP high-side switch), D2 (amber 0603 LED), R8 (base-bias resistor), R15 (base pull-down to GNDREF), R14 (LED current-limit). Default-on by hardware bias; firmware-controlled via LED_EN.

How it works

Topology

VCC ──┬─ Q1 emitter (BC807-25, PNP)

Q1 collector ── R14 (390 Ω) ── D2 anode (amber) ── D2 cathode ── GNDREF

LED_EN ── R8 (6k8) ──┬── Q1 base

R15 (10 kΩ) ── GNDREF

Q1 is a PNP transistor wired as a high-side switch. Its emitter sits at VCC; its collector drives the LED current through the current-limit resistor R14. The base is biased by the divider formed by R8 (between the LED_EN net and the base) and R15 (between the base and GNDREF).

Default-on bias

When LED_EN is undriven (e.g. during boot before the MCU configures the GPIO, or if firmware never starts), R15 pulls the base toward GNDREF. The base sits ~0.7 V below the emitter (the VBE drop of a forward-biased PNP), forward-biasing Q1's base-emitter junction. Q1 saturates, VCE ≈ 0.1 V, and the collector sits at VCC − 0.1 V ≈ 3.2 V. The LED chain (R14 + D2) then runs at:

I_LED = (V_C − V_F_LED) / R14
= (3.2 − 2.0) / 390 Ω
≈ 3.08 mA

3 mA through a 0603 amber LED is well below the 20 mA absolute maximum and produces a brightness adequate for a technician to read at the rear of the board without excessive current draw.

The base divider is sized so Q1 is deeply saturated:

  • VB when Q1 is active: VE − 0.7 V = 3.3 − 0.7 = 2.60 V
  • Current through R8 (base node to LED_EN at 0 V): (2.60 − 0) / 6.8 kΩ = 382 µA
  • Current through R15 (base node to GNDREF at 0 V): 2.60 / 10 kΩ = 260 µA
  • Both resistors pull current out of the base node toward 0 V, so the two paths add: IB = 382 + 260 = 642 µA, supplied through the emitter–base junction.
  • IB,required at edge of saturation: IC / hFE,min = 3.08 mA / 160 = 19.3 µA
  • Overdrive ratio: IB,actual / IB,required ≈ 33×

The transistor is deeply saturated and the ON-state operating point is well defined.

Firmware override

When firmware drives LED_EN HIGH (VCC, 3.3 V), the base sits at VCC through R8 (negligible drop, since negligible base current flows when Q1 is off). With VBE ≈ 0 V, Q1 is fully cut off and no collector current flows. D2 extinguishes.

R15 is sized to be small enough relative to R8 that even when LED_EN is at VCC, the divider biases the base above the VBE threshold — preventing the LED from glowing dimly under firmware-OFF.

Performance

ParameterValueNotes
I_LED (Q1 on)3.08 mA(3.2 V − 2.0 V) / 390 Ω
V_C (Q1 on)3.2 VVCC − VCE,sat
Q1 base overdrive~33×IB,actual / IB,required at hFE = 160
VF (amber 0603 @ 3 mA)~2.0 VXL-1608UOC-06 typical
Q1 saturation VCE,sat @ 3 mA~0.1 VBC807-25 low-current region
LED on-state visibilityAdequate for technician viewing at the board rear3 mA through amber 0603
LED off-state leakageZeroQ1 fully cut off when LED_EN = VCC
EMC concern (LED_EN switching)NoneLED_EN is a low-frequency GPIO; R8 = 6.8 kΩ limits di/dt at the base
Component cluster footprint~12 × 7 mmAll five parts (Q1, R8, R14, R15, D2) co-located between J1 and U3's right-column pads

PCB Layout

Q1, R8, R15, R14, and D2 are placed as a compact cluster in the "Status LED_EN" zone, centred near (120, 56) between J1 and U3's right-column castellated pads. There are no critical EMC constraints, so placement follows the schematic topology. The Q1 collector–emitter path is kept short (the Q1–R14–D2 span is ≈ 5 mm) to minimise inductance in the LED switching path. All five components sit within a 12 mm × 7 mm bounding box: Q1 at (120.0, 54.0), D2 4.1 mm away, R8 3.5 mm from Q1, R15 6.0 mm, R14 7.0 mm. LED_EN is a low-frequency signal requiring no special routing; the 6.8 kΩ base resistor R8 limits any inrush. All components share the VCC/GNDREF domain — no isolation on this sheet. D2 is oriented to be read from the rear (service) side of the board — it is not brought out to the front panel.

Components

RefValueFunctionDatasheet
Q1BC807-25Nexperia PNP BJT, 45 V / 500 mA, SOT-23; high-side LED switchNexperia BC807 Series
D2XL-1608UOC-06XINGLIGHT 0603 amber SMD LED; status indicatorXINGLIGHT XL-1608UOC-06
R86k8 0603 ±1 %Base-bias resistor (LED_EN → Q1 base)Yageo RC Group
R14390 Ω 0603 ±1 %LED current-limit (Q1 collector → D2 anode); sets ILED ≈ 3 mAYageo RC Group
R1510 kΩ 0603 ±1 %Base pull-down to GNDREF — provides the default-on bias when LED_EN floatsYageo RC Group

Testing & Verification

caution

V2.9 is a fabricated prototype in the bench-test phase. The Status LED has not yet been observed in a long-duration soak; the following bring-up tests are required.

Hardware bring-up (rig at the bench):

  • Default-on at power-up — Apply VCC with LED_EN unconnected (or firmware-controlled GPIO held high-impedance). Pass if D2 illuminates within a few milliseconds of VCC reaching its nominal value, before firmware starts.
  • Firmware-off control — Boot firmware; configure LED_EN as a GPIO output and drive it HIGH. Pass if D2 fully extinguishes within one GPIO cycle and stays off until LED_EN is released or driven LOW.
  • I_LED measurement — Probe across R14 with Q1 on. Calculate ILED from VR14 / 390 Ω. Pass if ILED is between 2.5 mA and 3.5 mA (allowing for amber LED VF spread).
  • Visibility check — Confirm D2 is clearly visible at the rear of the board (service position). There is no front-panel aperture — the LED is not visible once the unit is bulkhead-mounted. Pass if clearly visible to a technician during bench bring-up and fault-finding.

Gaps & next version

Next version (V2.10)

  • Production DNP decision — As a rear-facing service indicator (not a user-facing feature), D2 and its drive components (Q1, R8, R14, R15) are candidates for DNP on production / Retail tiers. Confirm during production BOM definition.
  • LED brightness trim — If the visibility check shows D2 is too dim, reduce R14 in a future revision; if too bright, increase R14. Resolve after the bench visibility measurement.

References