Overview
Calculates voltage drop for single-phase parallel-connected AC lighting circuits with sequential cable runs per IEC 60364, BS 7671, and AS/NZS 3000. Each light fixture taps off a shared cable that runs from the supply through each light in series. The cable section between any two lights carries the cumulative current of all downstream lights, producing a different voltage drop at each fixture location.
This calculator (c0018) shares the same electrical methodology as the
Lighting Circuit Voltage Drop calculator (c0015) but is registered under
a separate calc_type (ac_light_circuit) and
uses its own lookup tables for conductor resistance at 20 °C.
The resistance data in c0018 covers CSA values from 0.75 mm²
to 25 mm², which is the typical range for lighting sub-circuits.
Where c0015 calculates resistance from a broader table set, c0018 also
provides a calculate_recommended_cable_size() helper that
iterates through standard sizes to find the minimum compliant cable.
Input Parameters
Circuit Parameters
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
supply_voltage |
Number | 230 V | 100 – 400 V | Nominal single-phase supply voltage |
power_factor |
Number | 1.0 | 0.5 – 1.0 | Load power factor (typically 0.95–1.0 for LED) |
frequency |
Enum: 50 / 60 Hz | 50 | — | System frequency |
temperature |
Number | 30 °C | −20 – 90 °C | Cable operating temperature for resistance adjustment |
Conductor Parameters
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
conductor_material |
Enum: copper / aluminium | copper | — | Conductor material |
cable_csa |
Enum | 1.5 mm² | 0.75 – 25 mm² | Conductor cross-sectional area (standard sizes: 0.75, 1.0, 1.5, 2.5, 4.0, 6.0, 10, 16, 25) |
voltage_drop_limit |
Number | 3% | 0.5 – 10% | Maximum voltage drop at any light, % of supply |
Light Configuration
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
num_lights |
Integer | 4 | 1 – 20 | Total quantity of lights in the circuit |
lights |
Array of objects | — | 1 – 20 items | Sequential light fixtures with cable lengths and power ratings |
lights[n].power |
Number | — | 1 – 1000 W | Light fixture power consumption |
lights[n].cable_length |
Number | — | 0.1 – 500 m | Cable length from previous light (or from supply for first light) |
Output Results
Summary Outputs
| Output | Unit | Description |
|---|---|---|
total_power |
W | Sum of all light fixture powers |
cable_resistance |
Ω/km | Conductor resistance at operating temperature |
max_current |
A | Total current drawn at supply point (first section current) |
max_cable_current |
A | Maximum current rating for the selected cable size |
current_ok |
Boolean | Whether supply current is within cable current rating |
max_voltage_drop |
V | Maximum cumulative voltage drop at any light |
max_voltage_drop_percent |
% | Maximum voltage drop as percentage of supply |
min_voltage |
V | Minimum voltage at any light fixture |
is_compliant |
Boolean | Whether \(V_{d\%,max} \leq 3\%\) and current is within cable rating |
compliance_status |
Text | “PASS” or “FAIL” |
warnings |
List | Warning messages (over-current, excessive VD, low PF) |
Per-Light Outputs (light_results array)
| Output | Unit | Description |
|---|---|---|
current_in |
A | Current through the cable section feeding this light |
voltage_drop_section |
V | Voltage drop across this cable section only |
cumulative_voltage_drop |
V | Total voltage drop from supply to this light |
voltage_at_light |
V | Actual voltage at this light fixture |
voltage_drop_percent |
% | Cumulative voltage drop as percentage of supply |
Cable Section Outputs (cable_sections array)
| Output | Unit | Description |
|---|---|---|
section_num |
Integer | Section identifier (1-based) |
from / to |
Text | Start and end points (e.g. “Supply” to “Light 1”) |
current |
A | Current through this section |
downstream_power |
W | Cumulative power of all downstream loads |
voltage_drop |
V | Voltage drop in this section |
Formulas
Conductor Resistance at Temperature
Where \(R_{20}\) is the conductor resistance at 20 °C (from lookup table), \(\alpha\) is the temperature coefficient, and \(T\) is the operating temperature in °C.
| Material | \(\alpha\) (/°C) |
|---|---|
| Copper | 0.00393 |
| Aluminium | 0.00403 |
Section Current
Each cable section carries the cumulative current of all downstream lights. Section 1 (supply to first light) carries the total circuit current. As each light taps off, the remaining downstream power decreases and so does the section current.
Section Voltage Drop
Where the factor of 2 accounts for active and neutral conductors (go-and-return path), \(L_i\) is the cable section length in meters, and \(R(T)\) is in Ω/km. Division by 1000 converts the length–resistance product from m·Ω/km to Ω.
Cumulative Voltage Drop
The total voltage drop at light \(n\) is the sum of all section voltage drops from the supply to that light.
Voltage at Light
Voltage Drop Percentage
Compliance Check
Both the voltage drop limit (voltage_drop_limit, default 3% — the
IEC 60364-5-52 lighting value; AS/NZS 3000 allows 5% from the point of supply)
and the indicative cable current rating must be satisfied for an overall PASS.
Key Lookup Tables
Copper Resistance at 20 °C (Ω/km)
| CSA (mm²) | R20 (Ω/km) | Max Current (A) |
|---|---|---|
| 0.75 | 24.5 | 6 |
| 1.0 | 18.1 | 10 |
| 1.5 | 12.1 | 16 |
| 2.5 | 7.41 | 25 |
| 4.0 | 4.61 | 32 |
| 6.0 | 3.08 | 40 |
| 10 | 1.83 | 63 |
| 16 | 1.15 | 85 |
| 25 | 0.727 | 110 |
Aluminium Resistance at 20 °C (Ω/km)
IEC 60228 lists aluminium conductors from 10 mm²; the 2.5, 4 and 6 mm² aluminium values are the component's own (about 1.64× the copper value).
| CSA (mm²) | R20 (Ω/km) | Max Current (A) |
|---|---|---|
| 2.5 | 12.2 | 20 |
| 4.0 | 7.56 | 27 |
| 6.0 | 5.08 | 35 |
| 10 | 3.08 | 50 |
| 16 | 1.91 | 68 |
| 25 | 1.20 | 88 |
Worked Examples
The 7 examples below are the validation cases for this calculation. Each one was produced by the calculation engine from the inputs shown, every figure was checked against the independent reference quoted at the end of the example, and the same cases are run against every engine build (see validation scorecard, tool fe_calc_voltage_drop; worked examples for every calculation).
| # | Case | Cable | Lights / load | R(T) (Ω/km) | Worst light | Max VD | Total vs limit | Result |
|---|---|---|---|---|---|---|---|---|
| 1 | Four LED downlights on 1.5 mm² Cu (c0018) | 1.5 mm² Cu, 230 V | 4 / 95 W | 12.5755 | 4 (229.7 V) | 0.297 V (0.129 %) | 0.129 / 3 % | PASS |
| 2 | Three 18 W downlights on 1.5 mm² Cu | 1.5 mm² Cu, 230 V | 3 / 54 W | 12.5755 | 3 (229.9 V) | 0.114 V (0.050 %) | 0.050 / 3 % | PASS |
| 3 | Three 200 W lights 50 m apart on 2.5 mm² | 2.5 mm² Cu, 230 V | 3 / 600 W | 7.7012 | 3 (226.0 V) | 4.018 V (1.747 %) | 1.747 / 3 % | PASS |
| 4 | Warehouse high-bays on 2.5 mm² (c0018) | 2.5 mm² Cu, 230 V | 5 / 1,250 W | 8.1380 | 5 (219.8 V) | 10.242 V (4.453 %) | 4.453 / 3 % | FAIL |
| 5 | Aluminium 4 mm² at 50 °C (c0018) | 4 mm² Al, 230 V | 3 / 300 W | 8.4740 | 3 (229.2 V) | 0.774 V (0.336 %) | 0.336 / 3 % | PASS |
| 6 | 18 × 150 W on 1 mm²: current screen fails | 1 mm² Cu, 240 V | 18 / 2,700 W | 20.9453 | 18 (230.6 V) | 9.425 V (3.927 %) | 3.927 / 5 % | FAIL |
| 7 | 110 V site lighting, 8 × 60 W on 2.5 mm² | 2.5 mm² Cu, 110 V | 8 / 480 W | 8.2836 | 8 (105.7 V) | 4.338 V (3.943 %) | 3.943 / 5 % | PASS |
Example 1 — Four LED downlights on 1.5 mm² Cu (c0018)
The c0018 specification example: the same string as c0015 plus the indicative 16 A current screen.
Given: 4 lights fed in sequence on 1.5 mm² Cu (active + neutral), 230 V single-phase, cos φ = 1, conductor at 30 °C; (section length, light power) from the supply: (15 m, 20 W), (8 m, 30 W), (10 m, 25 W), (12 m, 20 W); voltage-drop limit 3 % from the point of supply (tool default). Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 12.1 × (1 + 0.00393 × (30 − 20)) = 12.57553 Ω/km | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 95 W; supply current I1 = ΣP / (V × cos φ) = 95 / (230 × 1) = 0.4130 A | ||||||||||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||||||||||
| Worst light | Light 4: ΣΔV = 0.2969 V → 0.2969 / 230 × 100 = 0.129 %; minimum voltage 229.70 V | ||||||||||||||||||||||||||||||||||||||||
| Voltage drop check | 0.129 % ≤ 3 %? → 0.129 vs limit 3.000 % PASS | ||||||||||||||||||||||||||||||||||||||||
| Current screen | supply current 0.413 A vs the component's indicative 16 A for 1.5 mm² Cu → 0.41 vs limit 16.00 A PASS | ||||||||||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 3.00 / 0.129 = 23.24 × the present load | ||||||||||||||||||||||||||||||||||||||||
| Result | 2/2 checks pass → PASS; worst light 4 at 0.129 % total; governing: voltage drop | ||||||||||||||||||||||||||||||||||||||||
| Reference | c0018 CLAUDE.md 'Expected Results for Test Case' (95 W, ~0.413 A) refined by hand: R(30 °C) = 12.5755 Ω/km; ΣΔV = 0.2969 V = 0.129 %, V = 229.70 V; 0.413 A ≤ 16 A (validation case c0018-4-lights-1mm5-230v) |
Example 2 — Three 18 W downlights on 1.5 mm² Cu
The help page's first example: a very light load, drop a twentieth of a percent.
Given: 3 lights fed in sequence on 1.5 mm² Cu (active + neutral), 230 V single-phase, cos φ = 1, conductor at 30 °C; (section length, light power) from the supply: (10 m, 18 W), (8 m, 18 W), (12 m, 18 W); voltage-drop limit 3 % from the point of supply (tool default). Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 12.1 × (1 + 0.00393 × (30 − 20)) = 12.57553 Ω/km | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 54 W; supply current I1 = ΣP / (V × cos φ) = 54 / (230 × 1) = 0.2348 A | ||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||
| Worst light | Light 3: ΣΔV = 0.1142 V → 0.1142 / 230 × 100 = 0.050 %; minimum voltage 229.89 V | ||||||||||||||||||||||||||||||||
| Voltage drop check | 0.050 % ≤ 3 %? → 0.050 vs limit 3.000 % PASS | ||||||||||||||||||||||||||||||||
| Current screen | supply current 0.235 A vs the component's indicative 16 A for 1.5 mm² Cu → 0.23 vs limit 16.00 A PASS | ||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 3.00 / 0.050 = 60.44 × the present load | ||||||||||||||||||||||||||||||||
| Result | 2/2 checks pass → PASS; worst light 3 at 0.050 % total; governing: voltage drop | ||||||||||||||||||||||||||||||||
| Reference | Hand calculation: R(30 °C) = 12.5755 Ω/km; I = 54/36/18 W ÷ 230 V = 0.23478/0.15652/0.07826 A; ΔV = 2 × 12.5755/1000 × (0.23478 × 10 + 0.15652 × 8 + 0.07826 × 12) = 0.0590 + 0.0315 + 0.0236 = 0.1142 V = 0.050 % (validation case c0018-3x18w-1mm5) |
Example 3 — Three 200 W lights 50 m apart on 2.5 mm²
Long equal sections: the first section carries the whole load and contributes half the drop.
Given: 3 lights fed in sequence on 2.5 mm² Cu (active + neutral), 230 V single-phase, cos φ = 1, conductor at 30 °C; (section length, light power) from the supply: 3 × (50 m, 200 W); voltage-drop limit 3 % from the point of supply (tool default). Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 7.41 × (1 + 0.00393 × (30 − 20)) = 7.70121 Ω/km | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 600 W; supply current I1 = ΣP / (V × cos φ) = 600 / (230 × 1) = 2.6087 A | ||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||
| Worst light | Light 3: ΣΔV = 4.0180 V → 4.0180 / 230 × 100 = 1.747 %; minimum voltage 225.98 V | ||||||||||||||||||||||||||||||||
| Voltage drop check | 1.747 % ≤ 3 %? → 1.747 vs limit 3.000 % PASS | ||||||||||||||||||||||||||||||||
| Current screen | supply current 2.609 A vs the component's indicative 25 A for 2.5 mm² Cu → 2.61 vs limit 25.00 A PASS | ||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 3.00 / 1.747 = 1.72 × the present load | ||||||||||||||||||||||||||||||||
| Result | 2/2 checks pass → PASS; worst light 3 at 1.747 % total; governing: voltage drop | ||||||||||||||||||||||||||||||||
| Reference | Hand calculation: R = 7.41 × 1.0393 = 7.70121 Ω/km; I = 600/400/200 W ÷ 230 V, ΣI = 5.21739 A; ΔV = 2 × 50 × 7.70121/1000 × 5.21739 = 4.0180 V = 1.747 % (validation case c0018-3-lights-2mm5-200w-50m) |
Example 4 — Warehouse high-bays on 2.5 mm² (c0018)
The help page's failing run on c0018: voltage drop fails while the 25 A current screen passes.
Given: 5 lights fed in sequence on 2.5 mm² Cu (active + neutral), 230 V single-phase, cos φ = 0.95, conductor at 45 °C; (section length, light power) from the supply: (50 m, 250 W), 4 × (30 m, 250 W); voltage-drop limit 3 % from the point of supply (tool default). Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 7.41 × (1 + 0.00393 × (45 − 20)) = 8.13803 Ω/km | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 1,250 W; supply current I1 = ΣP / (V × cos φ) = 1,250 / (230 × 0.95) = 5.7208 A | ||||||||||||||||||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Worst light | Light 5: ΣΔV = 10.2424 V → 10.2424 / 230 × 100 = 4.453 %; minimum voltage 219.76 V | ||||||||||||||||||||||||||||||||||||||||||||||||
| Voltage drop check | 4.453 % ≤ 3 %? → 4.453 vs limit 3.000 % FAIL | ||||||||||||||||||||||||||||||||||||||||||||||||
| Current screen | supply current 5.721 A vs the component's indicative 25 A for 2.5 mm² Cu → 5.72 vs limit 25.00 A PASS | ||||||||||||||||||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 3.00 / 4.453 = 0.67 × the present load | ||||||||||||||||||||||||||||||||||||||||||||||||
| Result | 1/2 checks pass → FAIL; worst light 5 at 4.453 % total; governing: voltage drop. Voltage drop of 4.45% exceeds the limit of 3% | ||||||||||||||||||||||||||||||||||||||||||||||||
| Reference | Hand calculation: R(45 °C) = 8.13803 Ω/km; ΔV = 4.6556 + 2.2347 + 1.6760 + 1.1173 + 0.5587 = 10.2424 V = 4.453 % > 3 %; supply current 1250 ÷ 218.5 = 5.721 A ≤ 25 A (validation case c0018-warehouse-5x250w-2mm5-fail) |
Example 5 — Aluminium 4 mm² at 50 °C (c0018)
The help page's aluminium example on c0018, with the 27 A aluminium current screen.
Given: 3 lights fed in sequence on 4 mm² Al (active + neutral), 230 V single-phase, cos φ = 1, conductor at 50 °C; (section length, light power) from the supply: (20 m, 100 W), 2 × (15 m, 100 W); voltage-drop limit 3 % from the point of supply (tool default). Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 7.56 × (1 + 0.00403 × (50 − 20)) = 8.47400 Ω/km | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 300 W; supply current I1 = ΣP / (V × cos φ) = 300 / (230 × 1) = 1.3043 A | ||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||
| Worst light | Light 3: ΣΔV = 0.7737 V → 0.7737 / 230 × 100 = 0.336 %; minimum voltage 229.23 V | ||||||||||||||||||||||||||||||||
| Voltage drop check | 0.336 % ≤ 3 %? → 0.336 vs limit 3.000 % PASS | ||||||||||||||||||||||||||||||||
| Current screen | supply current 1.304 A vs the component's indicative 27 A for 4 mm² Al → 1.30 vs limit 27.00 A PASS | ||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 3.00 / 0.336 = 8.92 × the present load | ||||||||||||||||||||||||||||||||
| Result | 2/2 checks pass → PASS; worst light 3 at 0.336 % total; governing: voltage drop | ||||||||||||||||||||||||||||||||
| Reference | Hand calculation: R(50 °C) = 7.56 × 1.1209 = 8.4740 Ω/km; ΔV = 0.4421 + 0.2211 + 0.1105 = 0.7737 V = 0.336 %; 1.304 A ≤ 27 A (validation case c0018-al-4mm2-50c-3x100w) |
Example 6 — 18 × 150 W on 1 mm²: current screen fails
Closely spaced heavy fittings: the drop is within 5 % but 11.8 A exceeds the 10 A indicative rating, which governs.
Given: 18 lights fed in sequence on 1 mm² Cu (active + neutral), 240 V single-phase, cos φ = 0.95, conductor at 60 °C; (section length, light power) from the supply: 18 × (2 m, 150 W); voltage-drop limit 5 % from the point of supply. Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 18.1 × (1 + 0.00393 × (60 − 20)) = 20.94532 Ω/km | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 2,700 W; supply current I1 = ΣP / (V × cos φ) = 2,700 / (240 × 0.95) = 11.8421 A | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Worst light | Light 18: ΣΔV = 9.4254 V → 9.4254 / 240 × 100 = 3.927 %; minimum voltage 230.57 V | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Voltage drop check | 3.927 % ≤ 5 %? → 3.927 vs limit 5.000 % PASS | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Current screen | supply current 11.842 A vs the component's indicative 10 A for 1 mm² Cu → 11.84 vs limit 10.00 A FAIL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 5.00 / 3.927 = 1.27 × the present load | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Result | 1/2 checks pass → FAIL; worst light 18 at 3.927 % total; governing: indicative current capacity. Current of 11.84A exceeds recommended capacity of 10A for 1.0mm² cable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Reference | Hand calculation: R(60 °C) = 18.1 × (1 + 0.00393 × 40) = 20.94532 Ω/km; I_k = (19 − k) × 150 ÷ (240 × 0.95); ΣI = 171 × 150 ÷ 228 = 112.5 A; ΔV = 2 × 2 × 20.94532/1000 × 112.5 = 9.4254 V = 3.927 % ≤ 5 %; supply current 2700 ÷ 228 = 11.842 A > 10 A (validation case c0018-1mm2-18x150w-capacity-fail) |
Example 7 — 110 V site lighting, 8 × 60 W on 2.5 mm²
A reduced-voltage supply: the same watts draw twice the current, so the percentage drop is far higher.
Given: 8 lights fed in sequence on 2.5 mm² Cu (active + neutral), 110 V single-phase, cos φ = 0.9, conductor at 50 °C; (section length, light power) from the supply: 8 × (12 m, 60 W); voltage-drop limit 5 % from the point of supply. Engine c0018 (with indicative current screen).
| Resistance | R(T) = R20 × (1 + α(T − 20)) = 7.41 × (1 + 0.00393 × (50 − 20)) = 8.28364 Ω/km | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Load | ΣP = 480 W; supply current I1 = ΣP / (V × cos φ) = 480 / (110 × 0.9) = 4.8485 A | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sections | Ik = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Worst light | Light 8: ΣΔV = 4.3376 V → 4.3376 / 110 × 100 = 3.943 %; minimum voltage 105.66 V | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Voltage drop check | 3.943 % ≤ 5 %? → 3.943 vs limit 5.000 % PASS | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Current screen | supply current 4.848 A vs the component's indicative 25 A for 2.5 mm² Cu → 4.85 vs limit 25.00 A PASS | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Headroom | Load at the limit = (limit − upstream) / max VD = 5.00 / 3.943 = 1.27 × the present load | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Result | 2/2 checks pass → PASS; worst light 8 at 3.943 % total; governing: voltage drop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Reference | Hand calculation: R(50 °C) = 7.41 × (1 + 0.00393 × 30) = 8.28364 Ω/km; I_k = (9 − k) × 60 ÷ (110 × 0.9); ΣI = 36 × 60 ÷ 99 = 21.8182 A; ΔV = 2 × 12 × 8.28364/1000 × 21.8182 = 4.3376 V = 3.943 % of 110 V; V = 105.66 V (validation case c0018-110v-site-lighting-2mm5) |
Standards & References
- IEC 60364-5-52 — Low-voltage electrical installations — Selection and erection of electrical equipment — Wiring systems
- BS 7671 (IET Wiring Regulations) — Requirements for electrical installations, Appendix 12 (voltage drop)
- AS/NZS 3000:2018 — Electrical installations (Wiring Rules), Clause 3.6 (voltage drop)
- NEC (NFPA 70) — National Electrical Code, Articles 210.19(A) and 215.2(A) (voltage drop recommendations)
- IEC 60228 — Conductors of insulated cables (resistance values at 20 °C)
- Standard voltage drop limit for lighting sub-circuits: typically 3% (configurable per local regulations)
Tips & Limitations
Tips
- The default 3% limit is typical for lighting sub-circuits. Some standards allow up to 5% total (main + sub-circuit combined).
- The worst voltage drop always occurs at the last (most distant) light because cumulative drops accumulate along the cable run.
- LED drivers with wide input voltage ranges (e.g., 180–265 V) tolerate higher voltage drops than fluorescent or incandescent loads.
- For long runs, increasing cable CSA by one standard size often eliminates voltage drop issues cost-effectively.
- Power factor for modern LED luminaires is typically 0.95–1.0. Older magnetic ballast fluorescents may be 0.5–0.6 without correction.
- Higher ambient temperatures increase cable resistance — account for ceiling void, roof space, or enclosed luminaire temperatures.
- Use the
calculate_recommended_cable_size()helper to automatically find the minimum compliant cable size when a circuit fails.
Limitations
- Single-phase only — three-phase lighting circuits are not supported by this calculator.
- Resistive model only — cable reactance is not included. For small lighting conductors (≤ 16 mm²) reactance is negligible; for larger conductors this is slightly non-conservative.
- No inrush current analysis — LED driver inrush currents at switch-on are not modelled. This calculator is for steady-state voltage drop only.
- Uniform cable — the same conductor material and CSA is assumed for all sections. Mixed cable sizes are not supported.
- Simplified current capacity check — the built-in over-current warning uses an indicative rating table. Always verify current capacity separately using the full cable sizing calculator (c0030 / c0031).
- Balanced loading assumed — each light draws its rated power at the supply voltage. Voltage-dependent load variation is not modelled.
- CSA range limited to 25 mm² — the lookup tables cover 0.75–25 mm² for copper and 2.5–25 mm² for aluminium. For sizes outside this range, resistance is calculated from resistivity (\(\rho \times 1000 / A\)).
Developer Guide
Architecture
File layout:
components/c0018_ac_light_circuit/component.py— Component registration, parameter schema, summary cards builder, QR code generatorcomponents/c0018_ac_light_circuit/calculations.py— Pure math functions, resistance lookup tables, and current rating tables (no Django dependencies)components/c0018_ac_light_circuit/equations.py— MathJax equation builder for report generation (usescalcs.core.mathjax_utils)components/c0018_ac_light_circuit/excel_generator.py— Excel workbook generation with per-light breakdown
The calculator class is ACLightCircuitCalculator,
extending ElectricalCalculator. The lights
array input is passed directly to the pure calculation function
calculate_ac_light_circuit().
Lookup tables are defined as Python dicts in
calculations.py:
COPPER_RESISTANCE_20C— Cu R at 20 °C (Ω/km), keyed by CSA string (0.75–25 mm²)ALUMINIUM_RESISTANCE_20C— Al R at 20 °C (Ω/km), keyed by CSA string (2.5–25 mm²)MAX_CURRENT_COPPER— Indicative current ratings for copper conductorsMAX_CURRENT_ALUMINIUM— Indicative current ratings for aluminium conductorsRESISTIVITY_20C— Resistivity values (Cu: 0.01724, Al: 0.0283 Ω·mm²/m) used as fallback when CSA is not in the lookup table
Temperature constants in TEMP_COEFFICIENT:
- Copper: 0.00393 /°C
- Aluminium: 0.00403 /°C
Code Paths
Key functions in calculations.py:
| Function | Purpose |
|---|---|
get_cable_resistance(material, csa, temperature) |
Lookup R20 from table (or calculate from resistivity), apply temperature correction, return Ω/km |
calculate_current(power, voltage, power_factor) |
Compute \(I = P / (V \times \cos\phi)\); returns 0 if voltage or PF is ≤ 0 |
calculate_voltage_drop_section(current, length, resistance) |
Compute \(\Delta V = 2 \times I \times L \times R / 1000\) for a single cable section |
calculate_ac_light_circuit(data) |
Main entry point — iterates through lights, computes section currents (from cumulative downstream power), voltage drops, cumulative drops, compliance, and warnings. Returns complete results dict. |
calculate_recommended_cable_size(data) |
Iterates standard cable sizes from current upward, returns the first size that achieves compliance (or None) |
Key functions in component.py:
| Function / Class | Purpose |
|---|---|
ACLightCircuitCalculator.validate_parameters() |
Validates supply voltage, num_lights, lights array length match, individual light power > 0 and cable_length > 0 |
ACLightCircuitCalculator.calculate() |
Extracts parameters, calls calculate_ac_light_circuit(),
attaches parameters to results for equation builder |
equation_builder(calculation_results) |
Ensures inputs structure exists, delegates to
equations.build_equations() for report articles |
summary_cards_builder(results) |
Returns 3 summary cards: max VD% (red/green), min voltage, total power |
register_component(registry) |
Registers calc type 'ac_light_circuit' with schema,
builders, QR code generator, and sidebar template |
Calculation flow:
- Calculate R(T) from lookup table + temperature correction via
get_cable_resistance() - Sum total power from all lights
- Iterate through lights: for each section, compute current from remaining downstream power divided by \(V \times \cos\phi\)
- Compute \(\Delta V = 2 \times I \times L \times R / 1000\) per section
- Accumulate voltage drops, derive voltage at each light
- Find maximum VD%, check against
voltage_drop_limit - Check maximum current against cable rating table
- Generate warnings for over-current, excessive VD, or low PF
Testing
Running tests:
pytest calcs/components/c0018_ac_light_circuit/ -v
pytest calcs/test_c0018* -v
How to extend:
- To add new conductor materials, define a new resistance table dict
and temperature coefficient in
calculations.py, then updateTEMP_COEFFICIENT,RESISTIVITY_20C, and theconductor_materialenum inPARAMETER_SCHEMA. - To support mixed cable sizes per section, refactor
calculate_ac_light_circuit()to accept a per-section CSA value in thelightsarray and callget_cable_resistance()once per section. - To add reactance for larger conductors, introduce a reactance lookup table and modify the section voltage drop formula to use impedance \(Z = \sqrt{R^2 + X^2}\) instead of resistance alone.
- The worked examples above are the
fe_calc_voltage_dropvalidation cases (mcp_public/validation/cases/fe_calc_voltage_drop/c0018-*.json); regenerate withpython manage.py generate_help_examples --tool fe_calc_voltage_drop. - Write tests covering edge cases: single light, 20 lights (max), very long runs, aluminium with high temperature, PF < 1, CSA values not in lookup table (fallback to resistivity).