miércoles, 23 de julio de 2014

¡¡Que me mojo!! - Sensor de Humedad en suelo

¿A quien no se le ha caído un café u otra bebida en el teclado o cerca? Como hubiésemos querido que nuestro teclado o portátil tuviese un mecanismo así.




 El "trastobot" del video es capaz de saltar cual gato ante la presencia del agua, porque lo hemos dotado de un sensor de humedad en suelo (HL-69).

Este sensor se usa normalmente (salvo ideas locuelas de makers y "robonautas" ;-) para medir el grado de humedad del suelo, por lo tanto, podemos utilizarlo para crear sistemas de riego automático de forma que podemos irnos tranquilamente de vacaciones (el que pueda) sin decirle al vecino/a que nos riegue las macetas.


El mecanismo es muy sencillo: dos placas separadas entre sí recubiertas de un material conductor y que al ponerlo en contacto con un medio húmedo y por lo tanto, capaz de conducir la corriente electrica, cierra el circuito con dichas patas.

El sensor, viene también con un circuito que detecta la corriente eléctrica entre las patas y lo transforma en un valor analógico, el cual nos permite conocer el grado de humedad que hay o en digital, y en ese caso nos dice si hay humedad (1), y por tanto corriente eléctrica o no (0). 

Bueno, en todos los sitios se dice que los valores dados por el sensor son:
  
Analógico : 0 --> Suelo seco
                 1023 --> Máxima humedad

Digital :     0 --> Ausencia de humedad
                 1 --> Humedad


Sin embargo, en el que yo tengo, los valores son exactamente al contrario (debe ser ingles e ir al contrario), o sea, 0 para humedad o máxima humedad y 1 o 1023 para seco. Al principio me volví un poco loco,  pero, una vez detectado, el uso es igual.




El circuito también tiene un potenciometro que os permite ajustar el grado de sensibilidad del sensor y que, como en otros sensores de los que hemos hablado, es ese pequeño cubo azul que se ve en la foto.

El TrastoBot

El "Trastobot" se basa, como hemos dicho en el sensor de humedad del suelo y del que hemos usado la salida digital, ya que lo que nos interesa es saber si detecta humedad y no cuanta humedad y hemos conectado dicha salida del sensor como entrada al pin 2 digital de arduino.






¿Y por que al pin 2? En este proyecto hemos utilizado las interrupciones de arduino que nos permiten responder a eventos de forma desatendida, o sea, sin tener que estar todo el rato preguntando por el valor que tenemos en un determinado pin, sino que tenemos la certeza que vamos a detectar cualquier cambio que se produzca en dicho pin.

La mayoría de las placas de arduino tienen 2 interrupciones, la 0 asociada al pin digital 2 y la interrupción 1 que está asociada al pin 3. No me voy a extender mas en el uso de interrupciones en arduino, os dejo un enlace a la página oficial para que lo veáis.

Os dejo también los enlaces de las piezas y del código:

Piezas

Código

En fin, me quedo pensando como adaptar el TrastoBot al portatil...

16 comentarios:

  1. Respuestas
    1. Muy bueno!! Una pregunta, q es ese 1023 q sale de la salida analógica? Ya viene con un conversor analógico digital esa placa de arduino? Gracias

      Eliminar
  2. Imagino que por 1023 te refieres al sensor de humedad de suelo. Si, el sensor en sí es esa parte con dos patas que se supone que es la que se clava en el suelo para detectar la humedad y la otra placa (la cuadrada) es precisamente un conversor que por uno de los pines devuelve un valor digital (0-1, humedad-seco) y por otro devuelve valores analogicos ( por si en nuestro proyecto necesitamos conocer la cantidad de humedad que hay, por ejemplo para regar una maceta)

    ResponderEliminar
  3. Hola amigo, quisiera saber cual es la relación que existe entre la corriente eléctrica (voltaje) con la humedad. Por favor te agradeceré la respuesta.

    ResponderEliminar
    Respuestas
    1. Hola Rick, en primer lugar, gracias por leer nuestro blog.

      No se si entiendo tu pregunta.

      La relación que existe biene dada por la conductividad del agua (no pura), a mayor humedad mas conductividad y menor resistencia permitiendo el paso de la corriente, con el suelo seco la resistencia es muy alta no se trasmite la electricidad de un polo del sensor a otro.

      No se si es esto lo que me preguntabas.

      Un saludo

      Eliminar
    2. Hola Rick, he visto la pregunta en Google+ y ahora la entiendo mejor. Te respondo por los dos sitios, por si le sirve de ayuda a alguien mas.

      La relación la tienes que establecer tu teniendo en cuenta los valores de tu sensor, o sea, si metes el sensor en un baso de agua y el valor que te devuelve es 1023 (máx. valor analogico) ese sería el 100% de humedad, por lo que el valor 0 correspondería a 0% de humedad, si tu mapeas los valores devueltos del sensor con 0 y 100 tienes el porcentaje de humedad :

      map(valorsensor, 0, 1023, 0, 100);

      Si tienes un sensor como el mío, que daba el valor mínimo (0) para el máximo de humedad, entonces mapeas al contrario:

      map(valorsensor, 1023, 0, 0, 100);

      Espero haberte ayudado ahora.

      Eliminar
  4. Estimado Jose Luis, gracias por la respuesta. Ahora bien estoy haciendo pruebas introduciendo el sensor de humedad dentro de una probeta de tierra y se leen los datos a través de un Multímetro digital / portátil (Modelo 2709B), el cual me da lecturas como 0.223voltios, 0.715voltios, etc. Quisiera saber que valores de humedad me representan estos voltajes. Gracias

    ResponderEliminar
    Respuestas
    1. Hola Rick, siento no poder ayudarte, yo solo lo he utilizado leyendo los valores desde arduino y en ese entorno no son voltios, como ya te he dicho, son valores entre 0 y 1023.

      A lo mejor puedes comparar los valores que lees en el Multimetro con el valor que recibes en un arduino y hacer una tabla para mapear valores.

      No soy electrónico y no puedo decirte mucho mas, lo siento.

      Eliminar
  5. No encuentro el datasheet del componente, ¿sabe si existe alguna gráfica que relaciona la humedad del suelo con la resistencia que ofrece? Gracias, saludos.

    ResponderEliminar
  6. hola buenos dias, disculpe como se podria calibrar este sensor de suelo?

    ResponderEliminar
  7. hola buen día,probando el sensor me arroja 1023 cuando se encuentra seco sin embargo al introducirlo en un vaso con agua ,no me arroja 0(que sería el 100%)el valor minimo varia entre 253 y 340,pero nunca llega a cero,me podrian ayudar con eso por favor

    ResponderEliminar
    Respuestas
    1. Hola Julio, no se como será tu sensor, pero si es como el de la foto que pongo en esta entrada, veras que tiene un pequeño "potenciometro", puedes intentar ajustarlo para ver si te da los valores que esperas.

      Si no es así, tendrás que maperar por software los valores que da tu sensor a los valores que deseas tener:
      https://www.arduino.cc/en/Reference/Map

      Eliminar
  8. El agua es mala conductora, probá de echarle una cucharada de sal de mesa, o saturá un vaso lleno de tierra con agua para la prueba

    ResponderEliminar
    Respuestas
    1. Hola Jose, lo primero agradecerte que leas el blog y tus comentarios.

      Si el agua es mala conductora, la pura, la del grifo suele llevar mas "añadidos", pero es verdad, si ponemos sal en el agua, la conductividad aumenta.

      Un saludo

      Eliminar
  9. Que interesante, justo tengo 3 sensores de humedad justamente para regar plantas, que buena página la de compartir los diseños 3d, se agradece.

    Saludos

    ResponderEliminar
    Respuestas
    1. Gracias Federico por tus comentarios y por serguir el blog. Tengo diseños también en http://www.thingiverse.com/Movilujo/designs/page:1

      Eliminar