Skip to content

Instantly share code, notes, and snippets.

@HectorTorres
Created February 7, 2020 20:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HectorTorres/dec376835e19359e548f13751e5984ba to your computer and use it in GitHub Desktop.
Save HectorTorres/dec376835e19359e548f13751e5984ba to your computer and use it in GitHub Desktop.
clc
clear all
#Definiendo variables iniciales
E=5;
R=1000;
I0=50e-9;
Vt=26e-3;
Vd=0:1e-3:5; # Vector de parametros independientes, voltaje
Id1=I0*(exp(Vd/Vt)-1); #Ecuacion del dido
Id2=(E-Vd)/R; #Ecuacion del circuito
res=sqrt((Id1-Id2).^2); #Resta de vectores o graficas
[val pos]=min(res) #Buscar el valor mas pequeño de la resta
#el cul hace referencia a el cruce de ambas graficas
Ide=Id1(pos) #Determinar el valor de corriente en el punto de cruce.
Ide=Id2(pos) #Determinar el valor de corriente en el punto de cruce.
Vde=Vd(pos) #Determinar el valor de voltaje en el punto de cruce.
referenciax = [Vde Vde]; #Crear vector con posicion de resultados
referenciay = [0 Ide]; #Crear vector con posicion de resultados
plot(Vd,Id1,Vd,Id2,Vd,res,referenciax,referenciay,"*")
grid on
axis([0 1 0 5e-3])
xlabel("Voltaje")
ylabel("Corriente")
legend("Ecn diodo","Circuito","Resta",["V=" num2str(Vde) " I=" num2str(Ide)])
title("Curva del didoo con recta de carga")
#############################################################
# Solucion mediante un metodo iterativo, como Newton Rhapson
#############################################################
clear Vd
Vd=0.5;
for i=2:20
f1=I0*(exp(Vd(i-1)/Vt)-1)-(E-Vd(i-1))/R;
df1 =(I0/Vt)*(exp(Vd(i-1)/Vt))-1/R;
Vd(i)=Vd(i-1)-f1/df1;
end
figure(2)
plot(Vd)
hold on
plot(Vd,'ro')
grid on
xlabel("Iteraciones")
ylabel("Voltaje")
legend(["V=" num2str(Vd(length(Vd))) "V"])
title("Curva del didoo con recta de carga")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment