Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Abro este nuevo hilo para ir separando las distintas partes del proyecto y no hacer un hilo enorme donde se mezcle todo.
Como hemos comentado en este hilo: http://foro.webdearde.com/viewtopic.php?f=6&t=4277 " onclick="window.open(this.href);return false; tenemos la idea de diseñar e implementar un huerto domótico trabajando juntos en el foro.
Entre los muchos componentes que vamos a necesitar diseñar para la realización uno de ellos es el sensor de humedad de la tierra donde se encuentran las plantas, y del diseño de éste va a tratar este hilo.
Paso a hacer un pequeño resumen sobre la información que he encontrado en el rato que he estado buscando en internet, si hay algún experto en el tema bienvenido sea 😀 .
Hay varias formas de implementar un sensor de suelo, lo más habituales que encontramos en los blogs de internet son sensores de suelo resistivos o capacitivos.
Es un sensor muy barato de realizar donde tenemos un par de conductores introducidos en el suelo y para conocer la humedad medimos la resistencia que hay entre esos dos conductores, si hay más agua en la tierra leeremos una resistencia menor que cuando la tierra está seca. Las desventajas de este sensor es que se va a degradar con el tiempo, el metal de sus contacos se va a oxidar en presencia de la tierra y el agua, por lo que según se vaya oxidando obtendremos lecturars erróneas.
El otro problema que presenta es que la resistencia de la tierra no depende solo de la humedad sino también del tipo de tierra y de su composición. Por lo que para una misma humedad la lectura va a ser distinta de una tipo de tierra a otra que contenga más sal o minerales.
Su método de lectura es muy sencillo, solo hay que medir la resistencia que presenta con un pin del ADC del microcontrolador.
Un sensor barato de implementar donde en el pcb diseñamos un condensador coplanar, el valor de la capacidad del condensador es función de su trazado en el pcb y del entorno, en presencia de móleculas de agua que interactuan con las líneas del campo eléctrico del condensador el condensador aumentará su capacidad, por lo que si estamos en un entorno seco el valor de capacidad del condensador será menor que si se encuentra en un entorno humedo.
Este diseño es más fiable que el sensor resistivo, ya que el metal no está en contacto con la humedad y por tanto no se va a oxidar, y no medimos la resistencia del suelo que es función de su composición. Aunque según leo además del agua la composición del suelo tambien influye en el valor de la capacidad del condensador, aunque hay métodos de lectura para minimizar este efecto.
El reto principal lo vamos a tener a la hora de leer el valor del condensador, el condensador que vamos a obtener en el pcb es un condensador muy pequeño, del orden de picofaradios, más o menos lo que viene siendo la capacitancia parásita de muchos componentes.
Por lo general en los blogs se ven 3 formas de hacerlo:
1. Se carga el condensador a través de un pin del microcontrolador y se pone el pin como entrada analógica, se mide el tiempo que el condensador tarda en descargarse hasta cierto valor para conocer su capacidad. Cuanta más agua haya en el entorno mayor será el tiempo obtenido.
2. Se usa el condensador como parte de un circuito de un oscilador que genera una señal con una frecuencia determinada. En función de la capacidad del condensador que es función de la humedad del entorno obtendremos una frecuencia de salida mayor o menor de ese oscilador. Midiendo esta frecuencia con el microcontrolador podemos conoceer la cantidad de agua en el entorno.
3. Se aplica una señal cuadrada a un circuito con el condensador y se mide la tensión que obtenemos en la salida de este circuito con un pin del ADC del micro. La tensión es función de la capacitancia del condensador y por tanto de la presencia de agua en el entorno. Este método puede ser mejor que los anteriores ya que usando una señal de frecuencia del orden de MHz vamos a minimizar el efecto producido por el tiepo de suelo que tengamos, cito el comentario en un blog:
Hi, I'm a soil science researcher (not an electrical engineer), and have long experience using soil moisture sensors. The reason why high frequency set up is best lays on the fact that the dielectric constant is a complex number, i.e. a real part + imaginary part. The real part is dependent on soil moisture (the one you are insterested on measuring) but the imaginary part is dependent on the conductivity of the media and it is inversely proportional to the frequency. By using high frequency sensors (on the MHz range) you get rid off the unwanted salinity contribution on the total dielectric constant. The whole picture is rather more complex due to the so called Maxwell- Wagner effect but this is basically the main reason why low frequency sensors are highly affected by soil salinity and therefore would give artifact changes in soil moisture that could be due to changes in soil salinity.
Aunque no sé si para un condensador coplanar como afectará el caso.
Evidentemente buscamos un sensor que varie lo mínimo posible con el tipo de suelo, ya que el usuario final puede que no tenga la capacidad de calibrarlo.
The frequency seems to be an important issue (cf.: http://www.google.com/patents?id=hR-tAA " onclick="window.open(this.href);return false; ... &q&f=false), because with higher the frequencies the influnce of soil texture and soil conductivity is reduced, which sould make the sensors easier to calibrate.
4. Todos los métodos e integrados especificos para la lectura de sensores capacitivos, ya que el principio de nuestro dedo sobre la pantalla táctil es el mismo que tenemos aquí, un condensador que cambia su capacidad en presencia del agua que contiene nuestro dedo. Por lo que habrá bastante literatura al respecto y opciones comerciales disponibles.
Buscando en internet he encontrado el siguiente diseño de sensor capacitivo_ http://wemakethings.net/chirp/ " onclick="window.open(this.href);return false;
https://www.tindie.com/products/miceuz/i2c-soil-moisture-sensor/ " onclick="window.open(this.href);return false;
La idea de sensor que tengo en mente disñar como primera idea va a tener un aspecto muy similar a ese, pero además de medir humedad medirá la tempertura de la tierra y puede llevar también un sensor de luz.
Para la medida del sensor capacitivo usa el método 3: http://wemakethings.net/2012/09/26/capacitance_measurement/ " onclick="window.open(this.href);return false; un método muy simple donde tiene un RC a modo de integrador con el sensor, un diodo de bloqueo y un condensador para mantener el valor de tensión y proporcionarselo al ADC del microcontrolador cuando éste quiera realizar la lectura. Se puede añadir un operacional a modo de seguidor antes del diodo si queremos que el tiempo de establecimiento de la señal sea menor.
Aunque si se meten operacionales hay que ver el ancho de banda del operacional/coste del operacional, ya que la señal de reloj que llevan los Arduino creo que es de 8 a 16 MHz y cuanta más alta va a ser mejor para nuestro propósito.
Para ello desde un pin del microcontrolador genera una señal de 1 MHz, saca la señal de reloj del microcontrolador por un pin. Esa señal de reloj la usa para alimentar un circuito donde se encuentra el condensador que nos da un valor de tensión en función de la tierra.
Los archivos de la placa están disponibles en internet y he simulado lo que tiene (componentes ideales), ha diseñado un condensador en el pcb cuyo valor oscila entre 7 pF cuando está seco y 42 pF cuando está humedo. Usa una señal de reloj de 1 MHz que saca del reloj del sistema del microcontrolador, la he puesto de 5V y duty del 50% tengo que ver cuál es el valor real de la señal de reloj interna del microcontrolador, de todas formas aunque la tensión sea menor se puede subir con un trigger schmitt, y el duty será 50% supongo, pero tengo que sacarla en el osciloscopio para verla.
Con una señal de reloj de 5V y 50% de ciclo de trabajo obtiene 0.95V entre el valor máximo y mínimo de condensador, por lo que es una resolución aceptable (pasos de 2% de humedad) para un ADC de 8 bits, y más que suficiente para el de 10 bits. Pero lo dicho tengo que mirar la señal interna de reloj de un AVR que sale por PBO para ver cómo es.
En la imagen superior se ve dos veces el circuito, uno con el valor mínimo del condensador en seco (C3 7pF) y el otro con el condensador en agua (C4 42 pF), de esta forma se puede ver la variación de tensión en la salida que tiene. (Los valores de los condensadores de 7 y 42 pF son los que decía que había medido).
Bueno esto es más o menos la primera idea que tengo para hacer la placa del sensor de humedad, la placa va a llevar lo siguiente:
- Sensor de humedad capacitivo en el pcb.
- Sonda de temperatura para meter en la tierra.
- Sensor de luz cableado que se pueda colocar a una distancia donde no lo tape la planta.
- Microcontrolador compatible con Arduino.
- Conector con la placa base, el conector llevará 5V, tierra, un pin para encender y apagar la placa y que no consuma cuando no estemos midiendo, y un protocolor serie (probablemente RS232 conectado a una UART del micro, donde irán todas las placas, solo va a haber una placa de sensor de humedad habilitada al mismo tiempo).
- Bajo coste de componentes.
Supongo que tendrémos entre 1 ó 2 metros de cable, por lo que hay que ver que protocolo serie va bien con esta longitud de cable, I2C que es el que usa en su versión del sensor pues no va a funciona con un metro de cable sin añadie electrónica adicional.
Pasos que voy a realizar:
- Diseñar el condensador en el pcb, pedir varios pcbs con distintos trazados para ver que condensador puedo conseguir.
- Una vez seleccionado el trazado del condensador diseñar la electrónica con un microcontrolador AVR que esté en una de las placas de Arduino, para que se pueda programar desde este entorno.
- Probar el sensor capacitivo con el método 3 y ver si los resultados que se obtienen son suficiente. Si no son suficientes seguir mirando.
- Seleccionar el sensor de temperatura, seleccionar el sensor de luz.
- Que además de un condensador no tengamos una buen antena con un reloj de MHz y sus armónicos, RF es lo que menos he tocado.
- No soy experto en el tema, cualquier comentario o corrección es bien recibida.
Pues más o menos ésta es la idea que tengo para trabajar en los ratos que saque e ir haciendo esta parte del proyecto. He cogido esta parte por empezar por algún sitio, pero si alguien también quiere hacerla pues que me diga, o haga la suya y se comparan resultados.
A continuación iré editando y añadiendo los enlaces de interés sobre este tema para tenerlos recogidos al principio del hilo (más adelante y si continuamos con el proyecto pues un blog en ARDE funcionando vendría bien..).
Enlaces de interés sobre sensores de humedad de suelo:
Tipos de sensores de humedad: http://www.garden-info.org/wiki/Measure_Soil_Moisture " onclick="window.open(this.href);return false;
Ejemplo de diseño de un sensor capacitivo: http://zerocharactersleft.blogspot.com.es/2011/11/pcb-as-capacitive-soil-moisture-sensor.html " onclick="window.open(this.href);return false;
Sensor capacitivo chirp: http://wemakethings.net/chirp/ " onclick="window.open(this.href);return false;
Medida simple de sensor capacitivo con señal de reloj: http://wemakethings.net/2012/09/26/capacitance_measurement/ " onclick="window.open(this.href);return false;
El problema no es 1m de cable si no los 1-1.5m x 6 cables a cada maceta, lo que te va a dar 6-9 metros de cable (más la capacitancia de entrada de cada pin del microcontrolador), ya que cada cable de 1m, su capacitancia va conectada al mismo bus i2c, y esos cables están conectados en paralelo por tanto las capacitancias se suman.
I2C está pensando para hacer interconexiones en el mismo pcb, no cablearlo (aunque se haga), para añadir un cable lo suyo es poner electrónica adicional.
http://www.nxp.com/documents/application_note/AN10216.pdf " onclick="window.open(this.href);return false;
página 5 en la tabla de comparación de características de los buses para una conexión I2C indica 400 pF de capacitancia máxima del bus y 2 metros de cable, la primera tabla que ha salido buscando en google.
Página 25 del pdf anterior: long i2c bus lenghts
Explicación rápida. Un segmento de cable si no recuerdo mal lo podemos modelar así, como una sucesión ed ese segmento:
El bus i2c las conexiones se hacen con un transistor en drenador/colector abierto:
Todos los componentes tienen una capacitancia parásita, cada componente o longitud de cable que conectemos a las líneas SDA y SCL añade un pequeño condensador entre SDA/SCL y tierra. Para que la señal en SDA y SCL pueda cambiar de 1 a 0 ese condensador parásito se tiene que cargar a través de las resistencias de pull-up que ponemos en el bus, si el valor de ese condensador parásito se vuelve muy alto a la señal en SDA y SCL no le dará tiempo a cambiar, el condensador tarda demasiado tiempo en cargarse y descargarse y por tanto limita la frecuencia máxima de la señal y puede modificar la señal de 1s y 0s que tendríamos en esas líneas. Eso más o menos es la explicación rápida de memoria, hace mucho tiempo que no lo miro x_x.
Añadir los sensores de luz como dices merece la pena en función del coste, tener seis sensores de temperatura en distintos sitios es más fiable a la hora de hacer las lecturas que tener solo uno, si ese uno se coloca cerca de una fuente de calor puede modificar el valor real, no sé hay que verlo el coste que tiene añadir un sensor de temperatura por placa.
Gracias por los enlaces a los attiny, mañana los echo un ojo.
Como protocolo de comunicaciones: RS485. Tienes estructura de bus, se controla como un serie normal, puedes poner hasta 1Mbps con 10m sin problema. Lo único que hay que controlar es que es half-duplex (sólo transmite uno cada vez) y por lo tanto habrá que hacer un protocolo de acceso al bus un token-ring (paso de testigo: el dispositivo 1 se lo pasa al 2, este al 3, etc), una multiplexación por tiempo (cada dispositivo tiene un tiempo definido para enviar) o un host-slaves (un dispositivo "host" pregunta y los demás contestan cuando les toca) es suficiente.
Además, sólo se necesita un MAX485 y 3 pines del micro para hacerlo funcionar (TX, RX, y DIRECCIÓN).
S2
Ranganok Schahzaman
La idea es no tener que usar ningún integrado más que no sea el micro, si con una comunicación UART a UART por ejemplo a 9600 bps de micro a micro llega no sería necesario más, la placa principal tiene dos pines de su UART (TX y RX), esos pines se conectan a las seis placas de la maceta, a los pines RX y TX de cada microcontrolador de la placa del sensor de humedad, el conector que iría de la placa del sensor de humedad a la placa principal sería de 5 pines, RX TX (2 pines si queremos comunicación en ambos sentidos) Vcc y GND, y un quinto pin de enable, que enciende o apaga la placa del sensor de humedad o lo habilita para establecer una comunicación con la placa principal. Viable?
Si no hay problemas de ruidos diría que va a ser la forma más simple de hacerlo, es como una comunicación SPI con un pin de slave select, que también puede ser otra opción, lo único que hay que ver es la longitud del cable y cómo afecta a la comunicación serie y los ruidos que puede coger.
Estoy mirando los micros de Arduino, a ver qué versiones de microcontroladores tiene en su placa para intentar usar uno de ellos. Ando mirando los Attiny de 8 pines pero no llevan UART, si llevan SPI, aunque no sé que tal andará el SPI en las librerías de Arduino y tengo que mirar también cómo le afecta en este caso la longitud del cable.
Lo que también me preocupa es el tema de la profundidad de la placa que se clava en la tierra. cómo comentabamos en los posts anteriores. Si la raíz ocupa toda la maceta, sería posible que hubiese humedad, agua, en la parte inferior de la maceta y no en la superior? es decir que la planta esté tomando el agua de la parte inferior pero no de la superior que está seca. Si es así lo ideal sería tener un sensor que cubra lo máximo posible, por otro lado hacer el sensor lo más corto posible es lo mejor, ya que así mejoramos la sensibilidad en la parte de la tierra que nos interesa medir.
Si en la parte de abajo no va a haber agua cuando no la hay arriba, pues con hacer un sensor de la parte superior donde va a haber agua es lo mejor, ya que medimos el cambio de humedad en solo ese trozo y por tanto el sensor es más sensible a la concentración de agua en ese tramo.
Por lo que una pregunta importante es cómo se distribuye el agua en una maceta, por zonas?, uniformente?, de arriba a bajo? puede haber agua en una zona inferior y no en una superior? Entiendo por lo que dices Javier que si tenemos humedad a 7 cm de profundidad y no a 2 cm es malo, la opción de que haya agua debajo y no arriba no es posible.
No sé, es importante tener en cuenta todos los puntos de donde puede coger agua la planta. Ante la duda podemos hacer un sensor largo y ya está, pero será menos sensible que uno más corto para unos pocos centímetros que mida el agua en ese espacio.
Bueno voy a seguir echando un ojo al mundo Arduino, a ver si veo alguna opción, aunque por precio y simplicidad lo ideal serían los attiny.
Lo que también me preocupa es el tema de la profundidad de la placa que se clava en la tierra. cómo comentabamos en los posts anteriores. Si la raíz ocupa toda la maceta, sería posible que hubiese humedad, agua, en la parte inferior de la maceta y no en la superior? es decir que la planta esté tomando el agua de la parte inferior pero no de la superior que está seca. Si es así lo ideal sería tener un sensor que cubra lo máximo posible, por otro lado hacer el sensor lo más corto posible es lo mejor, ya que así mejoramos la sensibilidad en la parte de la tierra que nos interesa medir.
Si en la parte de abajo no va a haber agua cuando no la hay arriba, pues con hacer un sensor de la parte superior donde va a haber agua es lo mejor, ya que medimos el cambio de humedad en solo ese trozo y por tanto el sensor es más sensible a la concentración de agua en ese tramo.
Por lo que una pregunta importante es cómo se distribuye el agua en una maceta, por zonas?, uniformente?, de arriba a bajo? puede haber agua en una zona inferior y no en una superior? Entiendo por lo que dices Javier que si tenemos humedad a 7 cm de profundidad y no a 2 cm es malo, la opción de que haya agua debajo y no arriba no es posible.
No sé, es importante tener en cuenta todos los puntos de donde puede coger agua la planta. Ante la duda podemos hacer un sensor largo y ya está, pero será menos sensible que uno más corto para unos pocos centímetros que mida el agua en ese espacio.
Bueno voy a seguir echando un ojo al mundo Arduino, a ver si veo alguna opción, aunque por precio y simplicidad lo ideal serían los attiny.
No, no, yo no me preocuparía del tema de si hay agua abajo y no arriba. Lo que quería decir es que la mayoría de las plantas necesitan ser regadas cuando la superficie de la tierra está seca a uno o dos dedos de profundidad. En realidad no es que sea malo que esté la tierra mojada en la base de la maceta y seca en la superficie, no es malo, solo es un indicativo de que hace falta regar, pero ojo, no mucho. Las plantas si se riegan mucho se ahogan (evidentemente) pero ese no es el principal problema, uno de las peores consecuencias es que si hace mucho calor, ese exceso de agua se calienta y las raíces se cuecen, y ya no digamos si les da el sol a las macetas y estas son negras... por eso habréis visto alguna vez macetas envueltas en papel de aluminio, aunque eso no hace demasiado, pero bueno. La parte mas sensible de una planta con diferencia es la raíz, y sus peores enemigos son el exceso de alimento, exceso de acidez (ph muy bajo), carencia de acidez (ph muy alto), o cambios de temperatura muy bruscos en las raíces. Por eso es un error (muy grave) regar las plantas con agua fría de la nevera en verano "por que hace calor y así están fresquitas" o cocer las raíces con agua muy caliente (el sol dando de pleno en la maceta a rebosar de agua).
Conclusión, lo mejor es un sensor de humedad en tierra que se introduzca no mas de 5cm y que nos diga si hace falta regar o no, aunque la base de la maceta esté húmeda. El riego siempre por goteo, para hacerlo calmadamente, sin borbotones que muevan la tierra y dejen parte de las raíces al descubierto (no le deberia dar el aire libre ni el sol a las raíces, eso si es malo). Realmente las bombas de agua deberían regar poca cantidad según las necesidades, que son:
Otro problema del exceso de riego es la aparición del mosquito de la humedad, ese pone huevos en la tierra húmeda y las larvas se alimentan de las raíces de la planta, a parte de ser jodidas de matar. Para evitarlo lo mejor es regar menos y poner en la superficie de la maceta bolitas de perlita o piedrecitas volcánicas (se pueden encontrar en Leroy Merlin).
Entonces entiendo que con medir la humedad de la tierra en los 3-4 cm superiores es suficiente, con medir la cantidad de agua en esa zona de 3-4 cm controlamos el riego. Preguntaba ya que se ven muchos diseños bastante más largos.