%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Codigo de ejemplo para la graficacion de la curva externa de un generador de CD 
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all; clc;                                % Esta linea borra las variables del Workspace y limpia la  
                                               % ventana de comandos

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Las siguientes lineas sirven para la lectura de los datos nominales necesarios. 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                               
                                               
Vn=input('Inserte el voltaje nominal: ');                % Solicitud del voltaje nominal. Se conoce de la  
                                                         % primera parte de la Practica 2.                                                         

Pn=input('Inserte la potencia nominal: ');               % Solicitud de la potencia nominal. Se conoce de  
                                                         % la primera parte de la Practica 2.                                                         

In=Pn/Vn;                                                % Calculo de la corriente nominal de la maquina.

Ra=input('Inserte la resistencia de armadura: ');        % Solicitud de la corriente de armadura de la  
                                                         % maquina. Se conoce de la Practica 1.                                                        

Rs=input('Inserte la resistencia del devanado serie: '); % Solicitud de la corriente del devanado serie de   
                                                         % la maquina. Se conoce de la Practica 1.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Las siguientes lineas sirven para la lectura de los datos experimentales. 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                               
                                                         
IL=input('Inserte las corrientes de carga medidas: ');   % Solicitud de los datos de corriente de carga. Se 
                                                         % deben insertar en forma de vector: [I0 I1 ... In]
                                               
If=input('Inserte las corrientes de campo medidas: ');   % Solicitud de los datos de corriente de campo. Se 
                                                         % deben insertar en forma de vector.

Vt=input('Inserte los voltajes terminales medidos: ');   % Solicitud de los datos de voltaje en terminales.  
                                                         % Se deben insertar en forma de vector.

Ip=IL/In;                                                % Calculo de la corriente porcentual a partir de los 
                                                         % datos experimentales y la corriente nominal. 
                                                         
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Las siguientes lineas sirven para la obtencion de las caracteristicas interna y externa de cada conexion realizada.
% Se deben agregar algunas lineas para darle formato a las graficas, asi como dar la ecuacion correcta para la obtencion 
% del voltaje Ea para cada conexion.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                               
             
fprintf('Escoge una opcion\n');                          % Despliega una lista de opciones para seleccionar la
                                                         % conexion que se va a analizar.
fprintf('\n1.\tGenerador de CD con Excitacion Separada') 
fprintf('\n2.\tGenerador de CD En Derivacion')
fprintf('\n3.\tGenerador de CD En Serie')
fprintf('\n4.\tGenerador de CD Compuesto En Derivacion Larga\n\n')

conexion=input('Opcion: ');  % Solicitud del tipo de conexion.

switch conexion                  % Estructura para determinar que analisis se hara.
    case 1                       % Seleccion de conexion Excitacion Separada o Independiente.
        clear Rs If              % Borra estos valores, no son necesarios.
        plot(Ip,Vt)              % Caracteristica Externa.
        Ea=Ra*IL+Vt;             % Calculo de Ea.
        plot(Ip,Ea)              % Caracteristica Interna.

    case 2                       % Seleccion de conexion Excitacion en Derivacion o Shunt.
        clear Rs If              % Borra estos valores, no son necesarios.
        plot(Ip,Vt)              % Caracteristica Externa.
        Ea=Ra*IL+Vt;             % Calculo de Ea (escribir la ecuacion para generadores shunt).
        plot(Ip,Ea)              % Caracteristica Interna.
        
    case 3                       % Seleccion de conexion Excitacion en Serie.
        clear Rs                 % Borra este valor, no es necesario.
        plot(Ip,Vt)              % Caracteristica externa.
        Ea=Ra*IL+Vt;             % Calculo de Ea (escribir la ecuacion para generadores serie).
        plot(Ip,Ea)              % Caracteristica Interna.
        
    case 4                       % Seleccion de conexion Excitacion Compuesta Derivacion Larga.
        plot(Ip,Vt)              % Caracteristica Externa.
        Ea=Ra*IL+Vt;             % Calculo de Ea (escribir la ecuacion para generadores long-shunt).
        plot(Ip,Ea)              % Caracteristica Interna.
    
    otherwise
        fprintf('opcion no valida');
end