Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Proyecto Vavilov: sensor de humedad.

19 Respuestas
4 Usuarios
0 Reactions
11.9 K Visitas
jmn
Respuestas: 376
 JMN
Topic starter
(@jmn)
Ardero
Registrado: hace 13 años

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.

Sensor resistivo:
file

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.

Sensor capacitio
photo+%25281%2529

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;

Responder
18 respuestas
jmn
Respuestas: 376
 JMN
Topic starter
(@jmn)
Ardero
Registrado: hace 13 años

Señal de reloj interno de un Arduino con cristal externo de 16 MHz, tenemos una señal de ciclo de trabajo 50% y de amplitud Vcc, 5V. La señal en la imagen va atenuada por 10 de la sonda del osciloscopio para cargar menos el circuito y tener una señal más precisa.

Como se puede ver en la imagen podemos usar la propia señal del reloj del microcontrolador para generar la señal que necesitamos para leer el sensor del orden de MHz, por lo que los componentes para realizar la placa de sensor de humedad van a ser mínimos.

Responder
jmn
Respuestas: 376
 JMN
Topic starter
(@jmn)
Ardero
Registrado: hace 13 años

Tengo idea de hacer una placa directamente para pedir y probar, diseñar el condensador y añadir un microcontrolador con una NTC y una LDR (sensores baratos) para hacer una placa sencillita de sensores, primeras dudas:

- En esta placa de sensores queremos un microcontrolador compatible con el entorno de Arduino? creo que hay algún Attiny compatible con el entorno de Arduino, que puede ser adecuado, tengo que mirarlo ya que el entorno de Arduino solo lo he visto por encima. La otra opción es usar un microcontrolador no compatible con Arduino y que esta placa no sea programable por el usuario, que solo sea programable en el entorno de Arduino la placa principal a la que van conectadas las placas de sensores.

- Que longitud ha de tener la parte del pcb sumergida en la tierra de la maceta que hace de condensador para sensor de humedad, 5, 10, 15 cm?

- Protocolo de comunicación para pongamos 1-1.5 metros de cable, la placa del sensor de humedad se va a comunicar con la placa principal mediante un cable, i2c descartado por el tema de la longitud ya que va a limitar enormemente la velocidad la capacitancia del cable. Protocolo serie con una UART del micro y tener solo mandando datos una placa de sensores al mismo tiempo? En la palca principal pues habrá varias placas de sensores (una en cada maceta) conectadas a ella mandando las lecturas cada x tiempo. Eligir un protocolo que la distancia del cable lo afecte lo menos posible, por temas de costes lo ideal sería usar un cable plano de bus de pc con varios hilos.

Protocolo soportado por las librerías de Arduino.

Bueno voy a retomar el tema, volver a leer, e instalar el Eagle en este PC que es lo primero que tengo que hacer para empezar a hacer las primeras ideas de placas.

Principal requisito de diseño de la placa de sensores buscar el mínimo coste (attiny, ldr, ntc, resistencias y condensadores en principio, quizás cristal externo?), ya que hay que añadir una por maceta y la idea es que el huerto salga lo más económico posible para que la gente lo pueda replicar.

S2

Responder
javierdg
Respuestas: 39
(@javierdg)
Eminent Member
Registrado: hace 11 años

- En esta placa de sensores queremos un microcontrolador compatible con el entorno de Arduino? creo que hay algún Attiny compatible con el entorno de Arduino, que puede ser adecuado, tengo que mirarlo ya que el entorno de Arduino solo lo he visto por encima. La otra opción es usar un microcontrolador no compatible con Arduino y que esta placa no sea programable por el usuario, que solo sea programable en el entorno de Arduino la placa principal a la que van conectadas las placas de sensores.
Yo diría que si puede ser un entorno "Arduino" (o RaspberryPi) mejor, ya que la gente que pueda replicar este proyecto probablemente esté familiarizado con Arduino y RaspberryPi. Por otro lado, cuento menos "mix" de "cosas" mejor, es como en mi trabajo, que mezclamos sistemas AIX con Solaris, HP-UX y Linux y al final mis desarrollos se vuelven locos cuando tienen que funcionar en una u otra máquina compartiendo recursos.
- Que longitud ha de tener la parte del pcb sumergida en la tierra de la maceta que hace de condensador para sensor de humedad, 5, 10, 15 cm?
Este dato es bastante relativo, pero al mismo tiempo bastante intuitivo, quiero decir, no tiene sentido hacer un sensor de medio metro, ya que vamos a hacer un sistema de control para plantas pequeñas en macetas pequeñas. Las raíces de las plantas se alargan hacia el fondo cuando no tienen agua, y "excavan" para encontrar agua o humedad bajo tierra tanto como puedan. Unas plantas regadas cuando es debido no deberían tener raíces muy profundas. En las macetas mas típicas las raíces ocuparán toda la maceta formando una forma de cubo o cilindro. Con saber si está la tierra húmeda en unos 2 o 3 cm de la superficie bastaría, pero si queremos tirar un poco a lo alto, por si queremos clavarlo hasta el fondo, unos 5 o 6 cm serían mas que suficientes. Si tenemos humedad a 7 cm de profundidad y no hay agua a 2cm... malo. La tierra siempre debería estar algo húmeda a un dedo de profundidad (ojo, la tierra siempre húmeda, en todo momento, es terrible para las plantas).
- Protocolo de comunicación para pongamos 1-1.5 metros de cable, la placa del sensor de humedad se va a comunicar con la placa principal mediante un cable, i2c descartado por el tema de la longitud ya que va a limitar enormemente la velocidad la capacitancia del cable. Protocolo serie con una UART del micro y tener solo mandando datos una placa de sensores al mismo tiempo? En la palca principal pues habrá varias placas de sensores (una en cada maceta) conectadas a ella mandando las lecturas cada x tiempo. Eligir un protocolo que la distancia del cable lo afecte lo menos posible, por temas de costes lo ideal sería usar un cable plano de bus de pc con varios hilos.
Seguro que hay una explicación lógica que desconozco sobre el por que no es recomendable usar un cable I2C de 1m de longitud, ¿podrías explicarme lo de la velocidad de capacitancia del cable a partir de ciertas longitudes? como cultura general jejeje 🙄
Por otro lado, creo que con 1m de cable es mas que suficiente. Y sobre los sensores, el mas importante de todos es el de la humedad en tierra, pero si queremos medir la temperatura de la tierra o la electro conductividad de la misma... no lo veo excesivamente necesario, pero si el coste en tiempo, esfuerzo y dinero es ridículo adelante. Ahora, si se complica la cosa yo pondría solo un sensor de humedad en tierra para cada maceta. El resto de sensores irían en la "base", ya que la cantidad de luz, la temperatura o la humedad ambiente de la habitación o el lugar donde tengamos nuestras plantas será el mismo para todas, y los sensores de PH en el agua y porcentaje de agua en cantidad van a un depósito común.

Por otro lado, hay que tener en cuenta que si el nivel de humedad en muy bajo habrá que activar un humidificador, yo ahora lo tengo mediante un relé, y se trata de un humidificador de los de toda la vida, de los que recargas con agua y va expulsando vapor de agua hasta que se acaba (en mi caso, hasta que la humedad ambiente alcanza el nivel deseado).

Un saludo!

Responder
dragonet80
Respuestas: 1328
(@dragonet80)
Ardero
Registrado: hace 18 años

Con 1-1,5m de cable no tendrás ningún problema con i2c.

Y sobre los ATtiny en Arduino tienes info:
http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips " onclick="window.open(this.href);return false;

Y aquí también explican cosas:
http://highlowtech.org/?p=1695 " onclick="window.open(this.href);return false;

Responder
Página 1 / 4
Compartir: