Archivo de la etiqueta: DHT

Sonda Temperatura DHT11 Arduino

Sensor de humedad y temperatura DHT11. Es lo suficientemente exacta para la mayoría de los proyectos que necesitan hacer un seguimiento de las lecturas de humedad y temperatura.

El sensor incluye un sensor de humedad capacitivo y un sensor de temperatura NTC, conectado con un microcontrolador de 8 bits de alto rendimiento.

Aplicaciones: HVAC, deshumidificador, ensayos e inspección de equipos, bienes de consumo, control automático, automóvil, registradores de datos, estaciones meteorológicas, electrodomésticos, regulador de humedad, humedad médicos y otros medición y control.

Parámetros del producto:

  • Humedad relativa:
    • Resolución: 16 bits
    • Repetibilidad: ±1% H.R.
    • Precisión: 25 ° C ± 5% hr
    • Histéresis: < ± 0.3% RH
    • Estabilidad a largo plazo: < ± 0.5% hr / año
  • Temperatura:
    • Resolución: 16 bits
    • Repetibilidad: ±0. 2 ° C
    • Precisión: 25 ° C ± 2° c
  • Características eléctricas
    • Fuente de alimentación: DC 3.5 ~5.5V
    • Corriente: medición 0.3mA
    • Espera 60μA
    • Periodo de muestreo: más de 2 segundos
  • Descripción pines:
    • VDD alimentación 3,5~5.5V DC
    • serie de datos, un solo bus
    • NC, pin vacío
    • GND tierra, la energía negativa

Datasheet y protocolo sonda DHT11: https://akizukidenshi.com/download/ds/aosong/DHT11.pdf

Conexión Arduino:

Otra vez vamos a usar una biblioteca diseñada específicamente para estos sensores que harán que nuestro código corto y fácil de escribir. Librería: https://github.com/olewolf/DHT_nonblocking

Esta librería no está en el gestor de librerías, así que habrá de descargarla e instalar manualmente

Ejecutar el sketch y ver datos: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/10-DHT11/DHT_nonblocking/DHT_nonblocking.ino

Otra biblioteca para esta sonda disponible en el gestor de librerías en SimpleDHT: https://github.com/winlinvip/SimpleDHT

Ejecutar el ejemplo DHT11Default de la librería SimpleDHT y ver los datos por el monitor serie.

Anuncios

Sensores Arduino

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:

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:

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.

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

Sensores Arduino

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:

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:

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.

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:

Uso de Librerías Arduino

La instalación, actualización y manejo librerías en Arduino es un aspecto importante a la hora de usar Arduino, veamos unos ejemplos. Para aprender a instalar librerías lo mejor es practicar, veamos unos ejemplos de instalación de algunas librerías muy útiles.

Cuando se va a instalar una librería, la primera tarea es leer la documentación y aprender a usarla, ya sea leyendo el código, viendo los ejemplos o revisando la documentación si está disponible.

Pasos para realizar los ejemplos propuestos:

  • Leer la documentación y entender que hace la librería.
  • Buscar e instalar la librería desde el gestor de librerías, si está disponible.
  • Descargar el .zip del repositorio de github si no está en el gestor de librerías. Botón Download zip
  • Abrir alguno de los ejemplo suministrados por las librerías, leer el código, entender que hace y ejecutarlo en Arduino.

Desinstalar librerías: Para desinstalar una librería simplemente borrar el directorio de la librería situado en la ruta configurada en las preferencias de Arduino y reiniciar el IDE.

Librería MsTimer2

MsTimer2 nos ofrece muchas utilidades de temporización muy útiles en el trabajo diario con Arduino.

Instalar la librería MsTimer2 desde el gestor de librerías. Ejecutar el programa de ejemplo incluido en la librería para hacer blink (FlashLed) en el led integrado sin necesidad de usar la instrucción delay().

Esquema de conexiones:

Documentación de la librería: http://playground.arduino.cc/Main/MsTimer2

Nueva versión de la librería: http://www.pjrc.com/teensy/td_libs_MsTimer2.html

Repositorio: https://github.com/PaulStoffregen/MsTimer2

Librería Timer

La librería Timer es otra de librería de muy interesante de temporización más flexible pero menos exacta de MsTimer2. Esta librería no está disponible en el gestor de librerías.

Documentación de la librería: http://www.doctormonk.com/2012/01/arduino-timer-library.html

Repositorio: https://github.com/JChristensen/Timer

Instalar la librería timer y ejecutar los ejemplos blink2 y read_A0_flashLED.

Esquema conexión blink2 (prestar atención al código y poner los leds a los pines correctos):

Esquema conexión read_A0_flashLED (prestar atención al código y poner el led al pin correcto o cambiar el código):

Comparación comportamiento librería msTimer2 y Timer: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Otros/compara_timers

Librería Time

La librería Time que añade funcionalidades de mantenimiento de fecha y hora en Arduino sin necesidad de un hardware externo. También permite obtener fecha y hora como segundo, minuto, hora, día, mes y año.

Librería: http://playground.arduino.cc/Code/Time

Documentación: http://www.pjrc.com/teensy/td_libs_Time.html

Repositorio: https://github.com/PaulStoffregen/Time

Instalar la librería Time desde el gestor y ejecutar el ejemplo TimeSerial. Para ver la hora que debemos mandar a Arduino en el ejemplo ver https://www.epochconverter.com/

Librería para sonda temperatura/humedad DHT.

Librería para manejar un elemento HW como la sonda de temperatura y humedad DHT22.

Señal de comunicación:

Web del sensor: http://www.seeedstudio.com/depot/grove-temperaturehumidity-sensor-pro-p-838.html

Documentación: http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro

Datasheet: https://arduino-info.wikispaces.com/file/view/DHT22.pdf/556588503/DHT22.pdf

Repositorio: https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor

En este caso en el gestor de librerías tenemos dos librerías disponibles:

Pero la tienda donde lo compro me recomienda usar la librería https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor

Además de estas tres librerías, existen muchas más. Cualquiera de las librerías para la sonda DHT22 vale para usarla, pero cada una de ellas funciona diferente y cada una de ellas tiene sus ventajas e inconvenientes.

Instalación Librerías

La instalación, actualización y manejo librerías en Arduino es un aspecto importante a la hora de usar Arduino.

Para aprender a instalar librerías lo mejor es practicar, veamos unos ejemplos de instalación de dos librerías muy útiles como son la MsTimer2 que nos ofrece muchas utilidades de temporización y la librería para manejar un elemento HW como la sonda de temperatura y humedad DHT22.

Cuando se va a instalar una librería, la primera tarea es leer la documentación y aprender a usarla, ya sea leyendo el código, viendo los ejemplos o revisando la documentación si está disponible.

Pasos para realizar las prácticas:

  • Leer la documentación y entender que hace la librería.
  • Descargar el .zip del repositorio de github. Botón Download zip
  • Instalar la librería desde el IDE de Arduino
  • Buscar si la librería está en el gestor de librerías e instalarla.
    NOTA: Antes de instalar con el gestor de librerías, desinstalar la librería si se ha instalado en el paso anterior. Para desinstalar, borrar el directorio de la librería y reiniciar el IDE de Arduino.
  • Abrir alguno de los ejemplo suministrados por las librerías, leer el código, entender que hace y ejecutarlo en Arduino.

Práctica. Librería MsTimer2.

Instalar la librería MsTimer2 que nos será de utilidad en el futuro. Ejecutar el programa de ejemplo incluido en la librería para hacer blink sin necesidad de usar la instrucción delay().

Instalar la librería manualmente y desde el gestor de librerías.

Documentación de la librería: http://playground.arduino.cc/Main/MsTimer2

Nueva versión de la librería: http://www.pjrc.com/teensy/td_libs_MsTimer2.html

Repositorio: https://github.com/PaulStoffregen/MsTimer2

Práctica. Librería Timer.

Instalar la librería timer y ejecutar los ejemplos blink2 y read_A0_flashLED.

Documentación de la librería: http://www.doctormonk.com/2012/01/arduino-timer-library.html

Repositorio: https://github.com/JChristensen/Timer

Práctica. Librería Time

Instalar la librería Time que añade funcionalidades de mantenimiento de fecha y hora en Arduino sin necesidad de un hardware externo. También permite obtener fecha y hora como segundo, minuto, hora, día, mes y año.

Ejecutar el ejemplo TimeSerial.

Librería: http://playground.arduino.cc/Code/Time

Documentación: http://www.pjrc.com/teensy/td_libs_Time.html

Repositorio: https://github.com/PaulStoffregen/Time

Práctica. Librería Sonda temperatura/humedad DHT.

Señal de comunicación:

Instalar la librería del sensor de temperatura y humedad DHT22, tanto de forma manual como con el gestor de librerías.

Web del sensor: http://www.seeedstudio.com/depot/grove-temperaturehumidity-sensor-pro-p-838.html

Documentación: http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro

Datasheet: https://arduino-info.wikispaces.com/file/view/DHT22.pdf/556588503/DHT22.pdf

Repositorio: https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor