Saltar al contenido principal
LibreTexts Español

9.1: Introducción

  • Page ID
    83096
  • \( \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 examinaremos un método de obtención de señales de entrada analógicas como las generadas por diversos sensores continuos. Se pueden usar sensores continuamente variables para medir la temperatura, la fuerza, la aceleración, etc. Esta capacidad se combinará con las técnicas digitales de entrada y salida ya examinadas para producir un sistema que indique una fuerza aplicada a través de una cadena de LEDs; Cuanto mayor sea la fuerza aplicada al sensor, mayor será la indicación LED.

    Los microcontroladores se basan en convertidores analógicos a digitales (ADC) para obtener datos de entrada continuamente variables. El ATMega 328P contiene un ADC de 10 bits junto con un multiplexor de seis canales. Estas seis líneas se llevan al encabezado de entrada analógica del Arduino Uno; pines A0 a A5. Por defecto, el voltaje de referencia para el convertidor es la fuente de CC de cinco voltios integrada. Esto representa el nivel máximo de entrada que se puede digitalizar. El nivel mínimo es tierra o cero voltios (si se necesitan señales negativas, se requerirá alguna forma de polarización compensada). Un convertidor de 10 bits\(2^{10}\) rinde 1024 niveles discretos. Esto significa que cada paso será ligeramente inferior a cinco milivoltios.

    Para utilizar el ADC, se debe establecer un voltaje de referencia durante la rutina de inicialización. Después de esto, siempre que se necesite un valor, simplemente llame a la función analogRead (). El único argumento para la función es el canal de entrada deseado (cero a cinco para el Uno). La función devuelve el valor digitalizado como un entero en el rango de 0 a 1023. Si bien es posible ir directo a los registros de hardware para acceder al ADC, la biblioteca Arduino es bastante eficiente y solo guardaremos unos pocos bytes, si los hubiera, evitándolo 1.

    Comenzaremos con algo sencillo para ilustrar cómo leer un pin de entrada analógica. Tenga en cuenta que a diferencia de los puertos digitales, al usar la función analogRead () no es necesario establecer inicialmente PinMode () o un registro de dirección de datos (DDRX).

    Conecte los pines exteriores de un\(\Omega\) potenciómetro de 10 k a los terminales de +5V y tierra en el cabezal de Uno. Conecte el limpiaparabrisas al pin analógico 0 (A0). Ingresa el código a continuación, compile y transfiéralo al tablero.

    /* Read analog V1. Reads voltage off of a pot and prints the digitized value 
    to the Serial Monitor. Range = 0->1024 */
    
    #define ANALOG_IN_PIN 0
    
    int prior = 0; // remembers prior value of analog input
    
    void setup()
    {
      Serial.begin(9600);
      analogReference( DEFAULT );
    }
    void loop()
    {
          int a;
    
          a = analogRead( ANALOG_IN_PIN );
    
          if( a != prior )
          {
                Serial.println(a);
                prior = a;
          }
    }
    

    El código se explica por sí mismo. El giro interesante es que en lugar de simplemente imprimir el valor analógico, el valor se compara con el valor anterior y sólo si son diferentes es el resultado impreso. Esto ahorra un poco de esfuerzo de procesamiento y acelera las cosas.

    Abra el Monitor Serial. Gire el eje de la olla en sentido horario y antihorario. Los valores en el Monitor Serie deben cambiar a medida que se ajusta el eje. Los valores deben rastrear desde 0 hasta 1023 (es posible que esté apagado por un conteo debido al ruido). Literalmente, se podría determinar el voltaje real del limpiaparabrisas del potenciómetro multiplicando el valor impreso por el tamaño del paso (5V/1024 o aproximadamente 4.883 milivoltios por paso), logrando así un voltímetro de CC muy rudimentario.

    Referencias

    1 Consulte “Bits & Pieces: AnalogRead” en el texto para más detalles.


    This page titled 9.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.