Help

AC Light Circuit Voltage Drop

Jump to section

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

\[ R(T) = R_{20} \times \bigl(1 + \alpha \times (T - 20)\bigr) \quad (\Omega/\text{km}) \]

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)
Copper0.00393
Aluminium0.00403

Section Current

\[ I_{\text{section},i} = \frac{\displaystyle\sum_{k=i}^{n} P_k}{V_{\text{supply}} \times \cos\phi} \]

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

\[ \Delta V_i = \frac{2 \times I_{\text{section},i} \times L_i \times R(T)}{1000} \]

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

\[ \Delta V_{\text{cum},n} = \sum_{i=1}^{n} \Delta V_i \]

The total voltage drop at light \(n\) is the sum of all section voltage drops from the supply to that light.

Voltage at Light

\[ V_{\text{light},n} = V_{\text{supply}} - \Delta V_{\text{cum},n} \]

Voltage Drop Percentage

\[ V_{d\%,n} = \frac{\Delta V_{\text{cum},n}}{V_{\text{supply}}} \times 100 \]

Compliance Check

\[ \max(V_{d\%,n}) \leq V_{d,\text{limit}\%} \;\;\text{AND}\;\; I_{\text{max}} \leq I_{\text{cable rating}} \implies \text{PASS} \]

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.7524.56
1.018.110
1.512.116
2.57.4125
4.04.6132
6.03.0840
101.8363
161.1585
250.727110

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.512.220
4.07.5627
6.05.0835
103.0850
161.9168
251.2088

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).

#CaseCableLights / loadR(T) (Ω/km)Worst lightMax VDTotal vs limitResult
1Four LED downlights on 1.5 mm² Cu (c0018)1.5 mm² Cu, 230 V4 / 95 W12.57554 (229.7 V)0.297 V (0.129 %)0.129 / 3 %PASS
2Three 18 W downlights on 1.5 mm² Cu1.5 mm² Cu, 230 V3 / 54 W12.57553 (229.9 V)0.114 V (0.050 %)0.050 / 3 %PASS
3Three 200 W lights 50 m apart on 2.5 mm²2.5 mm² Cu, 230 V3 / 600 W7.70123 (226.0 V)4.018 V (1.747 %)1.747 / 3 %PASS
4Warehouse high-bays on 2.5 mm² (c0018)2.5 mm² Cu, 230 V5 / 1,250 W8.13805 (219.8 V)10.242 V (4.453 %)4.453 / 3 %FAIL
5Aluminium 4 mm² at 50 °C (c0018)4 mm² Al, 230 V3 / 300 W8.47403 (229.2 V)0.774 V (0.336 %)0.336 / 3 %PASS
618 × 150 W on 1 mm²: current screen fails1 mm² Cu, 240 V18 / 2,700 W20.945318 (230.6 V)9.425 V (3.927 %)3.927 / 5 %FAIL
7110 V site lighting, 8 × 60 W on 2.5 mm²2.5 mm² Cu, 110 V8 / 480 W8.28368 (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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
115950.41302 × 0.4130 × 15 × 12.5755/1000 = 0.15580.1558229.840.068
28750.32612 × 0.3261 × 8 × 12.5755/1000 = 0.06560.2214229.780.096
310450.19572 × 0.1957 × 10 × 12.5755/1000 = 0.04920.2706229.730.118
412200.08702 × 0.0870 × 12 × 12.5755/1000 = 0.02620.2969229.700.129
Worst lightLight 4: ΣΔV = 0.2969 V → 0.2969 / 230 × 100 = 0.129 %; minimum voltage 229.70 V
Voltage drop check0.129 % ≤ 3 %? → 0.129 vs limit 3.000 % PASS
Current screensupply current 0.413 A vs the component's indicative 16 A for 1.5 mm² Cu → 0.41 vs limit 16.00 A PASS
HeadroomLoad at the limit = (limit − upstream) / max VD = 3.00 / 0.129 = 23.24 × the present load
Result2/2 checks pass → PASS; worst light 4 at 0.129 % total; governing: voltage drop
Referencec0018 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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
110540.23482 × 0.2348 × 10 × 12.5755/1000 = 0.05910.0591229.940.026
28360.15652 × 0.1565 × 8 × 12.5755/1000 = 0.03150.0905229.910.039
312180.07832 × 0.0783 × 12 × 12.5755/1000 = 0.02360.1142229.890.050
Worst lightLight 3: ΣΔV = 0.1142 V → 0.1142 / 230 × 100 = 0.050 %; minimum voltage 229.89 V
Voltage drop check0.050 % ≤ 3 %? → 0.050 vs limit 3.000 % PASS
Current screensupply current 0.235 A vs the component's indicative 16 A for 1.5 mm² Cu → 0.23 vs limit 16.00 A PASS
HeadroomLoad at the limit = (limit − upstream) / max VD = 3.00 / 0.050 = 60.44 × the present load
Result2/2 checks pass → PASS; worst light 3 at 0.050 % total; governing: voltage drop
ReferenceHand 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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
1506002.60872 × 2.6087 × 50 × 7.7012/1000 = 2.00902.0090227.990.873
2504001.73912 × 1.7391 × 50 × 7.7012/1000 = 1.33933.3484226.651.456
3502000.86962 × 0.8696 × 50 × 7.7012/1000 = 0.66974.0180225.981.747
Worst lightLight 3: ΣΔV = 4.0180 V → 4.0180 / 230 × 100 = 1.747 %; minimum voltage 225.98 V
Voltage drop check1.747 % ≤ 3 %? → 1.747 vs limit 3.000 % PASS
Current screensupply current 2.609 A vs the component's indicative 25 A for 2.5 mm² Cu → 2.61 vs limit 25.00 A PASS
HeadroomLoad at the limit = (limit − upstream) / max VD = 3.00 / 1.747 = 1.72 × the present load
Result2/2 checks pass → PASS; worst light 3 at 1.747 % total; governing: voltage drop
ReferenceHand 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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
1501,2505.72082 × 5.7208 × 50 × 8.1380/1000 = 4.65564.6556225.342.024
2301,0004.57672 × 4.5767 × 30 × 8.1380/1000 = 2.23476.8903223.112.996
3307503.43252 × 3.4325 × 30 × 8.1380/1000 = 1.67608.5663221.433.724
4305002.28832 × 2.2883 × 30 × 8.1380/1000 = 1.11749.6837220.324.210
5302501.14422 × 1.1442 × 30 × 8.1380/1000 = 0.558710.2424219.764.453
Worst lightLight 5: ΣΔV = 10.2424 V → 10.2424 / 230 × 100 = 4.453 %; minimum voltage 219.76 V
Voltage drop check4.453 % ≤ 3 %? → 4.453 vs limit 3.000 % FAIL
Current screensupply current 5.721 A vs the component's indicative 25 A for 2.5 mm² Cu → 5.72 vs limit 25.00 A PASS
HeadroomLoad at the limit = (limit − upstream) / max VD = 3.00 / 4.453 = 0.67 × the present load
Result1/2 checks pass → FAIL; worst light 5 at 4.453 % total; governing: voltage drop. Voltage drop of 4.45% exceeds the limit of 3%
ReferenceHand 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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
1203001.30432 × 1.3043 × 20 × 8.4740/1000 = 0.44210.4421229.560.192
2152000.86962 × 0.8696 × 15 × 8.4740/1000 = 0.22110.6632229.340.288
3151000.43482 × 0.4348 × 15 × 8.4740/1000 = 0.11050.7737229.230.336
Worst lightLight 3: ΣΔV = 0.7737 V → 0.7737 / 230 × 100 = 0.336 %; minimum voltage 229.23 V
Voltage drop check0.336 % ≤ 3 %? → 0.336 vs limit 3.000 % PASS
Current screensupply current 1.304 A vs the component's indicative 27 A for 4 mm² Al → 1.30 vs limit 27.00 A PASS
HeadroomLoad at the limit = (limit − upstream) / max VD = 3.00 / 0.336 = 8.92 × the present load
Result2/2 checks pass → PASS; worst light 3 at 0.336 % total; governing: voltage drop
ReferenceHand 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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
122,70011.84212 × 11.8421 × 2 × 20.9453/1000 = 0.99210.9921239.010.413
222,55011.18422 × 11.1842 × 2 × 20.9453/1000 = 0.93701.9292238.070.804
322,40010.52632 × 10.5263 × 2 × 20.9453/1000 = 0.88192.8111237.191.171
422,2509.86842 × 9.8684 × 2 × 20.9453/1000 = 0.82683.6379236.361.516
522,1009.21052 × 9.2105 × 2 × 20.9453/1000 = 0.77174.4095235.591.837
621,9508.55262 × 8.5526 × 2 × 20.9453/1000 = 0.71665.1261234.872.136
721,8007.89472 × 7.8947 × 2 × 20.9453/1000 = 0.66145.7875234.212.411
821,6507.23682 × 7.2368 × 2 × 20.9453/1000 = 0.60636.3938233.612.664
921,5006.57892 × 6.5789 × 2 × 20.9453/1000 = 0.55126.9450233.052.894
1021,3505.92112 × 5.9211 × 2 × 20.9453/1000 = 0.49617.4411232.563.100
1121,2005.26322 × 5.2632 × 2 × 20.9453/1000 = 0.44107.8821232.123.284
1221,0504.60532 × 4.6053 × 2 × 20.9453/1000 = 0.38588.2679231.733.445
1329003.94742 × 3.9474 × 2 × 20.9453/1000 = 0.33078.5986231.403.583
1427503.28952 × 3.2895 × 2 × 20.9453/1000 = 0.27568.8742231.133.698
1526002.63162 × 2.6316 × 2 × 20.9453/1000 = 0.22059.0947230.913.789
1624501.97372 × 1.9737 × 2 × 20.9453/1000 = 0.16549.2600230.743.858
1723001.31582 × 1.3158 × 2 × 20.9453/1000 = 0.11029.3703230.633.904
1821500.65792 × 0.6579 × 2 × 20.9453/1000 = 0.05519.4254230.573.927
Worst lightLight 18: ΣΔV = 9.4254 V → 9.4254 / 240 × 100 = 3.927 %; minimum voltage 230.57 V
Voltage drop check3.927 % ≤ 5 %? → 3.927 vs limit 5.000 % PASS
Current screensupply current 11.842 A vs the component's indicative 10 A for 1 mm² Cu → 11.84 vs limit 10.00 A FAIL
HeadroomLoad at the limit = (limit − upstream) / max VD = 5.00 / 3.927 = 1.27 × the present load
Result1/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
ReferenceHand 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).

ResistanceR(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
SectionsIk = ΣPdownstream / (V × cos φ); ΔVk = 2 × Ik × Lk × R / 1000; cumulative from the supply:
kL (m)ΣP (W)Ik (A)ΔVk (V)ΣΔV (V)V (V)VD %
1124804.84852 × 4.8485 × 12 × 8.2836/1000 = 0.96390.9639109.040.876
2124204.24242 × 4.2424 × 12 × 8.2836/1000 = 0.84341.8073108.191.643
3123603.63642 × 3.6364 × 12 × 8.2836/1000 = 0.72292.5303107.472.300
4123003.03032 × 3.0303 × 12 × 8.2836/1000 = 0.60243.1327106.872.848
5122402.42422 × 2.4242 × 12 × 8.2836/1000 = 0.48203.6147106.393.286
6121801.81822 × 1.8182 × 12 × 8.2836/1000 = 0.36153.9761106.023.615
7121201.21212 × 1.2121 × 12 × 8.2836/1000 = 0.24104.2171105.783.834
812600.60612 × 0.6061 × 12 × 8.2836/1000 = 0.12054.3376105.663.943
Worst lightLight 8: ΣΔV = 4.3376 V → 4.3376 / 110 × 100 = 3.943 %; minimum voltage 105.66 V
Voltage drop check3.943 % ≤ 5 %? → 3.943 vs limit 5.000 % PASS
Current screensupply current 4.848 A vs the component's indicative 25 A for 2.5 mm² Cu → 4.85 vs limit 25.00 A PASS
HeadroomLoad at the limit = (limit − upstream) / max VD = 5.00 / 3.943 = 1.27 × the present load
Result2/2 checks pass → PASS; worst light 8 at 3.943 % total; governing: voltage drop
ReferenceHand 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 generator
  • components/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 (uses calcs.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 conductors
  • MAX_CURRENT_ALUMINIUM — Indicative current ratings for aluminium conductors
  • RESISTIVITY_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:

  1. Calculate R(T) from lookup table + temperature correction via get_cable_resistance()
  2. Sum total power from all lights
  3. Iterate through lights: for each section, compute current from remaining downstream power divided by \(V \times \cos\phi\)
  4. Compute \(\Delta V = 2 \times I \times L \times R / 1000\) per section
  5. Accumulate voltage drops, derive voltage at each light
  6. Find maximum VD%, check against voltage_drop_limit
  7. Check maximum current against cable rating table
  8. 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:

  1. To add new conductor materials, define a new resistance table dict and temperature coefficient in calculations.py, then update TEMP_COEFFICIENT, RESISTIVITY_20C, and the conductor_material enum in PARAMETER_SCHEMA.
  2. To support mixed cable sizes per section, refactor calculate_ac_light_circuit() to accept a per-section CSA value in the lights array and call get_cable_resistance() once per section.
  3. 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.
  4. The worked examples above are the fe_calc_voltage_drop validation cases (mcp_public/validation/cases/fe_calc_voltage_drop/c0018-*.json); regenerate with python manage.py generate_help_examples --tool fe_calc_voltage_drop.
  5. 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).