Skip to Content

Cómo utilizar un sensor de humedad del suelo capacitivo con Arduino

Cómo utilizar un sensor de humedad del suelo capacitivo con Arduino

Un sensor de humedad del suelo es el primer componente que se necesita cuando se considera la automatización del riego de las plantas. 

Estos sensores le ayudan a asegurarse de que las plantas se riegan cuando lo necesitan.

En el mundo del Internet de las Cosas, estos sensores son las "Cosas" que completan el proyecto de IoT. 

En este artículo aprenderás a utilizar un sensor de humedad del suelo capacitivo de Arduino.

Compartiré las piezas necesarias, los detalles de conexión, la biblioteca para utilizar el sensor de humedad del suelo de capacitancia y algunos ejemplos de proyectos de Arduino. 

Al final del tutorial, estarás seguro de utilizar el sensor capacitivo de humedad del suelo con un Arduino. 

Voy a dar una guía paso a paso para conectar y leer el nivel de humedad del suelo desde el sensor.

También proporcionaré ejemplos de proyectos que puedes utilizar de inmediato y plantear tu propio proyecto de Arduino con un sensor capacitivo de humedad del suelo.

Comencemos.

Componentes necesarios para construir un proyecto de sensor de suelo capacitivo y Arduino

Componentes de hardware 

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

¿Qué es un sensor de humedad del suelo capacitivo?

El sensor de humedad del suelo tradicional utiliza variaciones de resistencia para detectar la cantidad de humedad presente en el suelo.

Estos sensores eran muy propensos a la degradación debido a la corrosión de los electrodos.

Significa que necesitan mucho mantenimiento y pierden pronto la precisión. 

El sensor capacitivo de humedad del suelo puede detectar la humedad sin entrar en contacto directo con el agua del suelo.

En este caso, leerá el valor analógico, que es proporcional a la humedad del suelo. 

La humedad del suelo modifica el valor dieléctrico, cambiando así la capacidad de lectura.

El sensor convierte su capacitancia en un valor analógico, que puedes leer utilizando las entradas analógicas de Arduino. 

La mayoría de los sensores vienen en un amplio rango de tensión de alimentación. Puedes conectar los sensores a placas Arduino de 3,3 V y 5 V. 

Las ventajas de utilizar el sensor capacitivo de humedad del suelo son

  • No es necesario calibrar el sensor con frecuencia
  • No hay pérdida de precisión con el tiempo
  • No hay corrosión en el sensor

Hay varios proveedores en los que se pueden comprar los sensores capacitivos de humedad del suelo.

En esta demostración, utilizo el más común que encuentro fácil de comprar. 

Aquí hay un interesante artículo para su posterior lectura donde se prueban varios sensores capacitivos de humedad del suelo.

Qué es un sensor de humedad del suelo capacitivo
Fuente: https://flashgamer.com/blog/comments/testing-capacitive-soil-moisture-sensors

Instrucciones paso a paso para conectar un sensor capacitivo de humedad del suelo a Arduino

En la siguiente sección te mostraré cómo hacer funcionar el sensor capacitivo de humedad del suelo con el Arduino. 

-> Lea nuestra guía sobre lo que puede construir con Adruino.

Cómo conectar el sensor de suelo capacitivo a Arduino

Aquí están los detalles de conexión necesarios para completar el Arduino y el sensor capacitivo de humedad del suelo

Paso 1: Empezar con el sensor capacitivo de humedad del suelo

Comienza con el sensor capacitivo de humedad del suelo

Puedes ver que hay tres pines a la izquierda del sensor disponibles para la conexión.

En la tabla siguiente se indican las etiquetas de las clavijas y su descripción. 

¿Ve también la marca blanca vertical en el sensor? Por favor, no sumerja el sensor en el suelo más allá de esa línea para obtener datos fiables. 

Etiqueta/marcado de la clavijaFunción de la clavija
A o AOUT o OUTSalida analógica (el equivalente a la humedad del suelo)
+ o V+ VCC o 5VTensión de alimentación positiva (la mayoría de los sensores son compatibles con 3,3 V a 5 V)
GND o - o V-Conexión a tierra

Paso 2: Realizar la conexión a tierra

Conecta uno de los pines GND del Arduino al pin etiquetado "-" del sensor capacitivo.

Realice la conexión a tierra

Siempre es una buena idea empezar con la conexión a tierra.

Te asegurarás de que el voltaje está referenciado al mismo punto cuando hagas las conexiones mientras el Arduino está alimentado. 

Paso 3: Conectar la señal de salida analógica al Arduino

Conecta la señal de salida analógica al Arduino

Conecta el pin del sensor etiquetado como "A " al pin de entrada analógica del Arduino. Hay varios pines de entrada analógica en el Arduino.

Dependiendo de la placa Arduino que tengas, puedes elegir el pin analógico que más te convenga. 

He elegido el pin analógico A0. Puedes seguir el pin analógico sugerido por la biblioteca.

También puedes actualizar el Arduino Sketch para seleccionar el pin de entrada analógica deseado para la conexión del sensor. 

Paso 4: Conectar las clavijas de alimentación para alimentar el sensor capacitivo de humedad del suelo

Conecte las clavijas de alimentación para alimentar el sensor capacitivo de humedad del suelo

Conecta el pin del sensor etiquetado como "+ " al pin de 5 V del Arduino. La selección correcta del voltaje asegura que la señal analógica se interprete de la manera correcta.

Si utilizas el Arduino UNO, conecta el pin "+" al pin de 5V del Arduino UNO.

Si es un Arduino Mega, conéctalo al pin de 3,3 V. 

Felicidades. Ya ha completado las conexiones de hardware.

En la siguiente sección, configurarás las bibliotecas necesarias para que el proyecto funcione. 

Código simple de Arduino para el sensor capacitivo de humedad del suelo

Aquí está el código para leer el valor del sensor de humedad del suelo utilizando una placa Arduino. 

He explicado la lógica en la sección posterior. La lógica es simple de seguir y fácil de personalizar.

const int OpenAirReading = 700;   //calibration data 1
const int WaterReading = 280;     //calibration data 2
int MoistureLevel = 0;
int SoilMoisturePercentage = 0;
 
void setup() {
  Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
}
 
void loop() {
  MoistureLevel = analogRead(A0);  //update based on the analog Pin selected
  Serial.println(soilMoistureValue);
  SoilMoisturePercentage = map(MoistureLevel, OpenAirReading, WaterReading, 0, 100);
 
  if (SoilMoisturePercentage >= 100)
  {
    Serial.println("\n Maximum - 100 %");
  }
  else if (SoilMoisturePercentage <= 0)
  {
    Serial.println("\n Minimum - 0 %");
  }
  else if (SoilMoisturePercentage > 0 && SoilMoisturePercentage < 100)
  {
    Serial.print(SoilMoisturePercentage);
    Serial.println("%");
  }
 
  delay(1000);
}

Repasemos las secciones clave del código para entender la lógica.

const int OpenAirReading = 700; //datos de calibración 1
const int WaterReading = 280; //datos de calibración 2

Puede que te preguntes por los números mágicos que he utilizado en el código. Las variables tienen valores establecidos en 700 y 280 en mi código. 

700 es el valor analógico leído en el sensor cuando éste se encuentra al aire libre (implica una humedad cero).

280 es el valor analógico cuando se introduce el sensor capacitivo de humedad del suelo en el agua por completo. (implica 100 de humedad).

En su caso, dependiendo de los sensores, estos valores pueden cambiar. Estos dos valores se utilizan posteriormente en el código para asignar la humedad del sensor entre 0% y 100%. 

En las siguientes líneas, se declaran dos variables para leer el valor analógico y para calcular el nivel de humedad del suelo en porcentaje.

int Nivel de humedad = 0;
int PorcentajeDeHumedadDelSuelo = 0;

Estamos habilitando la comunicación serial para ver los datos en la ventana del monitor serial en Arduino.

Es posible que no lo necesite en la aplicación real.

La impresión de los valores le ayuda a depurar más rápidamente, a corregir los errores más rápidamente y a completar el proyecto antes durante el desarrollo.

Serial.begin(9600);

La línea de abajo lee el valor analógico. La siguiente línea de código devolverá un valor entre 0 y 1023.

Este código devolverá el valor numérico equivalente al nivel de humedad detectado por los electrodos del sensor capacitivo.

Nivel de humedad = analogRead(A0);

En mi diagrama de conexión, puedes ver que he utilizado la entrada analógica A0. Si estás usando una entrada analógica diferente a A0, debes actualizar la línea de código anterior.

 PorcentajeDeHumedadDelSuelo = map(MoistureLevel, OpenAirReading, WaterReading, 0, 100);

La línea de código anterior reasigna el valor analógico leído del sensor a un valor entre el nivel de humedad mínimo y máximo esperado.

Puede encontrar más información sobre la función map() junto con algunos ejemplos aquí

Siéntase libre de cambiar la lógica, y añadir más funcionalidades para que este código sea útil en su próximo proyecto.

Por ejemplo, puede activar una alarma si el nivel de humedad es demasiado bajo. 

Preguntas frecuentes sobre el sensor capacitivo de humedad del suelo Arduino

En esta sección encontrará respuestas a las preguntas más frecuentes sobre los proyectos de sensores capacitivos de humedad del suelo.

Por favor, deje las preguntas en la caja de comentarios si esta sección no responde a su pregunta.

1) ¿Cómo se utiliza un sensor de humedad del suelo capacitivo con un Arduino?

Un sensor capacitivo de humedad del suelo es un sensor muy fácil de usar. Proporciona el nivel de humedad a través de la salida analógica.

Puedes monitorizar los valores analógicos con Arduino y calcular el nivel de humedad.

Para conocer el procedimiento paso a paso de la lectura de los sensores y el esquema de conexión, consulte los apartados anteriores. 

2) ¿Qué es un sensor de humedad del suelo capacitivo?

Un sensor capacitivo de humedad del suelo le proporciona el nivel de humedad presente en el suelo en forma de tensión analógica.

Cualquier placa Arduino puede leer los valores analógicos y convertirlos en contenido de humedad del suelo equivalente. 

Los sensores capacitivos de humedad del suelo suelen venir con conexiones de tres o cuatro pines. Las conexiones son fáciles de realizar.

Puede consultar las secciones anteriores para obtener rápidamente una visión general de las conexiones de los sensores. 

3) ¿Cómo se calibra el sensor capacitivo de humedad del suelo con Arduino?

He aquí una forma sencilla de calibrar el sensor capacitivo de humedad del suelo:

  1. Prepara el hardware conectando el sensor capacitivo de humedad del suelo al Arduino
  2. Prepare un vaso de precipitados vacío y seco
  3. Rellenar la tierra seca del interior
  4. Sumergir el sensor capacitivo dentro del suelo
  5. Anote las lecturas. Esta lectura representa el valor mínimo de la capacitancia
  6. Ahora, añade agua en el vaso de precipitados con cuidado hasta que la tierra esté casi saturada
  7. Espera un minuto
  8. Vuelva a leer el valor de la capacitancia. Esta lectura denota el valor máximo
  9. Utilice estos valores para asignar el nivel de humedad leído en la aplicación real entre 0 % y 100 %.

Utilice los valores mínimos y máximos leídos en los pasos anteriores en el código de ejemplo de Arduino compartido en la sección anterior.

Dependiendo del tipo de plantas, el umbral de humedad del suelo al 100 % puede variar. En este caso, se puede calibrar en función de la aplicación.

La idea es que no hay que dejar que la humedad baje o suba por encima de las condiciones adecuadas para la planta. 

4) ¿Qué es mejor el sensor de humedad del suelo resistivo o capacitivo?

Tanto los sensores de humedad del suelo resistivos como los capacitivos tienen sus propios méritos. Los sensores de humedad del suelo resistivos son más baratos que los capacitivos. 

El sensor capacitivo de humedad del suelo es muy inmune a los elementos ambientales, ya que los electrodos no entran en contacto directo con la humedad del suelo. 

Los sensores resistivos de humedad del suelo sufren un proceso llamado electrólisis que se produce debido a que las sales del agua reaccionan con el electrodo cuando hay un flujo de corriente entre los electrodos.

Con el paso del tiempo, las mediciones tendrán enormes desviaciones y errores debido a la corrosión de los electrodos. 

Si tiene previsto controlar los sensores de humedad del suelo con el tipo resistivo, puede controlar los valores periódicamente en lugar de mantener el sensor alimentado todo el tiempo.

Una idea es conectar la línea de 5 V del sensor a un GPIO de Arduino. 

Siempre que se necesiten mediciones, se puede poner el pin GPIO en alto. Una vez que tomes las lecturas, puedes conducir el GPIO a bajo.

Las lecturas poco frecuentes reducen el riesgo de electrólisis de forma significativa. 

Si tiene que utilizar las mediciones del sensor con frecuencia, los sensores capacitivos son una mejor opción de diseño.

5) ¿Cómo funcionan los sensores de suelo capacitivos?

El sensor de humedad del suelo capacitivo mide la capacitancia. Los componentes típicos del circuito necesarios son un circuito RC y un temporizador.

Normalmente, en el circuito de acondicionamiento de la señal se encuentra un CI temporizador 555 y un amplificador óptico. Hay dos electrodos separados por una pequeña distancia.

Cuando la humedad del suelo cambia, el dieléctrico cambia. 

La capacitancia es directamente proporcional al dieléctrico. Por lo tanto, un cambio en la humedad del suelo modifica la capacitancia.

El dieléctrico del agua es de aproximadamente 80. El dieléctrico del aire es de aproximadamente 1.

Por lo tanto, cuando hay un aumento de la humedad, se verá un aumento de la capacitancia. 

Conclusión

En este artículo, he compartido todos los detalles necesarios para construir tu próximo proyecto de sensor de humedad del suelo.

Espero que haya disfrutado de la lectura del artículo. Si tienes alguna sugerencia o pregunta, déjala en la sección de comentarios.

He utilizado un sensor de humedad del suelo y un sencillo servomotor para permitir el riego automático de las plantas. 

Espero que hayas encontrado toda la información que necesitas para tu proyecto de sensor de humedad.

¿Le ha resultado útil este artículo? ¿Tiene alguna sugerencia para hacer este artículo más fácil de leer?

Responde en los comentarios. Comparta también el artículo con sus amigos. 

Me encantará conocer sus proyectos de sensores capacitivos de humedad del suelo.

Por favor, deja el enlace al proyecto que has construido.

¡Estaré encantada de seguir el enlace y ver sus proyectos!

Jeff Verive

Monday 27th of February 2023

There's an error in your code. You declare a variable called "MoistureLevel", but use a different (undeclared) variable called "soilMoistureValue" when displaying the raw analog value via the second line in the main loop:

Serial.println(soilMoistureValue);

Because "soilMoistureValue" is not declared elsewhere, the compiler throws an error. If you replace "soilMoistureValue" with "MoistureLevel" the sketch runs as intended.