jueves, 26 de septiembre de 2013

Proyecto de Semiconductores y teoria de diodos

//PROYECTO DE LENGUAJE DE PROGRAMACION I
//SEMICONDUCTORE Y TEORIA DE DIODOS
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
double barreradepotencial(double dv,double dt,double t,double b);
double corrienteinversadesaturacion(double y,double Vz,double I);
double corrientesuperficialdefugas(double Vr,double Rs);
double resistenciainterna(double Rp,double Rn);
int limitaciondepotencia(int Vmax,int Imax);
double diodoideal(double T,double R1,double R2);
double segundaaproximacion(double T1,double R11,double R21);
double terceraaproximacion(double VT,double Vf,double R111,double RT);
int main(){
    int x,Pmax,Vmax,Imax;
    const double e=2.718;
    const double nVt=0.0226;
    double  y,Vz,Io,I;
    double b,t,dt,dv,V,Pd1,Vl1,T1,R11,R21,Il1;
    double Is,Vr,Rs;
    double Rb,Rp,Rn,Il,Vl,T,R1,R2;
    double VT,RT,Vf,Il11,R111,Vl11,Pd11,VD;
    do{
           cout<<"1.BARRERA DE POTENCIAL Y TEMPERATURA EN UN DIODO"<<endl;
           cout<<"2.CORRIENTE INVERSA DE SATURACION"<<endl;
           cout<<"3.CORRIENTE SUPERFICIAL DE FUGAS"<<endl;
           cout<<"4.RESISTENCIA INTERNA DE UN DIODO"<<endl;
           cout<<"5.DISIPACION DE POTENCIA(limitacion de potencia)"<<endl;
           cout<<"6.1ERA APROXIMACION(DIODO IDEAL)"<<endl;
           cout<<"7.2DA APROXIMACION DE UN DIODO"<<endl;
           cout<<"8.3ERA APROXIMACION DE UN DIODO"<<endl;
           cout<<"_________________________________________________"<<endl;
           cout<<"ingresar una opcion: ";cin>>x;
           switch(x){
              case 1:
                   cout<<"HALLANDO LA BARRERA DE POTENCIAL A UNA DETERMINADA TEMPERATURA DE UNION DE UN DIODO"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"La barrera de potencial vendria a ser,el espacio que existe en el punto de union de las zonas p y n de un diodo,cuando la temperatura de union aumenta,la zona de deplexion se hace mas estrecha y la barrera de potencial disminuira 2mv aproximadamente por cada grado celsius"<<endl;
                   cout<<"Recordar que temperatura ambiente igual a 25°C"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULA: dv=(-0.002v/°c)dt"<<endl;
                   cout<<"Ingresar la barrera de potencial a temperatura ambiente del diodo: ";cin>>b;  
                   cout<<"ingresar temperatura de union de un diodo: ";cin>>t;
                   dt=t-25;
                   dv=(-0.002)*dt;
                   V=b+dv;
                   cout<<endl;
                   cout<<"La barrera de potencial a una determinada temperatura de union es: "<<V<<endl;
                   system("pause");
                   break;
               case 2:
                    cout<<"HALLANDO LA CORRIENTE INVERSA DE SATURACION DE UN DIODO"<<endl;
                    cout<<"______________________________________________"<<endl;
                    cout<<"Es la pequeña corriente que se establece al polarizar inversamente el diodo , es decir al conectar el positivo de la fuente al catodo (-) del diodo y el negativo de la fuente al anodo (+) del diodo por la formación de pares electrón-hueco debido a la temperatura, admitiéndose que se duplica por cada incremento de 10º en la temperatura.Calcular entonces la corriente inversa de saturacion,si la corriente directa es de 0.15mA para una tension de 0.5v."<<endl;
                    cout<<"______________________________________________"<<endl;
                    cout<<"FORMULA: I = Io(e*(Vz/nVt)-1),donde nVt=0.0226"<<endl;
                    cout<<"ingresar la corrinete directa: ";cin>>I;
                    cout<<"ngresar la tension a la cual esta sometida: ";cin>>Vz;
                    y=Vz/nVt;
                    Io=I/((pow(e,y))-1);
                    cout<<endl;
                    cout<<"La corriente inversa de saturacion es: "<<Io<<endl;
                    system("pause");
                    break;
               case 3:
                   cout<<"HALLANDO LA CORRIENTE SUPEFICIAL DE FUGAS"<<endl;  
                   cout<<"______________________________________________"<<endl;
                   cout<<"La corriente superficial de fugas,es una corriente inversa que fluye por la superficie del cristal,hay que tener en cuenta que esta corriente es muy pequeña,puesto que la resistencia en conexion inversa es muy grande "<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULA: Is=Vr/Rs "<<endl;
                   cout<<"ingresar la resistencia superficial de fugas: ";cin>>Rs;
                   cout<<"ingresar el voltaje a la cual esta sometido el diodo: ";cin>>Vr;
                   Is=Vr/Rs;
                   cout<<endl;
                   cout<<"La corriente superficial de fugas es: "<<Is<<endl;
                   system("pause");
                   break;              
              case 4:
                   cout<<"HALLANDO LA RESISTENCIA INTERNA"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"la resistencia interna de un diodo,vendria a ser la suma de las resistencia de las zonas p y n,el valor de esta resistencia global depende del tamaño de las regiones p y n, y de como esten dopadas.A menudo,la resistencia global es menor a 1 ohmio"<<endl;            
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULA: Rb=Rp+Rn"<<endl;
                   cout<<"ingresar la resistencia de la zona p: ";cin>>Rp;
                   cout<<"ingresar la resistencia de la zona n: ";cin>>Rn;
                   Rb=Rp+Rn;
                   cout<<endl;
                   cout<<"la resistencia interna globas es: "<<Rb<<endl;
                   system("pause");
                   break;
              case 5:
                   cout<<"HALLANDO LA DISIPACION DE POTENCIA"<<endl;    
                   cout<<"______________________________________________"<<endl;
                   cout<<"Para calcular la disipacion de potencia de un diodo,se sigue los mismos conceptos que para una resistencia,pero esta ves con valores propios del diodo.La limitacion de potencia es la maxima potencia que el diodo puede disipar con seguridad sin acortar su tiempo de vida o degradar sus caracteristicas de operacion."<<endl;                
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULA: Pmax=Vmax/Imax "<<endl;
                   cout<<"Ingresar el voltaje maximo del diodo: ";cin>>Vmax;
                   cout<<"Ingresar la corriente maxima del diodo: ";cin>>Imax;
                   Pmax=Vmax*Imax;
                   cout<<endl;
                   cout<<"La limitacion de potencia es: "<<Pmax<<endl;
                   system("pause");
                   break;
              case 6:    
                   cout<<"1ERA APROXIMACION(DIODO IDEAL)"<<endl;    
                   cout<<"______________________________________________"<<endl;
                   cout<<"Un diodo ideal se comporta como un interruptor,cerrado cuando esta polarizado en directa,y abierto cuan esta polarizado en inversa,para demostrar ello resolveromos un ejercicio,donde nos piden calcular la tension y la corriente en la carga del ciruito()"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULAS:Il=T/(R1+R2),Vl=Il*R2"<<endl;
                   cout<<"ingresar tension de la fuente de thevenin: ";cin>>T;
                   cout<<"ingresar 1era resistencia de thevenin: ";cin>>R1;
                   cout<<"ingresar 2da resistencia de thevenin: ";cin>>R2;
                   Il=T/(R1+R2);
                   Vl=Il*R2;
                   cout<<endl;
                   cout<<"La corriente en la carga es: "<<Il<<endl;
                   cout<<"El voltaje en la carga es: "<<Vl<<endl;
                   system("pause");
                   break;            
              case 7:  
                   cout<<"2DA APROXIMACION"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"En esta aproximacion tendremos a un diodo(de silicio)como un interruptor en serie con una tension umbral de 0.7v.Si la tension de thevenin que ve el diodo es mayor que este valor,el interruptor se cierra.Calculemos entonces un ejercicio donde hallaremos la tension en la carga,la corriente en la carga y la potencia del diodo en el circuito"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULAS:Il1=(T1-0.7)/(R11+R21),Vl1=Il1*R21,Pd1=(0.7)*(Vl1)"<<endl;
                   cout<<"ingresar tension de la fuente de thevenin: ";cin>>T1;
                   cout<<"ingresar 1era resistencia de thevenin: ";cin>>R11;
                   cout<<"ingresar 2da resistencia de thevenin: ";cin>>R21;
                   Il1=(T1-0.7)/(R11+R21);
                   Vl1=Il1*R21;
                   Pd1=(0.7)*(Vl1);
                   cout<<endl;
                   cout<<"La corriente en la carga es: "<<Il1<<endl;
                   cout<<"La tension en la carga es: "<<Vl1<<endl;
                   cout<<"La potencia en el diodo es: "<<Pd1<<endl;
                   system("pause");
                   break;                
              case 8:
                   cout<<"3ERA APROXIMACION"<<endl;  
                   cout<<"______________________________________________"<<endl;
                   cout<<"En esta aproximacion tendremos a un diodo(de silicio)como un interruptor en serie con una tension umbral de 0.7v y la resistencia interna de un diodo.Rara  vez se emplea esta aproximacion,porque normalmente la resistencia interna es suficientemente pequeña y se puede ignorar.Calcular entonces un ejercicio,donde tomaremos como ejemplo al diodo IN4001,que tiene una resistencia interna de 0.23ohms.¿Cual es la tension en la carga y en el diodo,la corriente en la carga y la potencia del diodo?"<<endl;
                   cout<<"______________________________________________"<<endl;
                   cout<<"FORMULAS:Il11=RT/VT, Vl11=R111*Il11, Pd11=VD*Il11,VD=Vf-Vl11"<<endl;
                   cout<<"Ingresar la resistencia del circuito: ";cin>>R111;
                   cout<<"Ingresar la tension del circuito: ";cin>>Vf;
                   RT=0.23+R111;
                   VT=Vf-0.7;
                   Il11=VT/RT;
                   Vl11=R111*Il11;
                   VD=Vf-Vl11;
                   Pd11=VD*Il11;
                   cout<<endl;
                   cout<<"La corriente en la carga es: "<<Il11<<endl;
                   cout<<"La tension en la carga es: "<<Vl11<<endl;
                   cout<<"La tension en el diodo es: "<<VD<<endl;
                   cout<<"La potencia en el diodo es: "<<Pd11<<endl;
                   system("pause");
                   break;            
                   default:
                   cout<<"ERROR NO EXISTE UNA OPCION"<<endl;
                   system("pause");
                   break;
                   }
                   }
                   while(x!=0);
                   }
double barreradepotencial(double dv,double dt,double t,double b){
    double V;
     dt=t-25;
     dv=(-0.002)*dt;
     V=b+dv;    
    return V;
}              
double corrientesuperficialdefugas(double Vr,double Rs){
    double Is;  
     Is=Vr/Rs;      
     return Is;
}
double resistenciainterna(double Rp,double Rn){
    double Rb;
    Rb=Rp+Rn;
    return Rb;
}  
int limitaciondepotencia(int Vmax,int Imax){
    int Pmax;
    Pmax=Vmax*Imax;
    return Pmax;
}
double diodoideal(double T,double R1,double R2){
    double Il,Vl;
    Il=T/(R1+R2);
    Vl=Il*R2;
    return Il;
    return Vl;
}
double segundaaproximacion(double T1,double R11,double R21){
    double Il1,Vl1,Pd1;
    Il1=(T1-0.7)/(R11+R21);
    Vl1=Il1*R21;
    Pd1=(0.7)*(Vl1);
    return Il1;
    return Vl1;
    return Pd1;
}
double terceraaproximacion(double VT,double Vf,double R111,double RT){
    double Il11,Vl11,Pd11,VD;
     RT=0.23+R111;
     VT=Vf-0.7;
     Il11=RT/VT;
     Vl11=R111*Il11;
     VD=Vf-Vl11;
     Pd11=VD*Il11;  
     return Il11;
     return Vl11;
     return Pd11;
     return VD;
}
double corrienteinversadesaturacion(double y,double Vz,double I){
       double Io,e,nVt;
        y=Vz/nVt;
        Io=I/((pow(e,y))-1);
        cout<<endl;
      return Io;
}