From 8b7fb4bc4df7897224f0927b1feaf13fe1cdaac0 Mon Sep 17 00:00:00 2001 From: FreneticScribbler Date: Sat, 13 May 2023 16:04:36 +0100 Subject: [PATCH] Initial work on web based voltage calculator --- powerweb/power_calcs.py | 39 +++++++++++++++++++++++++++++++++++++++ powerweb/web.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 powerweb/power_calcs.py create mode 100644 powerweb/web.py diff --git a/powerweb/power_calcs.py b/powerweb/power_calcs.py new file mode 100644 index 0000000..80afc93 --- /dev/null +++ b/powerweb/power_calcs.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + +voltage_limit = 11.5 + +def calculate(cabletype, assumed_load, length): + cable_size = { + "13": 1.5, + "16": 2.5, + "32": 6.0, + "63": 16, + "125": 35, + } + single_phase = { + 1.5: 31, + 2.5: 19, + 6.0: 7.9, + 16: 2.9, + } + three_phase = { + 1.5: 27, + 2.5: 16, + 6.0: 6.8, + 16: 2.5, + 35: 1.1, + } + + drop = 0 + if "/3" in cabletype: + drop = three_phase[cable_size[cabletype[:-2]]] + else: + drop = single_phase[cable_size[cabletype]] + + total_drop = drop * assumed_load * length / 1000 + max_length = (voltage_limit * 1000) / (drop * assumed_load) + r = total_drop / assumed_load + pfc = 230 / r + + #print(f"Estimated PFC is {pfc:.1f}A") + return drop, total_drop, max_length, pfc diff --git a/powerweb/web.py b/powerweb/web.py new file mode 100644 index 0000000..8ccd7b6 --- /dev/null +++ b/powerweb/web.py @@ -0,0 +1,30 @@ +from bottle import get, post, request, run, route +from power_calcs import calculate + +voltage_limit = 11.5 + +@get('/') +def main(): + return ''' +
+ Cable Type: + Assumed Load: + Length: + +
+ ''' + +@post('/') +def do_main(): + drop, total_drop, max_length, pfc = calculate(request.forms.get('cabletype'), float(request.forms.get('assumed_load')), int(request.forms.get('length'))) + page = "" + page += f"Voltage Drop (per ampere per metre): {drop}mV/A/m
" + page += f"Total drop at {request.forms.get('assumed_load')}A over {request.forms.get('length')}m is: {total_drop:.1f}V
" + page += f"Maximum length of cable at this load: {int(max_length)}m
" + page += f"Estimated PFC is {pfc:.1f}A
" + + if total_drop > voltage_limit: + page += "FAILED: VOLTAGE DROP TOO HIGH" + return page + +run(host='localhost', port=8080, debug=True)