edakit documentation

ADLSC, Atoomnet's Digital Led String Controller

Why: the WLED controller – the board makers build to drive addressable LED strips from an ESP32 at several amperes: a 5 V supply of 10 A, the ESP32's 3.3 V data shifted to 5 V by a 74AHCT125 with 100 Ω in series, the strips' power switched by the firmware and fused per output. No reference circuit has an LED-strip output, and of the open designs the Corne feeds its SK6812s one diode below 5 V to make 3.3 V data reach them and the SparkFun converter shifts levels with BSS138s; ADLSC brings the TTL-input buffer, a reverse-polarity N-MOSFET in the ground return, a voltage supervisor on the ESP32's EN, P-MOSFET high-side switches driven from a GPIO through an NPN, glass fuses with blown-fuse LEDs, a polyfuse, TVS diodes on every 5 V rail, and an ESP32 development board plugged in behind a Schottky diode – real parts with their datasheets, in a class of board that WLED's users copy, where a false alarm would meet many.

atoomnetmarc, ADLSC, Atoomnet's Digital Led String Controller ("ESP32 based 5V digital LED controller build for use with WLED"), https://github.com/atoomnetmarc/ADLSC at commit 3aecf18 (3aecf18cfb2dffa2b83f3e08038c563ee9e2df65, 2026-01-23), the schematic Kicad/ADLSC.kicad_sch (title block rev V1.0, 2025-01-05, KiCad 8.0.7; the same drawing as Kicad/ADLSC-schematic.pdf) and the repository's README.md (power supply, WLED configuration, wiring), read on 2026-11-03 from a read-only clone. The netlist was resolved from the schematic (wires, junctions, labels, power symbols) by a reader outside this repository and checked against the board file Kicad/ADLSC.kicad_pcb of the same commit: all 187 pads are on the same nets there. · SVG

ADLSC WLED controller atoomnetmarc-adlsc · board main graph v1.0 (2026-11-03) · 455 x 498 mm drawn by edakit schematic draw – change the graph, not this drawing J1 1824810000 Push-in terminal for the wires from the 5 V supply: they can be swapped – ADLSC's README tests it. A1 ESP32-DEVKITC-VE ADLSC's symbol numbers J3 from CLK (20) to GND (38); the EasyEDA symbol of C20437001 from GND (20) to CLK (38) – the pins are written in the latter. 3V3, IO5, IO18, IO19, IO21, IO22, IO23 go only to the Pmod positions J2/J5 and R4, R6, R7, R9, R13, R17, which the schematic marks not fitted: nc here. U1 MAX809MTRG U2 74AHCT125D,118 Gates C and D unused: inputs 3A, 4A and enables to GND, outputs 3Y, 4Y open. J3 LED power output 1 J4 LED data outputs J6 LED power output 2 Other 0V_IN D1_K RESET RESET DATA1_3V DATA1_3V DATA2_3V DATA2_3V POWER_ON POWER_ON U1_RESET U2_1Y DATA1 DATA1 D9_A U2_2Y DATA2 DATA2 D10_A +5V_LED1 D8_A Q2_D Q2_D Q2_D Q2_D Q2_D Q2_G Q4_D Q4_D Q4_D Q4_D +5V_LED2 +5V_LED2 D11_A D11_A D12_A Q3_C Q3_B D6_A D2_A D2_A D3_A D3_A +5V_IN +5V_IN +5V_IN +5V_IN A1_5V +5V +5V +5V_IN +5V_IN +5V_IN +5V_IN +5V_IN +5V_IN +5V_IN +5V_IN +5V +5V A1_5V +5V +5V_IN +5V +5V_IN +5V_IN 1 2 J1 1824810000 D1 NCD0805R1 R1 220 D4 SMBJ5.0CA 1 2 3 Q1 AOD442 EN 2 IO25 9 IO26 10 GND 14 5V 19 IO4 32 GND 26 GND 20 A1 ESP32-DEVKITC-VE GND 1 RESET# 2 VCC 3 U1 MAX809MTRG R5 100 C1 100nF + C2 470uF 1OE# 1 1A 2 1Y 3 2OE# 4 2A 5 2Y 6 GND 7 VCC 14 4OE# 13 4A 12 3OE# 10 3A 9 U2 74AHCT125D,118 R8 10k R12 100 R15 10k D9 KT-0805G R14 10k R16 100 R18 10k D10 KT-0805G 1 2 J3 1824810000 D7 SMBJ5.0CA D8 NCD0805R1 R11 220 F2 0239003.MXP S 1 S 2 S 3 G 4 D 8 D 7 D 6 D 5 Q2 TSM160P02CS RLG C3 100nF S 1 S 2 S 3 G 4 D 8 D 7 D 6 D 5 Q4 TSM160P02CS RLG F3 0239003.MXP D11 NCD0805R1 D13 SMBJ5.0CA R23 10k D12 KT-0805G R22 220 R19 10k R20 100 1 3 2 Q3 MMBT2222LT1G R21 1k R10 10k D6 KT-0805G 1 2 J4 1824810000 1 2 J6 1824810000 D2 KT-0805G D3 NCD0805R1 D5 SMBJ5.0CA D14 SS34 F1 R2 10k R3 220
StageCodeWhereJudgedWhy
checkDOCS.fileedakit.tomlcriterionThe transcription has no requirements file: what the published design must do stands in its own documents, not in edakit's form. edakit requires the file before a release (handbook 3.6); it is no point of the design.
checkLIM.vA1.2realThe MAX809's RESET is push-pull to its own supply, +5V (VOH ≥ 0.8 VCC), and drives the DevKitC's EN through R5 (100 Ω) – a 3.3 V pin of the ESP32 (VIH up to VDD + 0.3 V). Above 3.6 V the pin's protection carries the difference into the 3.3 V rail; an open-drain supervisor or a divider would keep EN at 3.3 V.
checkLIM.vD13realThe SMBJ5.0CA on +5V_LED2: its stand-off voltage VR is 5.0 V, the IRM-60-5 delivers up to 5.125 V (5 V ± 2.5 %) – above VR it may leak more than its datasheet's 1.6 mA; it breaks down at 6.4 V at the earliest, so it does not clamp.
checkLIM.vD4realThe SMBJ5.0CA across the input, +5V_IN to 0V_IN: its stand-off voltage VR is 5.0 V, the IRM-60-5 delivers up to 5.125 V (5 V ± 2.5 %) – above VR it may leak more than its datasheet's 1.6 mA; it breaks down at 6.4 V at the earliest, so it does not clamp. edakit's extremes add 0V_IN's −0.2 V (Q1's drop in the ground return).
checkLIM.vD5realThe SMBJ5.0CA on +5V: its stand-off voltage VR is 5.0 V, the IRM-60-5 delivers up to 5.125 V (5 V ± 2.5 %) – above VR it may leak more than its datasheet's 1.6 mA; it breaks down at 6.4 V at the earliest, so it does not clamp.
checkLIM.vD7realThe SMBJ5.0CA on +5V_LED1: its stand-off voltage VR is 5.0 V, the IRM-60-5 delivers up to 5.125 V (5 V ± 2.5 %) – above VR it may leak more than its datasheet's 1.6 mA; it breaks down at 6.4 V at the earliest, so it does not clamp.
checkLVL.undefinedQ3realQ3's base hangs on R21 from GPIO4 alone: while the ESP32 is held in reset (by the MAX809 or the EN button), before WLED configures the pin, or with the DevKitC taken out of its sockets (the README flashes it unplugged), nothing defines it – the LED power then rests on leakage. A 10–100 kΩ from base to emitter would hold it off; the README's test (EN held: the outputs dark) shows it stays off in practice.
simLIM.iF2criterionWLED's 5 A over the two outputs puts 2.5 A through each 3 A glass fuse, 83 % of its rating, and the load fuses_3a the full 3 A – beyond edakit's 80 %. The 239 series carries 100 % for 4 hours minimum and is sized so on purpose (README: (10 A − 1 A) / 3); that the rating is the design's own limit is the README's choice.
simLIM.iF3criterionAs F2: 2.5 A at WLED's limit and 3 A in fuses_3a through the 3 A fuse of the second output, beyond edakit's 80 % of its rating, which the 239 series carries for 4 hours minimum at 100 %.
simLIM.iQ1criterionWith both outputs at their fuses' 3 A, Q1 in the ground return carries 6.4 A – inside the AOD442's 7 A (IDSM at 25 °C), beyond edakit's 80 % of it; 0.98 W put its junction at 84 °C (LIM.t passes). At WLED's 5 A it passes.
simLIM.rangeA1realThe DevKitC's 5V pin gets 3.9–4.2 V: the polyfuse F1 at its 1 Ω after a trip (R1max), the SS34 and – with the LEDs lit – the supply wires and Q1 in the ground return. With the AMS1117's 1.3 V maximum dropout the WROVER-E would see less than its 3.0 V; vin_min_v 4.3 V is derived from both (entry C20437001). With F1 at its 0.15 Ω and a typical dropout it works – a worst case, not the typical board.
simLIM.rangeU2real+5V sags to 4.23–4.49 V with the LEDs lit: the supply wires and Q1 lift GND by 0.2–0.3 V, F1 at its R1max drops 0.36 V – the 74AHCT125 leaves its 4.5 V minimum. The same +5V reaches the MAX809's own threshold (4.27–4.49 V): in the worst case the supervisor resets the ESP32 as the LEDs come on. The polyfuse in front of the 5 V logic is the cause.
simLIM.vD1realThe reverse-polarity LED D1 sits across the input the other way round in normal operation: 5.0–5.1 V reverse at the IRM-60-5's upper tolerance, against the LED's 5 V VR (NCD0805R1, which stands in for the schematic's 'Red').
simSIM.stateD12criterionD12 – LED output 2's indicator, 10 kΩ from +5V_LED2 – gets 0.2 mA, below edakit's 1 mA for an LED that is on. The 10 kΩ dim it on purpose: the README tests it as lit ('D2 green is on', 'D6 and D12 will get brighter').
simSIM.stateD2criterionD2 – the power LED, 10 kΩ from +5V_IN – gets 0.2 mA, below edakit's 1 mA for an LED that is on. The 10 kΩ dim it on purpose: the README tests it as lit ('D2 green is on', 'D6 and D12 will get brighter').
simSIM.stateD6criterionD6 – LED output 1's indicator, 10 kΩ from +5V_LED1 – gets 0.2 mA, below edakit's 1 mA for an LED that is on. The 10 kΩ dim it on purpose: the README tests it as lit ('D2 green is on', 'D6 and D12 will get brighter').

edakit's false alarms on this design, fixed

  • The bidirectional SMBJ5.0CA across the terminal (D4) judged as one direction – reached by the reversed 5 V on both pins (PATH.reverse on D4.1, D4.2): the parts schema has values tvs "bidirectional" now, which PATH.reverse tolerates and LIM.v holds either way (TD-132).
  • The reverse-polarity N-MOSFET in the ground return (Q1) unknown to PATH.reverse, which walked from J1's pins as if GND were the return – 18 findings on the plus side and on Q1 itself (D1.2, D3.1, D5.1, Q1, Q2, Q4, R1.1, R2.1, R3.1, R19.1, U1.3, U2.14, C2.1): a low-side N-MOSFET is now a cut of catalog/paths.toml [reverse], and only the parts between the terminal's own nets count (TD-125).
  • The gate of the reverse-polarity N-MOSFET in the ground return, tied straight to the net the supply comes in on (Q1 on +5V_IN), taken as floating (LVL.undefined on Q1).