SENSORES EN ENTRADAS ANALÓGICAS DE ARDUINO

SENSORES EN ENTRADAS ANALÓGICAS DE ARDUINO

head

(10/08/14)

En este tutorial explicaremos paso a paso como conectar sensores analógicos en las entradas analógicas de Arduino y a como calcular la variable de medida del sensor.

Material

-Arduino Uno Rev 3

-Sensor analógico cualquiera (temperatura, gas propano, amperímetro, acelerómetro…)

 

Sensores analógicos

Los sensores analógicos normalmente se componen de tres pins: positivo, masa y salida de voltaje analógica. Esta salida de voltaje es directamente proporcional a la variable de medida del sensor (lineal).

GRAFICA SENSOR ANAL

Estas salidas de voltaje analógico se pueden conectar a las entradas analógicas de Arduino para poder medir la variable del sensor.

 

Entradas analógicas de Arduino

Las placas Arduino disponen de varias entradas analógicas. En el caso del Arduino Uno Rev 3, tiene 6 pins analógicos. Estos pins aceptan un voltaje máximo de 5V. La mayoría de sensores analógicos se pueden alimentar a 5V por lo que su voltaje máximo de salida será este. En la siguiente imagen se puede observar cómo se conecta un sensor analógico en Arduino:

esquema conexion

Para poder obtener la variable del sensor en el código Arduino, se deben seguir 3 pasos:

  1. ADC del voltaje analógico procedente del sensor.
  2. Obtener el voltaje del sensor
  3. Obtener la variable del sensor

 

1 – ADC (Analog-to-Digital Converter)

Cuando entra un voltaje analógico en un pin analógico de Arduino, este hace la conversión de analógico a digital (ADC). Quiere decir que convierte el voltaje de entrada 0-5V en valores enteros comprendidos entre 0-1023. Para entender este valor, hay que saber que las entradas analógicas de Arduino son de 10 bits. Tal como sabemos, un bit puede ser 1 o 0 (dual). Con un nombre n de bits se pueden representar hasta 2nvalores digitales. En el caso de las entradas analógicas de Arduino:   210 = 1024 valores (de 0 a 1023)

ADC GRAFICA

 

2 – Obtener el voltaje del sensor

El siguiente paso es convertir estos valores nuevamente a voltaje en el código de Arduino. Para esto se tiene que multiplicar el valor leído del pin analógico por 5 (que son los 5V máximo que da el sensor) y dividirlo entre 1023 (que es el valor más grande dentro del rango de 10 bits). La fórmula sería la siguiente:

formula

De este modo, tenemos relacionada el voltaje de salida del sensor con los valores digitales de Arduino.

 

grafica valores to voltaje

3 – Obtener la variable del sensor

El último paso es obtener la variable de medida del sensor. Para calcular esta, tenemos que saber la relación voltaje/variable del sensor. Esta información la encontraremos en el datasheet del sensor.

Si por ejemplo usamos el sensor de temperatura LM35, el datasheet nos informa que en su salida da 10mV por 1º.

lm35 features

A través de esta información, tenemos que encontrar la relación de 1V ya que la escala que usamos con Arduino es de voltio en voltio. Como es una conversión lineal, usando una simple regla de tres podemos calcular esta relación. En este caso el resultado es que 1V equivale a 100ºC.

GRAFICA VOLAJE TO VARIABLE

Con esto, tenemos que multiplicar el voltaje obtenido en el paso anterior por el valor de la relación voltaje-variable (en este caso 100) y obtendremos la variable de medida del sensor.

formula 2

 

Aunque para este ejemplo hemos usado el sensor de temperatura LM35, estos 3 pasos sirven para cualquier sensor analógico que conectemos al Arduino. Simplemente cambiará la relación Voltaje/Variable del último paso.

Código Arduino

Ahora haremos el código de Arduino haciendo cada paso descrito anteriormente usando para este ejemplo el sensor LM35, aunque este código puede servir también como plantilla para conectar cualquier sensor analógico.

/*
  www.diymakers.es
  by A.García
  10/08/14
  Sensores en entradas analógicas de Arduino
  Tutorial en: http://diymakers.es/sensores-en-entradas-analogicas-de-arduino/
*/

#define pin_sensor A5 //Pin del sensor
float adc; //Variable para obtener los valores en el 1 paso
float voltaje; //Variable para obtener el voltaje en el 2 paso
float variable; //Variable final del sensor en el 3 paso
float rel_voltaje_variable = 100.00; //Relación Voltaje/Variable del sensor (en el caso del LM35 es 100)

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  //Paso 1, conversión ADC de la lectura del pin analógico
  adc = analogRead(pin_sensor);
  Serial.println(adc);

  //Paso 2, obtener el voltaje
  voltaje = adc * 5 / 1023;
  Serial.println(voltaje);

  //Paso 3, obtener la variable de medida del sensor
  variable = voltaje * rel_voltaje_variable;
  Serial.println(variable);

  delay(1000);
}

 

Sensores con mediciones negativas

Hay sensores que pueden medir variables con valor negativo. Por ejemplo tenemos un sensor que su gráfica voltaje/variable es la siguiente:

grafica negative

Para poder medir estos valores negativos con Arduino, hay que localizar el offset. El offset se puede apreciar en la gráfica, es el punto  que la línea cruza el eje vertical (voltaje). En nuestro sensor, el offset es 1V. El offset lo tenemos que restarlo con el voltaje en el último paso.

/*
  www.diymakers.es
  by A.García
  10/08/14
  Sensores en entradas analógicas de Arduino
  Tutorial en: http://diymakers.es/sensores-en-entradas-analogicas-de-arduino/
*/

#define pin_sensor A5 //Pin del sensor
float adc; //Variable para obtener los valores en el 1 paso
float voltaje; //Variable para obtener el voltaje en el 2 paso
float variable; //Variable final del sensor en el 3 paso
float rel_voltaje_variable = 40.00; //Relación Voltaje/Variable del sensor
float offset = 1.00; //Offset

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  //Paso 1, conversión ADC de la lectura del pin analógico
  adc = analogRead(pin_sensor);
  Serial.println(adc);

  //Paso 2, obtener el voltaje
  voltaje = adc * 5 / 1023;
  Serial.println(voltaje);

  //Paso 3, obtener la variable de medida del sensor
  variable = ((voltaje - offset) * rel_voltaje_variable);
  Serial.println(variable);

  delay(1000);
}

 

Fijaos que hemos tenido que cambiar también el valor de la relación voltaje/variable. En este caso tenemos que 1V equivale a 40… (la variable del sensor). De esta manera, en este ejemplo el Arduino puede medir el rango entre -40 a 160. Esto lo podemos aplicar a cualquier sensor que su gráfica voltaje/variable mida valores negativos.

Hasta aquí este tutorial dedicado a conectar sensores analógicos a las entradas analógicas de Arduino, que nos servirá para entender mejor los pasos que hay que seguir para obtener los valores de los sensores para nuestros proyectos.

 

 

6 thoughts on “SENSORES EN ENTRADAS ANALÓGICAS DE ARDUINO

Deja un comentario