Riego por goteo y sensores de humedad.

Hola a todos!

Aunque "pululo" por aquí desde hace tiempo tratando de aprender de vosotros lo que puedo, este es mi primer mensaje en esta comunidad. Personalemente, os quiero dar las gracias por vuestros granitos de arena haciendo crecer esta comunidad.

Estoy tratando de montar un sistema de riego automático, con valvulas selenoidales y sensores de humedad en el suelo.
Mi arduino UNO abre y cierra las valvulas, y además toma los valores de los sensores de humedad.

Tengo una raspberry que su objetivo será calcular mas o menos cuantos segundos de agua necesita la zona de riego que tiene asignada la valvula en función de los valores de los sensores de humedad recogidos.

La raspberry tiene un servidor en django que graficará los valores de los sensores, y donde se podrá activar las valvulas manualmente.

En realidad la raspberry, hará mas cosas ... pero por ahora el tema del sistema de riego... sobre un entorno controlado lo tengo bastante avanzado.

Mi pregunta:

¿Puedo medir decentemente los valores de un sensor de humedad desde arduino a través de un cable UTP ... a 40-50 metros de distancia?

Pretendo usar ese tipo de cable para alimentar las valvulas selenoidales y manejar los sensores de humedad. Las interferencias entre ellos creo que no deberían ser problema ya que no se van a usar mas de 1 par trenzado a la vez en ningún momento.

Como lo veis?

Gracias!

Si usas un sensor digital, como el famoso DS18B20 no hay problema, si que te encontrarias empleando un sensor analogico tipo lm35 p.ej.

UNIVERSIDAD TECNOLOGICA METROPOLITANA
FACULTAD DE INGENIERÍA DEPARTAMENTO DE ELECTRICIDAD ESCUELA DE ELECTRÓNICA PROFESORES: IVAN CAMOUSSEIGT; GUILLERMO GONZALEZ FECHA: 03-12-09
El BUS 1-Wire, permite realizar una comunicación serial asincrónica entre un dispositivo maestro y uno o varios dispositivos esclavos, utilizando un único pin de E/S del microcontrolador. Podemos señalar algunas características de éste bus:

Utiliza niveles de alimentación CMOS/TTL con un rango de operación que abarca desde 2.8V hasta 6V.

Tanto el maestro como los esclavos transmiten información de forma bidireccional, pero, sólo en una dirección a la vez, de ésta manera la comunicación es realizada en forma“half duplex”.

Toda la información es leída o escrita comenzando por el bit menos significativo (LSB).

No se requiere del uso de una señal de reloj, ya que, cada dispositivo 1-Wireposee un oscilador interno que se sincroniza con el del maestro cada vez que en la línea de datos aparezca un flanco de bajada.

La alimentación de los esclavos se puede hacer utilizando el voltaje propio del BUS. Para ello, cada circuito esclavo posee un rectificador de media onda y un condensador, durante los períodos en los cuales no se efectúa ninguna comunicación, la línea de datos se encuentra en estado alto debido a la resistencia de “Pull Up”; en esa condición, el diodo entra en conducción y carga al condensador.Cuando el voltaje de la red cae por debajo de la tensión del condensador,el diodo se polariza en inverso evitando que el condensador se descargue. La carga almacenada en el condensador alimentará al circuito esclavo.

Las redes de dispositivos 1-Wire pueden tener fácilmente una longitud desde 200m y contener unos 100dispositivos.

Todas las tensiones mayores que 2,2Voltios son consideradas un 1 lógico mientras que como un 0 lógico se interpreta cualquier voltaje menor o igual a 0,8 V.

La transferencia de información es a16.3Kbps en modo “Standard” y hasta a 142Kbps en modo “overdrive”.

4.DESCRIPCION DEL PROTOCOLO 1- WIRE
Podemos describir al protocolo 1-Wire como una secuencia de transacciones de información, la cual, se desarrolla según los siguientes pasos: la Inicialización, comandos y funciones de ROM, comandos y funciones de control y memoria, transferencia de bytes o datos.

4.1 INICIALIZACIÓN
Todas las comunicaciones en el bus 1-Wire comienzan con una secuencia de un pulso de Reset y Presencia. El pulso de reset provee una forma limpia de iniciar las omunicaciones, ya que, con él se sincronizan todos los dispositivos esclavos presentes en el bus. Un Reset es un pulso que genera el maestro al colocar la línea de datos en estado lógico bajo por unos 480µs, Figura 3, y luego de 15 a 60µs los esclavos responderán poniendo en bajo la linea durante 60 a 240µ

Heke gracias por contestar, y por el enlace. Esta tarde naufragando por la red antes de hacer la pregunta aquí. Di con esto:

... pensé que eso no me serviría a mi, y ahora la he leído junto con lo tuyo con mas detenimiento, (Pongo el link aquí por si a alguien le interesa el tema).

Por lo que me parece entender no funciona cualquier sensor con el protocolo 1-wire. Ya que este debe estar preparado para ello.

Igualmente, cuando hablé de mis sensores de humedad del suelo, me refería a esto:

Aunque los mios tienen 2 pines de conexiones, en vez de 3. Por lo que creo que no me serviría este sistema que dices. No?

Igualmente creo que puedo bajar la distancia de los sensores a arduino a un máximo de unos 25m. Seguiría teniendo problemas verdad?

Vale...

Perdona que no cai bien en el detalle que decias: "Sensor de humedad" no se porque pense que habias puesto temperatura. :fearful: fallo mio.

No, obviamene el protocolo 1wire es para dispositivos que hablen 1wire y un sensor de humedad normalmente es un sensor de continuidad, analogico, el que yo comentaba era de temperatura.

No tienes porque tener problemas, como mucho interferencias y radioemisiones pero un cable UTP bien cat5 o cat6 es un cable de calidad.

Lo que si te toca es calibrar para medir la resistencia incluido el trazado del cable.

Lo idoneo seria poder medir la humedad "in situ" y mandar esa info al arduino de forma protocolo de comunicaciones (RS485, 1-wire, por ejemplo) pero bueno, emplear un sistema analogico te requiere ajustar mejor.

Dallas o maxim tiene sensor de humedad por protocolo 1-wire DS1923 y la casa honeywell tambien, mirate una busqueda de google por sensores de humedad 1-wire que igual encuentras alguno que te va mejor....

Mira de todas formas estos enlaces:
http://www.hw-group.com/products/sensors/HTemp-1Wire_en.html

Este otro cuesta 3$ y tiene la placa de control que te puede dar una salida digital y eso te quitaria problemas pues seria mandar a una entrada de arduino y punto:
http://www.electrodragon.com/?product=soildust-humiditywatermoisture-sensor

En este enlace esta la forma de conectar un analogico del estilo que has puesto en el hilo:
http://www.dfrobot.com/wiki/index.php/Moisture_Sensor_(SKU:SEN0114)

Maravillosa respuesta Heke. Gracias!

1-wire:
Desde luego usar 1-wire es lo más efectivo que hay en una situación como la mía, aunque los sensores sean mas caros ... pero por lo que me parece ver apenas hay diferencia, el ahorro de cableado es muy considerable. Si hubiera sabido que algo así existía iría por ahí, desde luego en el próximo proyecto que tengo pensado tengo claro que usaré 1-wire.

Mas detalles sobre mi proyecto de riego:
Ayer caí en poner el arduino en otra localización física, y acortando así a la mitad la distancia de los sensores y válvulas a arduino. Además con la tontería me voy a ahorrar unos 40-50 m de carísimo cable UTP CAT5 exterior.

En principio en total tendré (5 o 6) +1 válvulas selenoidales:

  • La 1 es la válvula general que abrirá el paso general de agua a todo el circuito del conducto principal.
  • Las otras 5 o 6 son las válvulas que abrirán paso al riego de las zonas.

... y 5 sensores de humedad de suelo, que estarán situadas estrategicamente en cada zona.

El cableado con arduino será lógicamente de topología estrella, en cada brazo de cable UTP la idea es que controle 2 valvulas selenoidales + 2 sensores de temperatura, conectándolos a unos splitters para separar 4 y 4 y a unos adaptadores RJ45 RS232 para separar los dos cables que irían a la válvula y al sensor.

Alrededor de la instalación no hay interferencias de ningún tipo, y dentro del cableado espero que tampoco ya que todos los sensores y válvulas siempre estarían en LOW, ya que no tengo que estar midiendo los valores constantemente, se podrían ir turnando, y cuando uso las válvulas tampoco estaría leyéndolos.

Lo cierto es que es la primera vez que construyo algo así ..., sobre el papel bajo mi punto de vista de novato debería funcionar, a la hora de la verdad ya veremos...

Sobre los sensores de humedad:
@Heke Como dije justo después de la foto que puse en mi anterior post, los sensores de humedad de suelo que tengo tienen sólo 2 pines: He encontrado una foto exacta de mis sensores:

... pero no compré sus placas de control, pensé que no los necesitaría. Igualmente también compré un sensor de lluvia que sí que tiene esa placa, y parece que son iguales, creo que me servirá para hacer las pruebas necesarias de calibrado, y comprar después lo que tenga que comprar.

Seguro que el ejemplo del sensor analógico me sirve? Tu ejemplo lo vi hace días y pensé que no me serviría porque como digo, mis sensores sólo tienen 2 pines.

No sería mas conveniente sacar las ideas de algo así?:
http://gardenbot.org/howTo/soilMoisture/
http://gardenbot.org/howTo/soilMoisture/#The_local_circuit_-_simple_voltage

La ventaja de este diseño es que al parecer esta configuración evita la corrosión de los bornes por electrólisis.

Es totalmente valido, no te hace falta placa de control, estas suelen ser un operacional como comparador para marcar el punto a partir del cual salta el aviso de falta de humedad o un operacional puesto en modo amplificador lineal para tener variaciones de tension mas significativas.

Ten en cuenta que medir la humedad del suelo es a fin de cuentas medir la resistencia de este, cuanto mas humeda sea la tierra mejor conduce la electricidad.

Tambien te influye la composicion del terreno, la salinidad... pero vamos... a efectos de andar por casa, con dos simples bornas y midiendo su resistencia o caida de tension y la variacion que supone que este mas o menos mojado el terreno te vale.

No tienes problemas para probar, en casa con una maceta mides y ajustas, luego en campo variara mas o menos por el tipo de terreno pero habras conseguido depurar el codigo.

Respecto a los "pinchos" depende a que precio te salgan, puedes comprarlos o hacerlos tu mismo, a fin de cuentas son dos bornas.

La idea de evitar la corrosion es buena.

Prueba, hazte paso a paso cada sector y luego junta el codigo asi iras quemando etapas y no te volveras loco de golpe si una parte no funciona.

Ah, no se te olvide separar alimentacion, no esperes que el arduino suministre tension a un rele directamente para accionar la electrovalvula, te hara falta minimo un transistor o un triac si conmutas en alterna.

Un saludo y suerte con el proyecto.

Heke:
Es totalmente valido, no te hace falta placa de control, estas suelen ser un operacional como comparador para marcar el punto a partir del cual salta el aviso de falta de humedad o un operacional puesto en modo amplificador lineal para tener variaciones de tension mas significativas.

Genial! eso era lo que me imaginaba.

Heke:
Ten en cuenta que medir la humedad del suelo es a fin de cuentas medir la resistencia de este, cuanto mas humeda sea la tierra mejor conduce la electricidad.

Tambien te influye la composicion del terreno, la salinidad... pero vamos... a efectos de andar por casa, con dos simples bornas y midiendo su resistencia o caida de tension y la variacion que supone que este mas o menos mojado el terreno te vale.

No tienes problemas para probar, en casa con una maceta mides y ajustas, luego en campo variara mas o menos por el tipo de terreno pero habras conseguido depurar el codigo.

Respecto a los "pinchos" depende a que precio te salgan, puedes comprarlos o hacerlos tu mismo, a fin de cuentas son dos bornas.

La idea de evitar la corrosion es buena.

Prueba, hazte paso a paso cada sector y luego junta el codigo asi iras quemando etapas y no te volveras loco de golpe si una parte no funciona.

Efectivamente, todo lo que dices es como quise hacer las pruebas el otro día, pero al no tener la plaquita de control, no pude (no me di cuenta que probablemente me serviría la que tengo del sensor de lluvia). Y el circuito que puse antes (con 2 bornes) tampoco lo podía hacer ya que no disponía del material necesario.

Aunque ahora estoy esperando los nuevos suministros, para volver al ataque :grin:

Creo que la mejor manera de calibrarlos es tomar los valores en el aire (para tomar un valor bajo de humedad), y después sumergido totalmente en agua (100% de humedad). Y con esos valores jugar con varios vasos de tierra y diferentes humedades. Si todo va ok, entonces hacer el mismo proceso ya con los cables y pasados, y la tierra del sitio.

Heke:
Ah, no se te olvide separar alimentacion, no esperes que el arduino suministre tension a un rele directamente para accionar la electrovalvula, te hara falta minimo un transistor o un triac si conmutas en alterna.

Un saludo y suerte con el proyecto.

Si! Efectivamente la válvula que tengo funciona a 12V 1A, demasiado para el pobre arduino. Ya diseñé el circuito y le hice su "hello world", puesta en su sitio real. Y funciona.

Ahora sé que puedo comprar el resto de válvulas. En estos días miraré como hacer para que con el mismo transformador de 12V y 1A, funcionen todas las electroválvulas exteriores, creo que no debería haber problema de alimentación, ya que no se activarán a la vez nunca, y se supone que las válvulas tienen una tolerancia de voltaje y amperios muy alta.

Heke no sabes como me alegra ver que no tenía pájaros en la cabeza con este tema. Thank you! :smiley:

Que sensor de lluvia has comprado ?
Y que tipo de electrovalvula ?
Yo estoy mirando para un proyecto para regar las plantas en casa en vacaciones !

El sensor es uno como este: (aún no lo he podido probar)

Y la selenoidal como esta: (funciona perfectamente)

Yo tengo un proyecto bastante parecido, echale un ojo a mi blog que esta en mi blog que esta en mi firma.

La idea de probar en aire y en agua no te vale porque nunca va aestar en 100% agua ni aire. Lo que yo estoy haciendo es medir recien regado y medir cuando la tierra esté en el punto de secano maximo que consideres ya que no interesa que se seque al 100%

a ver si entre todos lo sacamos adelante

Hola a todos, muy interesante el post, estoy haciendo algo similar que vosotros, con el arduino YUN o micro (todavia estoy haciendo pruevas con los 2), y el sensor de humedad SKU:SEN0114, que es el de 3 hilos que he visto una foto por arriba.

Haber si me podéis ayudar,

/*

Example code for the moisture sensor

Editor : Lauren

Date : 13.01.2012

Version : 1.0

Connect the sensor to the A0(Analog 0) pin on the Arduino board

the sensor value description

0 ~300 dry soil

300~700 humid soil

700~950 in water

*/

void setup(){

Serial.begin(57600);

}

void loop(){

Serial.print("Moisture Sensor Value:");
Serial.println(analogRead(A0));
delay(100);

}

Este es el programa que estoy usando para provar con el sensor de humedad, que es el que ponia a la web donde lo he comprado,

al provarlo con diferentes tierras y le das al monitor, el rango de valores oscila entre 400 y 700, y en teoria tendria que ir de 0 a 1000, si me podéis ayudar en esto estaria muy agradecido!

Un saludo !

Crea un hilo nuevo y referencía este post.
Ultima respuesta **21-06-2013, 15:00:45 **

Hola, yo estoy utilizando un varios sensores de temperatura y humedad, el problema de ello es que por ejemplo, cuando conecto mi sensor de temperatura al A0 y el de humedad a otra entrada analogica, A1 por ejemplo, el valor que me arroja el sensor de humedad esta bastante loco, si hago lo contrario el valor de las temperaturas convertidas oscilan demasiado incluso hasta negativos, estando a 16 grados en mi habitación, no se mucho de arduino, supongo que tiene que ver con el circuito, si me pueden ayudar Porfavor :frowning:

Buenas,

Un proyecto muy interesante Belaix.

¿Como fue? ¿lo dejaste funcionado?

Tengo algunas curiosidades:
¿Como alimentas las electrovalvulas de 12V?
¿Como hace que funcionen las electrovalvulas de manera independiente con un solo relé?
¿Que diámetro de tuberías para el riego has usado (no puedo ver la imagen de la electrovalvula)?
¿Has tenido que utilizar alguna bomba de agua para alcanzar la presión deseada?

Un saludo.