Saltar al contenido principal
LibreTexts Español

3.1: Introducción

  • Page ID
    83240
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    En este ejercicio estaremos echando un vistazo al uso de condicionales. Estos incluyen el constructo if/else y el constructo switch/case. Los condicionales se utilizan para hacer una elección, es decir, para dividir el flujo del programa en varios caminos. El sif/else funciona mejor con opciones simples de uno o varios, mientras que el interruptor/caja está diseñado para tratar con una (o posiblemente múltiples) opciones de una lista de posibilidades fijas.

    El condicional más simple es el recto if (). Dependiendo de si el (los) artículo (s) que se va a probar evalúan a true determina si se toman medidas posteriores. Al agrupar cláusulas con los operadores lógicos || y &&, se pueden crear pruebas complejas. if () pueden anidarse, así como incluir el procesamiento para el fallo de prueba mediante el uso de la cláusula else. Si necesita elegir un solo elemento de una lista, por ejemplo al procesar una selección de menú, esto se puede lograr anidando de la siguiente manera:

    if( choice == 1 )
    {
          /* do stuff for 1 */
    }
    else
    {
          if( choice == 2 )
          {
                /* do stuff for 2 */
          }
          else
          {
                if( choice == 3 )
                {
                      /* do stuff for 3 */
                }
                /* and so on */
          }
    }
    

    Este arreglo es un poco engorroso a la hora de elegir de una lista grande. Además, es difícil tratar con una elección plural (por ejemplo, recoger los artículos 1 y 3). Para estas situaciones el lenguaje C ofrece la construcción switch/case. No hay nada que un interruptor/caja pueda hacer que no puedas recrear con if/else anidado y código adicional, pero el primero ofrece una mayor comodidad así como un código más claro y compacto. El interruptor/caso se usa con frecuencia, pero en última instancia, el if/else es más flexible porque no se limita a elegir de una lista de valores numéricos. Ordinariamente, las constantes numéricas no se utilizan en el código de producción, como en el ejemplo anterior. En cambio, se utilizan #define para las constantes con el fin de hacer que el código sea más legible. Una versión de cambio/caja del mundo real del ejemplo anterior podría tener el siguiente aspecto:

    #define WALK_DOG        1
    #define LET_OUT_CAT     2
    #define COMB_WOMBAT     3
    
    switch( choice )
    {
          case WALK_DOG:
                /* c’mon poochie... */
                break;
    
          case LET_OUT_CAT:
                /* there’s the door... */
                break;
    
          case COMB_WOMBAT:
                /* first the shampoo... */
                break;
    
          /* and so on */
    }
    

    En este ejercicio vamos a hacer uso de ambos constructos. El programa implicará el cálculo de parámetros de polarización de CC para circuitos de transistores simples. Le daremos al usuario la opción de tres disposiciones de polarización diferentes (divisor de voltaje, emisor de dos fuentes y retroalimentación del colector). Luego, el programa solicitará los valores de los componentes apropiados y determinará la corriente de colector en reposo y la tensión colector-emisor. También determinará si el circuito está o no en saturación. Estos valores se mostrarán al usuario.

    Una aproximación a este problema es considerarlo como tres pequeños problemas unidos. Es decir, considera lo que necesitas hacer para un sesgo y luego replicarlo con los cambios apropiados para los otros dos. A continuación, los tres se unen con un simple procesamiento de menú. Aquí hay un pseudo código:

    1. Dar al usuario instrucciones apropiadas y una lista de opciones de sesgo.

    2. Pregunte al usuario por su elección de sesgo.

    3. Rama a la rutina apropiada para el sesgo elegido. Para cada sesgo,

    a. Solicitar los valores de componentes necesarios (resistencias, fuente de alimentación, beta).

    b. Calcular Ic y Vce y determinar si el circuito está en saturación.

    c. Mostrar valores al usuario.

    Siguen las ecuaciones apropiadas para cada sesgo. Todos los sesgos utilizan lo siguiente: Vcc es el suministro positivo. Re es la resistencia del emisor mientras que Rc es la resistencia colector. beta es la ganancia de corriente (hfe). Se puede suponer que el emisor de base (Vbe) es de 0.7 voltios. Tenga en cuenta que si la saturación IC es mayor que Ic, entonces el Ic real es igual a la saturación IC y Vce será 0.

    Divisor de voltaje: también requiere R1, R2 (resistencias divisoras superior e inferior).

    Vth = Vcc*R2/ (R1+R2)

    Rth = R1*R2/ (R1+R2)

    Ic = (Vth-Vbe)/(RE+RTH/Beta)

    Vce = Vcc-Ic* (Re+Rc)

    Saturación IC = Vcc/ (Rc+Re)

    Realimentación del colector: también requiere Rb (resistencia base).

    Ic = (Vcc-Vbe)/(RE+RC+RB/beta)

    Vce = Vcc-Ic* (Re+Rc)

    Saturación IC = Vcc/ (Rc+Re)

    Emisor de dos fuentes: también requiere Vee (fuente de emisor negativo) y Rb (resistencia base).

    Ic = (Vee-Vbe)/(RE+RB/beta)

    Vce = Vee+Vcc-Ic* (Re+Rc)

    Saturación IC = (Vee+Vcc)/(Rc+Re)

    donde Vee es un valor absoluto en todos los casos.


    This page titled 3.1: Introducción is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by James M. Fiore via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.