====== Comparaciones ======
^ ^ LM35 ^ DHT11 ^ DHT22 ^ DS18B20 ^ BME280 ^ BMP180/BMP185 ^ DPS310 ^ MCP9808 ^
^ Mide | Temperatura | Temperatura y Humedad | Temperatura y Humedad | Temperatura | Temperatura, Humedad y Presión Atmosférica | Temperatura, Humedad y Presión Atmosférica |Temperatura y Presión Atmosférica | Temperatura |
^ Protocolo | Analógo | One-wire | One-wire | One-wire | I2C, SPI | I2C | I2C, SPI | I2C |
^ Voltaje | 4 to 30 V DC | 3 to 5.5V DC | 3 to 6V DC | 3 to 5.5V DC | 1.7 to 3.6V (para el chip) 3.3 a 5V para la tarjeta | 1.7 to 3.6V (para el chip) 3.3 a 5V para la tarjeta | 1.7V a 3.6V | 2.7V to 5.5V |
^ Rango Temp | -55 to 150ºC | 0 to 50ºC | -40 to 80ºC | -55 to 125ºC | -40 to 85ºC | 0 to 65ºC | -40.0 °C 85.0 °C | -40°C to +125°C |
^ Precisión | +/-0.5°C (a 25°C)| +/- 2°C (de 0 a 50°C) | +/- 0.5ºC (de -40 a 80°C) | +/-0.5°C (de -10 a 85°C) | +/-0.5°C (a 25°C) | +/-0.5°C (a 25°C) | ±0.5C° | 0.25°C de -40°C a 125°C (0.5°C de -20°C a 100°C) |
^ Muestras | | Cada 1/segundo| Cada 2/segundo | | | | |
^ Precio | [[https://www.amazon.com/Bridgold-Analogue-Precision-Centigrade-Temperature/dp/B07Y7FCZYB/|$2.60]]/cu | [[https://www.amazon.com/HiLetgo-Temperature-Humidity-Digital-3-3V-5V/dp/B01DKC2GQ0|$2.10]]/cu | [[https://www.amazon.com/HiLetgo-Temperature-Humidity-Electronic-Practice/dp/B0795F19W6|$5.50]]/cu | [[https://www.amazon.com/HiLetgo-DS18B20-Temperature-Stainless-Waterproof/dp/B00M1PM55K/|$2.2]]/cu | [[https://www.amazon.com/Onyehn-Temperature-Humidity-Barometric-Pressure/dp/B07KR24P6P/|$4.25]]/cu | [[https://www.amazon.com/JBtek-Barometric-Pressure-Temperature-Altitude/dp/B00UUS12PO|$5.99]]/cu | [[https://www.adafruit.com/product/4494|$6.95]] /cu | [[https://www.adafruit.com/product/1782|$4.95]] c/u |
^ | | | | | | | |
====== Probados ======
Los sensores de temperatura que se han utilizado son:
- DS18B20 Solo temperatura impermeable
- DHT11 Para temperatura humedad*
* Para ver la comparación entre un DHT11 y un DHT22 ver https://learn.adafruit.com/dht/overview
====== Sensor DHT11 ======
Diagrama de conexión:
{{ :proyectos:arduino-and-dht11_bb1_3vsonloxcb.png?200 |}}
#include
#include
#include
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN 4
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
// Inicializamos el sensor DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Inicializamos comunicación serie
Serial.begin(9600);
// Comenzamos el sensor DHT
dht.begin();
}
void loop() {
// Esperamos 5 segundos entre medidas
delay(5000);
// Leemos la humedad relativa
float h = dht.readHumidity();
// Leemos la temperatura en grados centígrados (por defecto)
float t = dht.readTemperature();
// Leemos la temperatura en grados Fahrenheit
float f = dht.readTemperature(true);
// Comprobamos si ha habido algún error en la lectura
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Error obteniendo los datos del sensor DHT11");
return;
}
// Calcular el índice de calor en Fahrenheit
float hif = dht.computeHeatIndex(f, h);
// Calcular el índice de calor en grados centígrados
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Índice de calor: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
====== Sensor DS18B20 ======
Esquema del sensor:
{{ :proyectos:arduino-ds18b20-esquema.png?200 |}}
Diagrama de conexión, aca son dos sensores conectados
{{ :proyectos:ds18b20-vdd-arduino-uno-01.png?200 |}}
#include
#include
// Pin donde se conecta el bus 1-Wire
const int pinDatosDQ = 9;
// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
void setup() {
// Iniciamos la comunicación serie
Serial.begin(9600);
// Iniciamos el bus 1-Wire
sensorDS18B20.begin();
}
void loop() {
// Mandamos comandos para toma de temperatura a los sensores
Serial.println("Mandando comandos a los sensores");
sensorDS18B20.requestTemperatures();
// Leemos y mostramos los datos de los sensores DS18B20
Serial.print("Temperatura sensor 0: ");
Serial.print(sensorDS18B20.getTempCByIndex(0));
Serial.println(" C");
delay(1000);
}
====== Prueba de sensores ======
Se realizó una prueba de sensores DHT11 (error de +-2C y RH ± 5%) y de los DS18B20 (error de +-0.5C) para elegir los sensores que mostraran mas uniormidad. De entre estos sensores se usaron dos compradores de los DHT11:
* [[https://www.amazon.com/gp/product/B01H3J3H82/| Gowoops]]
* [[https://www.amazon.com/gp/product/B07HX14M4K |NOYITO ]]
#include
#include
#include
#include
#include
// Pin donde se conecta el bus 1-Wire
const int pinDatosDQ = 2;
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN1 13
#define DHTPIN2 12
#define DHTPIN3 11
#define DHTPIN4 10
#define DHTPIN5 9
#define DHTPIN6 8
#define DHTPIN7 7
#define DHTPIN8 6
#define DHTPIN9 5
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
DHT dht3(DHTPIN3, DHTTYPE);
DHT dht4(DHTPIN4, DHTTYPE);
DHT dht5(DHTPIN5, DHTTYPE);
DHT dht6(DHTPIN6, DHTTYPE);
DHT dht7(DHTPIN7, DHTTYPE);
DHT dht8(DHTPIN8, DHTTYPE);
DHT dht9(DHTPIN9, DHTTYPE);
// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
void setup() {
// Iniciamos la comunicación serie
Serial.begin(9600);
// Iniciamos el bus 1-Wire
sensorDS18B20.begin();
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
dht5.begin();
dht6.begin();
dht7.begin();
dht8.begin();
dht9.begin();
}
void loop() {
delay(5000);
// Mandamos comandos para toma de temperatura a los sensores
Serial.println("Mandando comandos a los sensores");
sensorDS18B20.requestTemperatures();
// Leemos y mostramos los datos de los sensores DS18B20
Serial.print("Temperatura DS18B20: ");
Serial.print(sensorDS18B20.getTempCByIndex(0)); Serial.print(" - ");
Serial.print(sensorDS18B20.getTempCByIndex(1)); Serial.print(" - ");
Serial.print(sensorDS18B20.getTempCByIndex(2)); Serial.print(" - ");
Serial.print(sensorDS18B20.getTempCByIndex(3));
Serial.println(" C");
Serial.print("Temperaturas DH : ");
Serial.print(dht1.readTemperature()); Serial.print(" - ");
Serial.print(dht2.readTemperature()); Serial.print(" - ");
Serial.print(dht3.readTemperature()); Serial.print(" - ");
Serial.print(dht4.readTemperature()); Serial.print(" - ");
Serial.print(dht5.readTemperature()); Serial.print(" - ");
Serial.print(dht6.readTemperature()); Serial.print(" - ");
Serial.print(dht7.readTemperature()); Serial.print(" - ");
Serial.print(dht8.readTemperature()); Serial.print(" - ");
Serial.print(dht9.readTemperature());
Serial.println(" ");
Serial.print("Humedad DH : ");
Serial.print(dht1.readHumidity()); Serial.print(" - ");
Serial.print(dht2.readHumidity()); Serial.print(" - ");
Serial.print(dht3.readHumidity()); Serial.print(" - ");
Serial.print(dht4.readHumidity()); Serial.print(" - ");
Serial.print(dht5.readHumidity()); Serial.print(" - ");
Serial.print(dht6.readHumidity()); Serial.print(" - ");
Serial.print(dht7.readHumidity()); Serial.print(" - ");
Serial.print(dht8.readHumidity()); Serial.print(" - ");
Serial.print(dht9.readHumidity()); Serial.println(" ");
delay(3000);
}
Lecturas:
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.87 - 31.94 - 31.94 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.10
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 65.00
Mandando comandos a los sensores
Temperatura DS18B20: 31.94 - 31.94 - 31.87 - 31.94 C
Temperaturas DH : 33.40 - 33.50 - 33.00 - 32.60 - 32.30 - 31.90 - 32.10 - 32.40 - 34.20
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 49.00
Mandando comandos a los sensores
Temperatura DS18B20: 31.94 - 31.94 - 31.94 - 31.94 C
Temperaturas DH : 33.40 - 33.60 - 33.10 - 32.60 - 32.20 - 32.00 - 32.10 - 32.40 - 34.20
Humedad DH : 42.00 - 41.00 - 54.00 - 42.00 - 44.00 - 48.00 - 40.00 - 44.00 - 49.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.40 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.20
Humedad DH : 42.00 - 41.00 - 53.00 - 41.00 - 44.00 - 48.00 - 40.00 - 44.00 - 49.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.87 - 32.00 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.20
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 49.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.40 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.20
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 48.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.20 - 32.40 - 34.20
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 43.00 - 48.00 - 39.00 - 43.00 - 48.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.20 - 32.40 - 34.20
Humedad DH : 40.00 - 39.00 - 52.00 - 41.00 - 43.00 - 48.00 - 39.00 - 43.00 - 48.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.06 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.50 - 33.70 - 33.10 - 32.60 - 32.30 - 32.00 - 32.20 - 32.40 - 34.30
Humedad DH : 40.00 - 39.00 - 52.00 - 41.00 - 43.00 - 48.00 - 39.00 - 43.00 - 48.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 32.00 - 31.94 - 32.00 C
Temperaturas DH : 33.60 - 33.70 - 33.20 - 32.60 - 32.30 - 32.10 - 32.20 - 32.50 - 34.30
Humedad DH : 42.00 - 40.00 - 53.00 - 42.00 - 43.00 - 48.00 - 40.00 - 43.00 - 49.00
Mandando comandos a los sensores
Temperatura DS18B20: 32.06 - 32.00 - 32.00 - 32.06 C
Temperaturas DH : 33.60 - 33.70 - 33.20 - 32.60 - 32.30 - 32.10 - 32.20 - 32.50 - 34.30
Humedad DH : 42.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 44.00 - 49.00
Interpretacion:
- Sensores NOYITO: 4,5,6,7
- Sensores Gowoops: 1,2,3,8,9
Resultados:
Tomando como referencia los sensores DS18B20, los sensores que mas se acercan a esos valores son los sensores NOYITO 5,6,7 que nos dan valores mas cercanos. Por lo que esos sensores se usaran para las lecturas.
Referencias:
* https://www.luisllamas.es/temperatura-liquidos-arduino-ds18b20/
* https://howtomechatronics.com/tutorials/arduino/dht11-dht22-sensors-temperature-and-humidity-tutorial-using-arduino/
* https://programarfacil.com/blog/arduino-blog/sensor-dht11-temperatura-humedad-arduino/
* https://publiclab.org/notes/btbonval/07-14-2014/calibrating-dht11-sensors
* https://programarfacil.com/blog/arduino-blog/ds18b20-sensor-temperatura-arduino/
* http://osoyoo.com/2017/07/dht11-temperature-humidity-sensor-module/
* https://www.amazon.com/gp/product/B01H3J3H82
* https://randomnerdtutorials.com/dht11-vs-dht22-vs-lm35-vs-ds18b20-vs-bme280-vs-bmp180/
* https://www.infineon.com/cms/de/product/evaluation-boards/s2go-pressure-dps310/
* https://github.com/Infineon/DPS310-Pressure-Sensor
* https://github.com/Infineon/DPS310-Pressure-Sensor/wiki