Un sensor es un dispositivo capaz de detectar magnitudes físicas o químicas, llamadas variables de instrumentación, y transformarlas en variables eléctricas.
- Las variables de instrumentación pueden ser por ejemplo: temperatura, intensidad lumínica, distancia, aceleración, inclinación, desplazamiento, presión, fuerza, torsión, humedad, movimiento, pH, etc.
- Una magnitud eléctrica puede ser una resistencia eléctrica (como en una RTD), una capacidad eléctrica (como en un sensor de humedad o un sensor capacitivo), una tensión eléctrica (como en un termopar), una corriente eléctrica (como en un fototransistor), etc.
Los sensores se pueden clasificar en función de los datos de salida en:
- Digitales
- Analógicos
Dependiendo del tipo de sensor, deberemos conectarlo a una entrada digital o analógica.
Y dentro de los sensores digitales, estos nos pueden dar una señal digital simple con dos estados como una salida de contacto libre de tensión o una salida en bus digital. En caso que el sensor use comunicación por bus, deberemos usar algunos de los buses que implementa Arduino o usar hardware adicional que nos proporcione un interfaz entre el Arduino y el bus.
Un ejemplo de sensor analógico sería el ACS714, es un sensor de efecto hall que mide las corrientes eléctricas que pasan a través del chip y devuelve un valor en voltaje proporcional a la corriente que circula por el sensor:
Datasheet: http://www.allegromicro.com/~/Media/Files/Datasheets/ACS714-Datasheet.ashx
Como medir corriente con Arduino y un sensor ACS714: http://playground.arduino.cc/Main/CurrentSensing
Tutorial de uso del sensor ACS714: http://www.instructables.com/id/How-to-Measure-AC-Current-using-Hall-Effect-Sensor/?ALLSTEPS
Características de los sensores
- Rango de medida: dominio en la magnitud medida en el que puede aplicarse el sensor.
- Precisión: es el error de medida máximo esperado.
- Offset o desviación de cero: valor de la variable de salida cuando la variable de entrada es nula. Si el rango de medida no llega a valores nulos de la variable de entrada, habitualmente se establece otro punto de referencia para definir el offset.
- Linealidad o correlación lineal.
- Sensibilidad de un sensor: suponiendo que es de entrada a salida y la variación de la magnitud de entrada.
- Resolución: mínima variación de la magnitud de entrada que puede detectarse a la salida.
- Rapidez de respuesta: puede ser un tiempo fijo o depender de cuánto varíe la magnitud a medir. Depende de la capacidad del sistema para seguir las variaciones de la magnitud de entrada.
- Derivas: son otras magnitudes, aparte de la medida como magnitud de entrada, que influyen en la variable de salida. Por ejemplo, pueden ser condiciones ambientales, como la humedad, la temperatura u otras como el envejecimiento (oxidación, desgaste, etc.) del sensor.
- Repetitividad: error esperado al repetir varias veces la misma medida.
Más información: http://es.wikipedia.org/wiki/Sensor#Caracter.C3.ADsticas_de_un_sensor
Tipos de sensores: http://es.wikipedia.org/wiki/Sensor#Tipos_de_sensores
IMPORTANTE: A la hora de elegir un sensor, debemos leer detenidamente las características y elegir uno que sea compatible con nuestro sistema (intensidad y voltaje) y que sea sencillo de usar o nos faciliten una librería sencilla y potente.
Catálogo de sensores:
- http://tienda.bricogeek.com/23-sensores
- http://www.trossenrobotics.com/c/arduino-sensors.aspx
- https://www.seeedstudio.com/s/sensors.html
- https://www.sparkfun.com/categories/23
- http://www.phidgets.com/
- http://www.electronicaestudio.com/sensores.htm
Sensores con comunicación por bus.
Un bus (o canal) es un sistema digital que transfiere datos entre los componentes de una dispositivo electrónico o entre varios. Está formado por cables o pistas en un circuito impreso, dispositivos como resistencias y condensadores además de circuitos integrados.
La tendencia en los últimos años hacia el uso de buses seriales como el USB, Firewire, etc… para comunicaciones con periféricos, reemplazando los buses paralelos, a pesar de que el bus serial posee una lógica compleja (requiriendo mayor poder de cómputo que el bus paralelo) se produce a cambio de velocidades y eficacias mayores.
Arduino dispone de buses serie I2C y SPI para comunicarse con dispositivos sin necesidad de HW adicional
Bus RS485:
Más información en: http://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica)
Existen muchos tipos de buses de comunicaciones, algunos de ellos los implementa arduino mediante controladores HW integrados en la MCU (I2C) o mediante una librería como one wire. En otros casos es necesario un hardware adicional para adaptar la señal con un transceiver y manejar el protocolo con un controlador, por ejemplo can bus o modbus.
Sondas DHT11 y DHT22
Los sensores DHT11 o DHT22 que son ampliamente usados con Arduino, son unos pequeños dispositivos que nos permiten medir la temperatura y la humedad. A pesar que estas medidas son analógicas, estos sensores los tendremos que conectar a pines digitales, ya que la señal de salida es digital a un bus punto a punto. Llevan un pequeño microcontrolador interno para hacer el tratamiento de señal. Estos sensores han sido calibrados en laboratorios, presentan una gran fiabilidad.
Estos sensores funcionan con ciclos de operación de duración determinada. En determinados casos de aplicaciones los tiempos de lectura de los sensores puede ser determinante a la hora de elegirlo.
Parámetro | DHT11 | DHT22 |
Alimentación | 3Vdc ≤ Vcc ≤ 5Vdc | 3.3Vdc ≤ Vcc ≤ 6Vdc |
Señal de Salida | Digital | Digital |
Rango de medida Temperatura | De 0 a 50 °C | De -40°C a 80 °C |
Precisión Temperatura | ±2 °C | <±0.5 °C |
Resolución Temperatura | 0.1°C | 0.1°C |
Rango de medida Humedad | De 20% a 90% RH | De 0 a 100% RH |
Precisión Humedad | 4% RH | 2% RH |
Resolución Humedad | 1%RH | 0.1%RH |
Tiempo de sensado | 1s | 2s |
Tamaño | 12 x 15.5 x 5.5mm | 14 x 18 x 5.5mm |
Más información sobre la sonda DHT22: http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro
Datasheet de sondas DHT22:
- https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf
- http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf
Este esquema explica como funciona este sensor y el protocolo de comunicación. La librería implementa el protocolo y facilita el uso de la sonda con Arduino.
Vemos como para un mismo sensor tenemos diferentes librerías con funciones y uso diferente en cada una de ellas. Cada uno de los distribuidores de estas sondas ha creado su propia librería.
- https://github.com/Seeed-Studio/Grove_Temper_Humidity_TH02
- https://github.com/sparkfun/RHT03
- https://github.com/adafruit/DHT-sensor-library
- http://playground.arduino.cc/Main/DHT11Lib incluye calculo punto de rocio
Sonda DHT18B20
Otra sonda de temperatura muy usada con Arduino es la DS18B20, esta usa un bus de comunicación multipunto llamado one wire, lo que nos permite leer muchas sondas con una sola i/o digital.
Sonda: http://www.seeedstudio.com/depot/One-Wire-Temperature-Sensor-p-1235.html
Datasheet sensor: http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Librería: http://playground.arduino.cc/Learning/OneWire
Última version de la librería: http://www.pjrc.com/teensy/td_libs_OneWire.html
Protocolo one-wire:
Librería sonda DS18B20: https://github.com/RobTillaart/Arduino/tree/master/libraries/DS18B20
Otros Sensores
Ejemplos de sensores. Kits Arduino: http://www.robotshop.com/en/37-modules-sensor-kit-arduino.html