You are on page 1of 11

function varargout = PROGRAMAPOTENCIA(varargin)

% PROGRAMAPOTENCIA MATLAB code for PROGRAMAPOTENCIA.fig


% PROGRAMAPOTENCIA, by itself, creates a new PROGRAMAPOTENCIA or
raises the existing
% singleton*.
%
% H = PROGRAMAPOTENCIA returns the handle to a new
PROGRAMAPOTENCIA or the handle to
% the existing singleton*.
%
% PROGRAMAPOTENCIA('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in PROGRAMAPOTENCIA.M with the given
input arguments.
%
% PROGRAMAPOTENCIA('Property','Value',...) creates a new
PROGRAMAPOTENCIA or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before PROGRAMAPOTENCIA_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to PROGRAMAPOTENCIA_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help PROGRAMAPOTENCIA

% Last Modified by GUIDE v2.5 17-Jun-2019 23:14:07

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @PROGRAMAPOTENCIA_OpeningFcn, ...
'gui_OutputFcn', @PROGRAMAPOTENCIA_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before PROGRAMAPOTENCIA is made visible.


function PROGRAMAPOTENCIA_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to PROGRAMAPOTENCIA (see VARARGIN)

% Choose default command line output for PROGRAMAPOTENCIA


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes PROGRAMAPOTENCIA wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = PROGRAMAPOTENCIA_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in MOCCFS_L.


function MOCCFS_L_Callback(hObject, eventdata, handles)
% Media Onda Controlado con fuente sinusoidal
% v f (t) =? 2?v?sen(?t)
% Carga tipo L

clear

% Entrada de datos
V=input('Tension efectiva de la fuente sinusoidal ');
L=input('Inductancia [H] ');
f=input('Frecuencia de la fuente [Hz] ');
alfa=input('Angulo de encendido en grados ');
alfa=alfa*pi/180;
a=alfa;

% Parámetros
fi=pi/2;
Z=sqrt((2*pi*f*L)^2);

% Cálculo del ángulo de apagado


b=2*pi-alfa;
g=b-a;

% Función en el tiempo
t=linspace(a,b,1000);
t2=linspace(b,a+2*pi,1000);
i=sqrt(2)*V/Z*(cos(alfa)-cos(t));
v=sqrt(2)*V*sin(t);
t=[t,t2];
v=[v,zeros(size(t2))];
i=[i,zeros(size(t2))];

% Valores Medios
Io=1/(2*pi)*trapz(t,i);
Vo=1/(2*pi)*trapz(t,v);

% Valores Efectivos
Irms=sqrt(1/(2*pi)*trapz(t,i.^2));
Vrms=sqrt(1/(2*pi)*trapz(t,v.^2));

%Factor de rizado
FR_i=sqrt(Irms^2-Io^2)/Io;
FR_v=sqrt(Vrms^2-Vo^2)/Vo;

% Graficas
vf=sqrt(2)*V*sin(t);
vx=v;
ix=i;
t1=t;
%figure(1)
subplot(2,1,1),plot(t1,vf,'-.',t1,vx,'r','LineWidth',2);grid
legend('Fuente','Carga');
set(gca,'FontSize',12,'FontName','Segoe UI Symbol');
xlim([a 2*pi+a]);
set(gca,'XTick',a:pi/6:2*pi+a);
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');
set(legend ,'FontSize',12,'FontName','Time');

%figure(2)
subplot(2,1,2),plot(t1,ix,'LineWidth',2);grid
xlim([a 2*pi+a]);
set(gca,'FontSize',12,'FontName','Segoe UI Symbol');
set(gca,'XTick',a:pi/6:2*pi+a);
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');

% Primera Armónica
Vrms_1=abs(1/pi*(trapz(t1,vx.*exp(1i*t1))))/sqrt(2);
Irms_1=abs(1/pi*(trapz(t1,ix.*exp(1i*t1))))/sqrt(2);

% THD
THDv=sqrt(Vrms^2-Vrms_1^2)/Vrms_1;
THDi=sqrt(Irms^2-Irms_1^2)/Irms_1;

% --- Executes on button press in MOCCFS_RL.


function MOCCFS_RL_Callback(hObject, eventdata, handles)
% Media Onda Controlado con fuente sinusoidal
% v f (t) =? 2?v?sen(?t)
% Carga tipo RL

clear

% Entrada de datos
V=input('Tension efectiva de la fuente sinusoidal ');
R=input('Resistencia [Ohm] ');
L=input('Inductancia [H] ');
f=input('Frecuencia de la fuente [Hz] ');
alfa=input('Angulo de encendido en grados ');
alfa=alfa*pi/180;

% Parámetros
fi=atan(2*pi*f*L/R);
Z=sqrt((2*pi*f*L)^2+R^2);
a=alfa;

% Cálculo del ángulo de apagado


b=fsolve(@(t) sin(t-fi)+(-sin(a-fi)*exp(-(t-a)/tan(fi))),pi);
g=b-a;

% Función en el tiempo
t=linspace(a,b,1000);
t2=linspace(b,a+2*pi,1000);
i=sqrt(2)*V/Z*(sin(t-fi)+(-sin(a-fi)*exp(-(t-a)/tan(fi))));
v=sqrt(2)*V*sin(t);
t=[t,t2];
v=[v,zeros(size(t2))];
i=[i,zeros(size(t2))];

% Valores Medios
Io=1/(2*pi)*trapz(t,i);
Vo=1/(2*pi)*trapz(t,v);

% Valores Efectivos
Irms=sqrt(1/(2*pi)*trapz(t,i.^2));
Vrms=sqrt(1/(2*pi)*trapz(t,v.^2));

%Factor de rizado
FR_i=sqrt(Irms^2-Io^2)/Io;
FR_v=sqrt(Vrms^2-Vo^2)/Vo;

% Graficas
vf=sqrt(2)*V*sin(t);
vx=v;
ix=i;
t1=t;
%figure(1)
subplot(2,1,1),plot(t1,vf,'-.',t1,vx,'r','LineWidth',2);grid
legend('Fuente','Carga');
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
xlim([a 2*pi+a]);
set(gca,'XTick',a:pi/6:2*pi+a);
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');
set(legend ,'FontSize',12,'FontName','Time');

%figure(2)
subplot(2,1,2),plot(t1,ix,'LineWidth',2);grid
xlim([a 2*pi+a]);
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
set(gca,'XTick',a:pi/6:2*pi+a);
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');

% Primera Armónica
Vrms_1=abs(1/pi*(trapz(t1,vx.*exp(1i*t1))))/sqrt(2);
Irms_1=abs(1/pi*(trapz(t1,ix.*exp(1i*t1))))/sqrt(2);

% THD
THDv=sqrt(Vrms^2-Vrms_1^2)/Vrms_1;
THDi=sqrt(Irms^2-Irms_1^2)/Irms_1;

% --- Executes on button press in MOCCFS_RLE.


function MOCCFS_RLE_Callback(hObject, eventdata, handles)
% Media Onda Controlado con fuente sinusoidal
% v f (t) =? 2?v?sen(?t)
% Carga tipo RLE

clear

% Entrada de datos
V=input('Tension efectiva de la fuente sinusoidal ');
R=input('Resistencia [Ohm] ');
L=input('Inductancia [H] ');
E=input('Tension de la carga ');
f=input('Frecuencia de la fuente [Hz] ');
alfa=input('Angulo de encendido en grados ');
alfa=alfa*pi/180;

% Parámetros
fi=atan(2*pi*f*L/R);
Z=sqrt((2*pi*f*L)^2+R^2);
m=E/(sqrt(2)*V);
a=asin(m);

if alfa >=a
a=alfa;
end

% Cálculo del ángulo de apagado


b=fsolve(@(t) sin(t-fi)-m/cos(fi)+(m/cos(fi)-sin(a-fi))*exp(-(t-
a)/tan(fi)),pi);
g=b-a;

% Función en el tiempo
t=linspace(a,b,1000);
t2=linspace(b,a+2*pi,1000);
i=sqrt(2)*V/Z*(sin(t-fi)-m/cos(fi)+(m/cos(fi)-sin(a-fi)*exp(-(t-
a)/tan(fi))));
v=sqrt(2)*V*sin(t);
t=[t,t2];
v=[v,E*ones(size(t2))];
i=[i,zeros(size(t2))];

% Valores Medios
Io=1/(2*pi)*trapz(t,i);
Vo=1/(2*pi)*trapz(t,v);

% Valores Efectivos
Irms=sqrt(1/(2*pi)*trapz(t,i.^2));
Vrms=sqrt(1/(2*pi)*trapz(t,v.^2));

%Factor de rizado
FR_i=sqrt(Irms^2-Io^2)/Io;
FR_v=sqrt(Vrms^2-Vo^2)/Vo;

% Graficas
vf=sqrt(2)*V*sin(t);
vx=v;
ix=i;
t1=t;
%figure(1)
subplot(2,1,1),plot(t1,vf,'-.',t1,vx,'r','LineWidth',2);grid
legend('Fuente','Carga');
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
xlim([a 2*pi+a]);
set(gca,'XTick',a:pi/6:2*pi+a);
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');
set(legend ,'FontSize',12,'FontName','Time');

%figure(2)
subplot(2,1,2),plot(t1,ix,'LineWidth',2);grid
xlim([a 2*pi+a]);
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
set(gca,'XTick',a:pi/6:2*pi+a);
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');

% Primera Armónica
Vrms_1=abs(1/pi*(trapz(t1,vx.*exp(1i*t1))))/sqrt(2);
Irms_1=abs(1/pi*(trapz(t1,ix.*exp(1i*t1))))/sqrt(2);

% THD
THDv=sqrt(Vrms^2-Vrms_1^2)/Vrms_1;
THDi=sqrt(Irms^2-Irms_1^2)/Irms_1;

% --- Executes on button press in OCCMCFS_RLE.


function OCCMCFS_RLE_Callback(hObject, eventdata, handles)
% Onda Completa Controlado Monofásico con fuente sinusoidal
% v f (t) =? 2?v?sen(?t)
% Carga tip RLE

% Entrada de datos
V=input('Tension efectiva de la fuente sinusoidal ');
R=input('Resistencia [Ohm] ');
L=input('Inductancia [H] ');
E=input('Tension de la carga ');
f=input('Frecuencia de la fuente [Hz] ');

% Constantes
m=E/(sqrt(2)*V);
Z=sqrt(R^2+(2*pi*f*L)^2);
fi=atan((2*pi*f*L)/R);
alfa1=asin(m); % Alfa mínimo
alfa2=pi-alfa1; % Alfa máximo
disp('Limite de Controlabilidad en grados')
[alfa1*180/pi, alfa2*180/pi];

% Angulo de disparo
alfa=input('ángulo de disparo en grados ');
alfa=alfa*pi/180;

% Limite de controlabilidad
if (alfa1>alfa)|| (alfa>alfa2)
disp('El ángulo de disparo está fuera del límite de contrabilidad se
fijo en alfa minimo');
alfa=alfa1;
end

% Cálculo del beta


b=fsolve(@(t) sin(t-fi)-m/cos(fi)+(m/cos(fi)-sin(alfa-fi))*exp(-(t-
alfa)/tan(fi)),pi);
g=b-alfa; % Angulo de Conducción
a=alfa;
Imin=sqrt(2)*V/Z*sin(fi-a)*((1+exp(-pi/tan(fi)))/(1-exp(-
pi/tan(fi))))-E/R;

if Imin <0
disp('El puente esta trabajando en condición no continuada')

% Funciones en el tiempo
t=linspace(a,b,1000);
i=sqrt(2)*V/Z*(sin(t-fi)-m/cos(fi)+(m/cos(fi)-sin(a-fi)*exp(-(t-
a)/tan(fi))));
v=sqrt(2)*V*sin(t);

tdes=linspace(b,pi+a,300);
t=[t,tdes];

v=[v,E*ones(size(tdes))];
i=[i,zeros(size(tdes))];

else

disp('El puente esta trabajando en condición continuada')


Imin;
% Funciones en el Tiempo
t=linspace(a,a+pi,1000);
i=sqrt(2)*V/Z*(sin(t-fi)-m/cos(fi)-(2*sin(a-fi)*exp(-(t-
a)/tan(fi)))/(1-exp(-pi/tan(fi))));
v=sqrt(2)*V*sin(t);

end

% Valores Medios
Io=1/(pi)*trapz(t,i);
Vo=1/pi*trapz(t,v);

% Rizo
Rizo=0.5*(max(i)-min(i));

% Valores Efectivos
Irms=sqrt(1/(pi)*trapz(t,i.^2));
Vrms=sqrt(1/(pi)*trapz(t,v.^2));

% Potencia
S=V*Irms; % Fuente
Pe=E*Io;
Pr=R*Irms^2;
fp=(Pe+Pr)/S;

%Factor de rizado
FR_i=sqrt(Irms^2-Io^2)/Io;
FR_v=sqrt(Vrms^2-Vo^2)/Vo;

% Primera Armónica carga


Vrms_1=abs(2/pi*(trapz(t,v.*exp(2*1i*t))))/sqrt(2);
Irms_1=abs(2/pi*(trapz(t,i.*exp(2*1i*t))))/sqrt(2);

% THD carga
THDv=sqrt(Vrms^2-Vrms_1^2)/Vrms_1;
THDi=sqrt(Irms^2-Irms_1^2)/Irms_1;

% Graficas
%figure(1)
clf
t1=[t,t+pi];
vf=sqrt(2)*V*sin(t1);
vx=[v,v];
ix=[i,i];
subplot(3,1,1),plot(t1,vf,'-.',t1,vx,'r','LineWidth',2);grid
legend('Fuente','Carga');
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
xlim([alfa 2*pi+alfa]);
set(gca,'XTick',alfa:pi/6:2*pi+alfa);
if alfa~=0
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
else
set(gca,'XTickLabel',{'0','T/12','T/6','T/4','T/3','5T/12','T/2','7T/1
2','2T/3','3T/4','5T/6','11T/12','T'})
end

set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');
set(legend ,'FontSize',12,'FontName','Time');

%figure(2)
subplot(3,1,2),plot(t1,ix,'LineWidth',2);grid
xlim([alfa 2*pi+alfa]);
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
set(gca,'XTick',alfa:pi/6:2*pi+alfa);
if alfa~=0
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
else
set(gca,'XTickLabel',{'0','T/12','T/6','T/4','T/3','5T/12','T/2','7T/1
2','2T/3','3T/4','5T/6','11T/12','T'})
end
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');

ix=[i,-i];
%figure(3)
subplot(3,1,3),plot(t1,ix,'LineWidth',2);grid
xlim([alfa 2*pi+alfa]);
set(gca,'FontSize',11,'FontName','Segoe UI Symbol');
set(gca,'XTick',alfa:pi/6:2*pi+alfa);
if alfa~=0
set(gca,'XTickLabel',{'a','T/12+a','T/6+a','T/4+a','T/3+a','5T/12+a','
T/2+a','7T/12+a','2T/3+a','3T/4+a','5T/6+a','11T/12+a','T+a'})
else
set(gca,'XTickLabel',{'0','T/12','T/6','T/4','T/3','5T/12','T/2','7T/1
2','2T/3','3T/4','5T/6','11T/12','T'})
end
set(gca,'YTickLabel',{' '})
xlabel('Tiempo','fontsize',14,'fontname','Times');
ylabel('Magnitud','fontsize',14,'fontname','Times');

% Primera Armónica fuente


Irms_f_1=abs(1/pi*(trapz(t1,ix.*exp(1i*t1))))/sqrt(2);

% THD fuente
THDi_f=sqrt(Irms^2-Irms_f_1^2)/Irms_f_1;
% --- Executes on button press in radiobutton1.
function radiobutton1_Callback(hObject, eventdata, handles)
% hObject handle to radiobutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton1

You might also like