[Básico] Medir Una Resistencia Con Arduino

17,956

7

3

Introduction: [Básico] Medir Una Resistencia Con Arduino

En Arduino existen únicamente dos formas de captar datos del mundo exterior:

- Digital: sus valores pueden ser 0 o 1, dependiendo de si se aplica o no un voltaje al conector que se está leyendo como entrada.

- Analógica: sus valores pueden ser entre 0 y 1023, dependiendo del voltaje aplicado entre 0 y el voltaje de alimentación de la placa (normalmente 5V, pero puede ser 3.3V).

En ambos casos hablamos de una medida de voltaje, no de resistencia, amperaje, capacitancia, inductancia... únicamente voltaje.

Es por ello que para hacer otro tipo de mediciones con una placa Arduino (y en general cualquier microcontrolador), debemos buscar la forma de transformar el valor medido en un valor de voltaje.

La resistencia es el caso más sencillo para ello.

Step 1: Divisor De Voltaje

Un divisor de tensión o voltaje es una configuración de elementos en un circuito eléctrico que actúa dividiendo una tensión entrante y devolviendo una tensión de salida calculable.

En nuestro caso hablaremos de un divisor de voltaje resistivo, en el que emplearemos 2 resistencias. Como nuestro objetivo es calcular una de ellas, la otra debe ser de un valor conocido.

La ecuación que define el comportamiento del división de voltaje es la que podemos ver en las imágenes.

Lo mejor para familiarizarnos es ver un par de ejemplos de cálculos.

Step 2: Ejemplo

Supongamos que queremos calcular R1[Ver esquema del paso anterior]

Sabemos que R2 tiene un valor de 10KΩ, sabemos que Vin tiene un valor de 5V (lo que normalmente nos encontramos en el entorno Arduino) y que la lectura de Vout en un pin analógico de Arduino es de 750.

1º- Sabemos que la resolución de la ADC de Arduino es de 10 bits, lo que significa que tiene 1024 divisiones posibles (2 elevado a 10) para un valor de entrada entre 0V y 5V. Por lo tanto si ponemos 5V en un pin analógico, su valor será 1023 (no será 1024, recordemos que empieza a contar en 0, no en 1); si ponemos 0V en el pin, su valor será 0 y si por ejemplo ponemos 2,5V su valor será 511.

Por lo tanto, si el valor que nos da la lectura analógica del pin en su valor digital es 750, podemos ya calcular el Vout, el voltaje de salida del divisor de voltaje.

>> 5V / 1024 divisiones = 0,00488V / división

>> 0,00488 voltios/división · 750 divisiones = 3.66V

2º- Podemos ya despejar R1, que era la incógnita:

>> Vout = ( R2 / R1+R2 ) · Vin

>> 3.66 V = ( 10KΩ / R1 + 10KΩ) · 5V

>> R1 + 10KΩ = 10KΩ · 5V / 3.66V

>> R1 = ( 10KΩ · 5V / 3.66V ) - 10KΩ = 3.66


En general, podemos calcular el valor de R1 como:

>> R1 = ( R2 · Vin / Vout ) - R2

Step 3: Ejemplo De Código

Poniendo en práctica todo lo que hemos explicado antes, dejamos aquí un ejemplo de código que calcula R1 leyendo el voltaje mediante la entrada analógica A0, simplemente aportando el valor de R2.

Be the First to Share

    Recommendations

    • The 1000th Contest

      The 1000th Contest
    • Battery Powered Contest

      Battery Powered Contest
    • Hand Tools Only Challenge

      Hand Tools Only Challenge

    3 Discussions

    0
    JoseP273
    JoseP273

    2 years ago

    Hola muy buena la entrada y perfecta explicación. Solo una duda: No entiendo que son esos 750 que lee una entrada analógica en Vout. ¿Me ayudas? Gracias.

    Saludos.

    0
    marcelor77
    marcelor77

    3 years ago

    //programacao do arduino corrigida

    int sensorPin = A5;

    int valorSensor;

    float voltaje, r1, r2;

    void setup() {

    pinMode(sensorPin,INPUT);

    Serial.begin(9600);

    r2 = 10000; // R2 = 10KΩ

    }

    void loop() {

    valorSensor= analogRead(sensorPin); // Lee el valor del pin analogico A0

    voltaje = (valorSensor*5.0/1023.0); // Calcula el voltaje

    r1 = (voltaje*r2)/(5-voltaje);

    /*

    // Otra forma de calcular R1, sera ignorar el voltaje y tomar las divisiones directamente del valor medido

    r1 = ((r2*1024)/valorsensor)-r2;

    */

    Serial.print("Vout = ");

    Serial.print(voltaje);

    Serial.print("V | R1 = ");

    Serial.print(r1);

    Serial.println("Ω");

    delay(1000);

    }

    0
    GrisI
    GrisI

    3 years ago

    Una fotito del circuito y una de la salida del serial sería espectacular