RC circuit simulation



    The code creates a Tkinter window and defines three labels, one for the resistor value (R), one for the capacitor value (C), and one for the initial voltage (V0). It also creates a button to start the simulation.

    Inside the main loop, the code first sets the values of R, C, and V0 from the boxes. It then calculates the current at each time step using the following equation:

    I.append(C * (V[i] - V[i-1]) / dt + V[i] / R)

    Next, the code calculates the voltage at each time step using the following equation:

    V.append(V[i] + dt * I[i] / C)

    Finally, the code updates the labels and boxes with the current and voltage values at each time step.

    import matplotlib.pyplot as plt
    from tkinter import *
    # Function to start the simulation when the "Start" button is clicked
    def start():
      # Get the values of R, C, and V0 from the boxes
      R = float(box_R.get())
      C = float(box_C.get())
      V0 = float(box_V0.get())
      # Circuit parameters
      # R = 1  # resistance, in ohms
      # C = 1  # capacitance, in farads
      # V0 = 1  # initial voltage, in volts
      # Simulation parameters
      dt = 0.01  # time step, in seconds
      t_max = 10  # maximum time, in seconds
      # Initialize arrays for storing voltage and current
      t = [0]  # time
      V = [V0]  # voltage
      I = [0]  # current
      # Iterate over time steps
      for i in range(int(t_max / dt)):
        # Compute current at time t[i]
        I.append(C * (V[i] - V[i-1]) / dt + V[i] / R)
        # Compute voltage at time t[i+1]
        V.append(V[i] + dt * I[i] / C)
        # Update time
        t.append(t[i] + dt)
      # Plot voltage and current as a function of time
      plt.plot(t, V, label='Voltage')
      plt.plot(t, I, label='Current')
      plt.xlabel('Time (s)')
    # Create the main window
    root = Tk()
    root.title("RC Circuit Simulation")
    # Create labels and boxes for the values of R, C, and V0
    label_R = Label(root, text="Resistor value (Ξ©):")
    box_R = Entry(root)
    label_C = Label(root, text="Capacitor value (F):")
    box_C = Entry(root)
    label_V0 = Label(root, text="Initial voltage (V):")
    box_V0 = Entry(root)
    # Create a "Start" button to start the simulation
    button = Button(root, text="Start", command=start)
    # Run the main loop
    Codiga Logo
    Codiga Hub
    • Rulesets
    • Playground
    • Snippets
    • Cookbooks
    soc-2 icon

    We are SOC-2 Compliance Certified

    G2 high performer medal

    Codiga – All rights reserved 2022.