Carica e scarica di un condensatore

Dovendo simulare con un calcolo ricorrente la carica e la scarica di un condensatore in un circuito R C ho scritto:

V2=V1+dV

dove V1 è la ddp del condensatore che si incrementa di un valore dV per diventare V2 in un tempo dt.

V2=V1+dQ/C=V1+(i dt)/C=V1+(fem-V1)* dt/(RC)

Dove dQ è la carica acquisita, i la corrente elettrica, fem la forza elettromotrice di carica. In altre parole, la ddp di un condensatore in un circuito RC si carica sottoposto alla forza elettromotrice  fem nel seguente modo:

V=
V+(fem-V)* dt/(RC)

assegnazione del nuovo valore della variabile V a partire dal vecchio valore di V.
Oppure si può scrivere:

dV=(fem-V) dt/(R C)

e quindi:

dV/dt=(fem-V)/(R C)

cioè la derivata rispetto al tempo della ddp è uguale all'espressione a destra.
Questo si verifica facilmente eseguendo la derivata di:

V=fem (1-e(-t/(RC)) )
 
rispetto al tempo t.
In effetti all'inizio del processo, si verifica che la velocità
di carica è grande (dato che V è piccola). Successivamente questa velocità o derivata tende a zero dato che V tende a fem.
 
In maniera analoga si procede per la scarica:

V2=V1-dV/C=V1-dQ=V1-(V1 dt)/(R C)

dV=-V dt/(R C)

dV/dt=-V/(R C)

Questa ultima si verifica con:

V=fem
e(-t/(RC))

Nella scarica la derivata è negativa e la velocità di scarica è grande in valore assoluto all'inizio e poi tende a zero.

Procedura in Python per simulare la carica e la scarica di un condensatore

Nella scheda Script del Python di GeoGebra (vedi python_geogebra.html) inserire (copia incolla) il seguente codice:

R=5E5 #ohm
C=1E-5 #Farad
fem=5 #Volts
$A=(0,0) #definisce un punto A per GeoGebra di coordinate (0,0)
$A.trace=True
def carica_scarica(tempo):
    V=0
    t=0
    dt=0.04
    while t<tempo/2.0:
        V=V+(fem-V)*dt/(C*R)
       
t=t+dt
        $A.coords=(t,V) #assegna nuove coordinate ad A
       

    while t<tempo:
        V=V-V*dt/(C*R)
       
t=t+dt
        $A.coords=(t,V)

per eseguire la simulazione basta scrivere carica_scarica(<num. secondi>) nella riga di comando della scheda Interactive.
E' possibile inserire il grafico della funzione teorica per confrontarlo con quello ottenuto con il calcolo ricorrente, ricorrendo questa volta a GeoGebra. Il grafico si ottiene scrivendo nella riga di comando di Geogebra  la funzione  che descrive la carica come funzione di x  (che per noi è il tempo).

 f(x)=
fem (1-e(-x/(RC)) )

Al posto di fem, R, C bisognerà scrivere i valori corrispondentiDiscorso analogo per la scarica:

g(x)=
fem e(-x/(RC))

solo che in questo caso bisignerà tener conto della traslazioe lungo l'asse x e quindi scrivere (x-16) se si è scelto il tempo 32 come nella figura seguente dove si è scelto dt=0.4  piuttosto grande.




carica e scarica