Initial work on web based voltage calculator
This commit is contained in:
39
powerweb/power_calcs.py
Normal file
39
powerweb/power_calcs.py
Normal file
@@ -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
|
||||
30
powerweb/web.py
Normal file
30
powerweb/web.py
Normal file
@@ -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 '''
|
||||
<form action="/" method="post">
|
||||
Cable Type: <input name="cabletype" type="text" />
|
||||
Assumed Load: <input name="assumed_load" type="number" />
|
||||
Length: <input name="length" type="number" />
|
||||
<input value="Calculate" type="submit" />
|
||||
</form>
|
||||
'''
|
||||
|
||||
@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<br>"
|
||||
page += f"Total drop at {request.forms.get('assumed_load')}A over {request.forms.get('length')}m is: {total_drop:.1f}V<br>"
|
||||
page += f"Maximum length of cable at this load: {int(max_length)}m<br>"
|
||||
page += f"Estimated PFC is {pfc:.1f}A<br>"
|
||||
|
||||
if total_drop > voltage_limit:
|
||||
page += "<span style='color: red'>FAILED: VOLTAGE DROP TOO HIGH</span>"
|
||||
return page
|
||||
|
||||
run(host='localhost', port=8080, debug=True)
|
||||
Reference in New Issue
Block a user