Mostrando las entradas con la etiqueta sensor. Mostrar todas las entradas
Mostrando las entradas con la etiqueta sensor. Mostrar todas las entradas

domingo, 21 de octubre de 2018

LDR

Hoy les traigo un post corto sobre LDR, o resistencias variables por luz. Estas resistencias van a variar según sea la cantidad de luz que reciben y las hay de dos tipos, las que aumentan la resistencia con la luz y las que disminuyen su resistencia con la luz. Estas resistencias son (o al menos eran) muy usadas para hacer lúces automáticas (las que se prenden automáticamente cuando oscurece), aunque el funcionamiento para esas aplicaciones es comparando con un valor de resistencia fijo (cuando el valor de la LDR está por debajo o por encima del valor con el cuál se compara enciende o apaga la luz), nosotros vamos a darle un uso un poco más amplio y vamos a intentar medir la cantidad de lúmenes en luxes. Esto nos va a permitir (saber si es de día o de noche) ampliar nuestra estación meteorológica y conocer las variaciones lumínicas en el tiempo.

Vamos a utilizar la librería "LightDependenResistor" que nos simplifica muchísimo el cálculo de todo. Esta librería se "alimenta" del valor de una resistencia en serie con la LDR y el modelo de la misma. Acá nos topamos con la primer barrera, como saber el modelo de nuestra resistencia variable por luz, esto es un poco difícil, en mi caso empecé a buscar imágenes que coincidieran con mi LDR y luego comencé a buscar los modelos asociados a esas imágenes, en mi caso era la GL5528 (justo coincide con el modelo del ejemplo). Una vez solucionado el tema del modelo realizamos el siguiente circuito:

Esta imágen la saqué del repositorio de github de la librería

y utilizamos el código de ejemplo de la librería, si abrimos el monitor serie de arduino, vamos a ver que nos entrega el valor en lux y en "foot candle" que es otra forma de medir la intensidad de la luz.

En el post de la semana que viene vamos a utilizar este nuevo sensor y la base de datos para realizarle una mejora a nuestra estación meteorológica.

domingo, 9 de julio de 2017

Sensor de humedad HIH-4000

Hoy les traigo el sensor de humedad HIH-4000, cuenta con una resolución de 31.483 mV por cada porcentaje de humedad relativa. Sus aplicaciones van desde la meteorología hasta (según la hoja de datos) equipamientos médicos.
Si se mira de frente (con la parte expuesta hacia nosotros) tenemos a la izquierda masa, en el centro la tensión de salida y a la derecha vcc. Se alimenta con 5V y entre el pin que va a masa y el de salida deberíamos agregarle una resistencia de 80Kohms.

El sensor recuadrado en rojo es la parte expuesta, y de
izquierda a derecha tenemos: GND, Salida, VCC
Este sensor tiene una respuesta bastante lineal, por lo que podemos tomar desde 0% hasta el 100% de humedad el incremento de la tensión que mencioné más arriba, pero para una humedad relativa de 0% tenemos 0,826V
A continuación les dejo un breve programa capaz de manejar los datos.

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

void loop() 
{
  int humedad = 0, vout = 0;
  vout = analogRead(a0);
  humedad = ((vout - 0.826)/0.0315);
  Serial.println(humedad);  
}

Como el sensor se alimenta con 5V y tiene una tensión de salida que varía entre 0V y casi 4V es difícil implementarlo de forma directa (es decir sin ningún circuito adicional) con el microcontrolador ESP8266, recordemos que este micro se alimenta con 3,3V y es capaz de "leer" tensiones analógicas de hasta 1V. Con esto en mente, si alimentamos nuestro ESP8266 con 5V que luego regulamos, podríamos tomar esa tensión sin regular para alimentar el sensor de humedad, y si al pin de salida le agregamos un divisor resistivo con una atenuación de 1 a 4 podríamos usarlo sin ningún problema en ese microcontrolador. De más está decir que este sensor es de muchísima mejor calidad que la familia DHT.

martes, 4 de agosto de 2015

Medidor de distancia por ultrasonido

Esta vez les traigo un sensor que es capaz de medir las distancias mediante el sonido, manda un pulso y se cuenta cuanto tiempo demora en llegar, en función de eso se sabe la distancia.
El módulo en cuestión es el SFR05 y se alimenta con los 5V que puede entregar el arduino.



el programa es muy sencillo y no necesita librerías:


#define trigPin 13
#define echoPin 12

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  long duracion, distancia;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2); 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duracion = pulseIn(echoPin, HIGH);
  distancia = (duracion/2) / 29.1;
  }
  if (distancia >= 200 || distancia <= 0){
    Serial.println("Fuera de rango");
  }
  else {
    Serial.print(distancia);
    Serial.println(" cm");
  }
  delay(500);
}


sábado, 25 de julio de 2015

Sensor DHT 11, 22 y 21

Bueno, acá les dejo la librería del DHT, como se puede notar dunciona para las versiones 11, 21 y 22.

El módulo de la imágen es el "DHT 11" y si se mira de frente los pines son el gnd (se puede alimentar desde 3,3v hasta 5v), datos y positivo. No es una herramienta de precisión, porque tiene errores (teóricos) del 5% en humedad y 2ºC en temperatura.

Tiene un rango que va desde los 0ºC hasta los 50ºC.

En el ejemplo adjunto a la librería se puede ver cual es la programación que conlleva (muy sencilla), pero se la puede simplificar más aun.

Acá les dejo un sencillo programa para obtener los datos de temperatura y humedad




#include "DHT.h"
#define DHTPIN 22
#define DHTTYPE DHT11                                      
DHT dht(DHTPIN, DHTTYPE);

void setup () {

  Serial.begin(9800);
  dht.begin();

}

void loop () {

  int h = dht.readHumidity();
  int t = dht.readTemperature();

  Serial.print("temperatura: ");
  Serial.print(t);
  Serial.print("    humedad: ");
  Serial.println(h);
  delay(100);

}

El echo de declarar las variables como int, no influye casi, dado que no tiene la resolución necesaria para mostrar fracciones de grado.

Descargas:

DHT:
https://mega.co.nz/#!K0hi2YaC!Spubjr7ApxeBBqBSpDXeofYLQ9JDDn4AfqzeWCas4lA