SyedWaqad commited on
Commit
551bd7a
·
verified ·
1 Parent(s): 3317e81

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +78 -0
app.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ def calculate_vdc(num_resistors, resistances, connection_type, target_current):
4
+ # Convert space-separated resistance values to floats
5
+ try:
6
+ r_list = [float(r) for r in resistances.split()]
7
+ if len(r_list) != num_resistors:
8
+ return "⚠️ Number of resistance values does not match the count!", ""
9
+ except:
10
+ return "⚠️ Invalid resistance values!", ""
11
+
12
+ # Equivalent resistance
13
+ if connection_type == "Series":
14
+ req = sum(r_list)
15
+ else:
16
+ try:
17
+ req = 1 / sum([1/r for r in r_list])
18
+ except:
19
+ return "⚠️ Invalid parallel combination!", ""
20
+
21
+ # Voltage calculation
22
+ vdc = req * target_current
23
+
24
+ # Suggest nearest standard DC supply
25
+ standard_vdc_levels = [3, 5, 6, 9, 12, 15, 24, 48]
26
+ nearest_vdc = min(standard_vdc_levels, key=lambda x: abs(x - vdc))
27
+
28
+ result = (
29
+ f"Equivalent Resistance: {req:.3f} Ω\n"
30
+ f"Target Current: {target_current:.3f} A\n"
31
+ f"Required VDC: {vdc:.3f} V\n"
32
+ )
33
+
34
+ suggestion = f"Nearest Standard DC Voltage Source: {nearest_vdc} V"
35
+
36
+ return result, suggestion
37
+
38
+
39
+ # ----------------------
40
+ # Gradio Interface
41
+ # ----------------------
42
+
43
+ with gr.Blocks(title="DC Voltage Source Selector") as demo:
44
+ gr.Markdown("## 🔋 DC Voltage Source Selector")
45
+ gr.Markdown(
46
+ "Enter the number of resistors, their values, and connection type.\n"
47
+ "The app will calculate the required **DC voltage source**."
48
+ )
49
+
50
+ num_resistors = gr.Number(label="Number of Resistors", value=1, precision=0)
51
+ resistances = gr.Textbox(
52
+ label="Enter Resistance Values (space-separated, in ohms)",
53
+ placeholder="Example: 10 20 30"
54
+ )
55
+
56
+ connection_type = gr.Radio(
57
+ ["Series", "Parallel"],
58
+ label="Connection Type",
59
+ value="Series"
60
+ )
61
+
62
+ target_current = gr.Number(
63
+ label="Desired Current (A)",
64
+ value=0.1,
65
+ step=0.01
66
+ )
67
+
68
+ output_text = gr.Textbox(label="Calculation Result")
69
+ suggestion = gr.Textbox(label="Recommended DC Voltage Source")
70
+
71
+ btn = gr.Button("Calculate Voltage")
72
+ btn.click(
73
+ calculate_vdc,
74
+ inputs=[num_resistors, resistances, connection_type, target_current],
75
+ outputs=[output_text, suggestion]
76
+ )
77
+
78
+ demo.launch()