Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| def calculate_vdc(num_resistors, resistances, connection_type, target_current): | |
| # Convert space-separated resistance values to floats | |
| try: | |
| r_list = [float(r) for r in resistances.split()] | |
| if len(r_list) != num_resistors: | |
| return "⚠️ Number of resistance values does not match the count!", "" | |
| except: | |
| return "⚠️ Invalid resistance values!", "" | |
| # Equivalent resistance | |
| if connection_type == "Series": | |
| req = sum(r_list) | |
| else: | |
| try: | |
| req = 1 / sum([1/r for r in r_list]) | |
| except: | |
| return "⚠️ Invalid parallel combination!", "" | |
| # Voltage calculation | |
| vdc = req * target_current | |
| # Suggest nearest standard DC supply | |
| standard_vdc_levels = [3, 5, 6, 9, 12, 15, 24, 48] | |
| nearest_vdc = min(standard_vdc_levels, key=lambda x: abs(x - vdc)) | |
| result = ( | |
| f"Equivalent Resistance: {req:.3f} Ω\n" | |
| f"Target Current: {target_current:.3f} A\n" | |
| f"Required VDC: {vdc:.3f} V\n" | |
| ) | |
| suggestion = f"Nearest Standard DC Voltage Source: {nearest_vdc} V" | |
| return result, suggestion | |
| # ---------------------- | |
| # Gradio Interface | |
| # ---------------------- | |
| with gr.Blocks(title="DC Voltage Source Selector") as demo: | |
| gr.Markdown("## 🔋 DC Voltage Source Selector") | |
| gr.Markdown( | |
| "Enter the number of resistors, their values, and connection type.\n" | |
| "The app will calculate the required **DC voltage source**." | |
| ) | |
| num_resistors = gr.Number(label="Number of Resistors", value=1, precision=0) | |
| resistances = gr.Textbox( | |
| label="Enter Resistance Values (space-separated, in ohms)", | |
| placeholder="Example: 10 20 30" | |
| ) | |
| connection_type = gr.Radio( | |
| ["Series", "Parallel"], | |
| label="Connection Type", | |
| value="Series" | |
| ) | |
| target_current = gr.Number( | |
| label="Desired Current (A)", | |
| value=0.1, | |
| step=0.01 | |
| ) | |
| output_text = gr.Textbox(label="Calculation Result") | |
| suggestion = gr.Textbox(label="Recommended DC Voltage Source") | |
| btn = gr.Button("Calculate Voltage") | |
| btn.click( | |
| calculate_vdc, | |
| inputs=[num_resistors, resistances, connection_type, target_current], | |
| outputs=[output_text, suggestion] | |
| ) | |
| demo.launch() | |