slogan3

Maak een Fortran-programma om een eenvoudige elektrische schakeling te modelleren

description

Door deze prompt te gebruiken, kun je elektrische schakelingen effectief simuleren en analyseren, waardoor je begrip van schakelinggedrag en ontwerprincipes in Fortran wordt versterkt.

prompt

try_prompt

Help me een Fortran-programma schrijven dat een eenvoudige elektrische schakeling simuleert met de volgende specificaties: - Schakelingonderdelen (bijv. weerstanden, condensatoren): {{circuit_onderdelen}} - Waarden van de spanningsbronnen: {{span ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een eenvoudig Fortran-programma dat een basis simulatietool voor een elektrische schakeling implementeert. Het model simuleert de stroom door R1 in een RC-kring, waarbij de condensator C1 wordt opgeladen door een spanningsbron V1 via weerstand R1. Het programma gebruikt een eenvoudige Euler-methode om de spanning over de condensator te berekenen over tijd. ```fortran program RC_Schakeling_Simulatie implicit none ! Parameters real, parameter :: R1 = 100.0 ! weerstand in Ohm real, parameter :: C1 = 10.0e-6 ! capaciteit in Farad (10 μF) real, parameter :: V1 = 5.0 ! spanningsbron in Volt real, parameter :: dt = 1.0e-4 ! tijdstap in seconden integer, parameter :: max_tijd = 0.5 ! maximale simulatie tijd in seconden ! Variabelen real :: t = 0.0 ! huidige tijd real :: Vc = 0.0 ! spanning over condensator real :: I_R1 ! stroom door R1 ! Open bestand om output te schrijven open(unit=10, file='simulatie_output.csv', status='replace') write(10,*) 'Tijd,Spanning_C,Stroom_R1' ! Simulatie loop do while (t <= max_tijd) ! Bereken stroom door R1: I = (V1 - Vc) / R1 I_R1 = (V1 - Vc) / R1 ! Euler update voor condensatorspanning Vc = Vc + (dt / C1) * I_R1 ! Output naar CSV write(10,'(F8.4,1x,F8.4,1x,F8.6)') t, Vc, I_R1 ! Verhoog tijd t = t + dt end do close(10) print *, 'Simulatie voltooid. Resultaten opgeslagen in simulatie_output.csv' end program RC_Schakeling_Simulatie ``` **Hoe de resultaten te interpreteren:** - Het CSV-bestand bevat drie kolommen: tijd (s), spanning over de condensator (V), en stroom door R1 (A). - Aan het begin (t=0) is de spanning over de condensator 0V en de stroom maximaal (V1/R1). - Naarmate de tijd vordert, laadt de condensator op en de spanning stijgt asymptotisch naar V1 (5V). - De stroom door R1 neemt af naar nul zodra de condensator volledig is opgeladen. **Gedrag in de loop van de tijd:** - De spanning over de condensator volgt ongeveer een exponentiële op- en ontlaadcurve, met een tijdconstante τ = R1 * C1 = 100 Ω * 10 μF = 0,001 seconde. - Je kunt de resultaten visualiseren door het CSV-bestand te importeren in een grafiekprogramma (zoals Excel, LibreOffice Calc, of Python met matplotlib) en de spanning en stroom uit te zetten over de tijd. **Aanpassingen:** - Voor meer complexere schakelingen kun je het model uitbreiden met meerdere componenten en vergelijkingen. - Voor een gedetailleerdere simulatie kun je een hogere orde numerieke methode toepassen of gespecialiseerde simulatiesoftware gebruiken.
provider: deepseek
model: deepseek-chat
Hier is een eenvoudig Fortran-programma dat een RC-schakeling simuleert en de stroom door weerstand R1 berekent. De schakeling bestaat uit een spanningsbron V1, een weerstand R1 en een condensator C1 in serie. ```fortran program rc_circuit_simulation implicit none ! Declaratie van variabelen real :: V1 = 5.0 ! Bronspanning (V) real :: R1 = 100.0 ! Weerstand (Ω) real :: C1 = 10e-6 ! Capaciteit (F) real :: dt = 0.001 ! Tijdstap (s) real :: total_time = 0.1 ! Totale simulatie tijd (s) real :: time, I_R1, V_C, Q_C integer :: n, steps ! Initialisatie steps = nint(total_time / dt) V_C = 0.0 ! Initiële spanning over condensator Q_C = 0.0 ! Initiële lading op condensator ! Open bestand voor output open(unit=10, file='rc_circuit_results.txt', status='replace') ! Schrijf header naar bestand write(10, *) 'Tijd(s)', ' Stroom_R1(A)', ' Spanning_C(V)' ! Hoofdsimulatie loop do n = 0, steps time = n * dt ! Bereken stroom door R1 (I = (V_bron - V_C) / R) I_R1 = (V1 - V_C) / R1 ! Update lading op condensator (Q = Q + I * dt) Q_C = Q_C + I_R1 * dt ! Update spanning over condensator (V_C = Q / C) V_C = Q_C / C1 ! Schrijf resultaten naar bestand write(10, '(F8.4, 2F12.6)') time, I_R1, V_C end do ! Sluit bestand close(10) print *, 'Simulatie voltooid. Resultaten opgeslagen in rc_circuit_results.txt' end program rc_circuit_simulation ``` ## Interpretatie van de simulatie resultaten: ### Wat het programma berekent: - **Stroom door R1**: I_R1 = (V1 - V_C) / R1 - **Spanning over condensator**: V_C = Q_C / C1 - De stroom start hoog en neemt exponentieel af naarmate de condensator oplaadt ### Belangrijke karakteristieken om te observeren: 1. **Initieel gedrag** (t=0): - Stroom: I_max = V1 / R1 = 5V / 100Ω = 0.05A - Condensatorspanning: 0V 2. **RC tijdconstante**: - τ = R × C = 100Ω × 10μF = 0.001 seconden - Na 1τ is de stroom gedaald tot ~37% van beginwaarde - Na 5τ is de schakeling praktisch gezien in steady-state 3. **Steady-state** (lange termijn): - Stroom nadert 0A - Condensatorspanning nadert 5V ## Visualisatie van resultaten: ### Met Python (aanbevolen): ```python import matplotlib.pyplot as plt import numpy as np data = np.loadtxt('rc_circuit_results.txt', skiprows=1) time = data[:,0] current = data[:,1] voltage = data[:,2] plt.figure(figsize=(12,4)) plt.subplot(1,2,1) plt.plot(time*1000, current*1000) # tijd in ms, stroom in mA plt.xlabel('Tijd (ms)') plt.ylabel('Stroom door R1 (mA)') plt.title('Stroom vs Tijd') plt.grid(True) plt.subplot(1,2,2) plt.plot(time*1000, voltage) plt.xlabel('Tijd (ms)') plt.ylabel('Spanning over C1 (V)') plt.title('Condensatorspanning vs Tijd') plt.grid(True) plt.tight_layout() plt.show() ``` ### Met gnuplot (alternatief): ``` plot 'rc_circuit_results.txt' using 1:2 with lines title 'Stroom door R1' ``` ## Tips voor analyse: - Let op de exponentiële afname van de stroom - Controleer of de tijdconstante τ = 1ms overeenkomt met je verwachtingen - Verifieer dat de condensator volledig is opgeladen na ~5ms - Experimenteer met verschillende R en C waarden om het gedrag te vergelijken De simulatie laat het klassieke oplaadgedrag van een RC-circuit zien, wat fundamenteel is voor timing-toepassingen in elektronica.