Después de un largo periodo sin publicar nada en el BLOG, finalmente vuelvo con un nuevo post. Durante este tiempo he estado trabajando en proyectos mucho más ambiciosos, los cuales iré compartiendo con ustedes en las próximas publicaciones.
Hoy, les quiero hablar acerca de cómo utilizar un sensor de humedad capacitivo para medir el porcentaje de humedad relativa de un terreno en tiempo real. Este tipo de sensores son muy útiles ya que proporcionan una medición precisa y confiable de la humedad del terreno. Además, tienen la ventaja de ser resistentes a la corrosión, ya que no tienen partes metálicas en contacto directo con la humedad del terreno, lo que evita falsas mediciones o el deterioro del sensor a lo largo del tiempo.
Una de las aplicaciones de este sensor es en el campo de la agricultura, donde se puede utilizar para controlar el riego automáticamente. Por ejemplo, el código utilizado puede modificarse para activar bombas o electroválvulas que den paso al riego de un terreno dependiendo del porcentaje de humedad relativa que este tenga en el momento deseado.
Para empezar, es necesario conectar el sensor de humedad al Arduino UNO de la siguiente manera: el pin «VCC» del sensor debe estar conectado al pin «5V» del Arduino, el pin «GND» del sensor al pin «GND» del Arduino y el pin «AOUT» del sensor al pin analógico «A0» del Arduino para poder realizar las mediciones de humedad. A continuación, se presenta una tabla que indica la correspondencia de pines:
El sensor de humedad capacitivo tiene una salida máxima de 3V DC. Por lo tanto, el rango de valores teóricos que se pueden obtener con la lectura del pin analógico «A0» es entre 0 y 615. Esto se debe a que el ADC interno del Arduino UNO tiene una resolución de 10 bits y utiliza una referencia interna de 5V DC, lo que permite obtener un rango de 0 a 1024.
A continuación se presentan las características principales de este sensor:
Como este tipo de sensor va a estar en contacto permanente con el terreno, siempre va a tener una humedad relativa en su superficie y en sus componentes electrónicos. Para que dicha humedad no afecte al comportamiento del dispositivo debemos de respetar unos límites de profundidad a la hora de instalar el sensor en el terreno, que a continuación os muestro:
La fabricación de sensores de humedad capacitivos no siempre es precisa, especialmente si existen diferentes fabricantes de este tipo de dispositivos. Por lo tanto, es importante calibrar el dispositivo antes de utilizar el programa de adquisición de la humedad relativa del terreno. Esto se puede hacer mediante programación, una vez se han realizado las conexiones necesarias.
Para calibrar el sensor, se debe utilizar el programa «Calibracion_sensor_humedad_capacitivo.ino». Este programa permitirá obtener los valores de lectura del pin analógico «A0» cuando el sensor está totalmente seco (Valor_Sensor_Aire) y cuando el sensor está sumergido en agua (Valor_Sensor_Agua). Es importante realizar varias lecturas de la salida analógica del sensor de humedad capacitivo a través del pin analógico «A0» para cada uno de los casos límite, hasta que el valor se estabilice.
Una vez se han obtenido los valores de calibración, es necesario modificarlos en el programa «Sensor_humedad_capacitivo_final.ino» para poder medir correctamente el porcentaje de humedad relativa en un terreno en tiempo real.
Lista de Materiales
- Arduino UNO Rev.3
- Cable USB tipo A-B
- Capacitive Soil Moisure Sensor V1.2 (Sensor de humedad capacitivo)
- Cables de conexión
Código del programa
Calibracion_sensor_humedad_capacitivo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
/* TITULO: Calibración del sensor de humedad capacitivo AUTOR: MARIANO DEL CAMPO GARCÍA (@2018) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa vamos a obtener los valores de lectura del pin "A0", donde tenemos conectada la salida analógica "AOUT" del sensor de humedad capacitivo. Para ello debemos de seguir los siguientes pasos: 1. Abrir el monitor serie del IDE de Arduino y configurar la velocidad en 9600 BAUDIOS. 2. Registrar el valor del sensor cuando esté totalmente expuesto al aire como "Valor_Sensor_Aire". Este es el límite de humedad cuando el suelo está totalmente seco (Humedad: 0% RH). 3. Cojer un recipiente con agua e introducir el sensor sin sobrepasar el "límite de seguridad". 4. Registrar el valor del sensor cuando esté dentro del agua como "Valor_Sensor_Agua". Este es el límite de humedad cuando el suelo está saturado de agua (Humedad: 100% HR). 5. Modificar los valores "Valor_Sensor_Aire" y "Valor_Sensor_Agua" dentro del programa "Sensor_humedad_capacitivo_final.ino" para poder medir correctamente el porcentaje de humedad relativa que hay en un terreno a tiempo real. *** NOTA: Es importante realizar varias lecturas de la salida analógica del sensor de humedad capacitivo a través del pin analógico "A0", para cada uno de los casos límite, hasta que el valor se estabilice. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| Pin "AOUT" del sensor de humedad | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Alimentación del sensor de humedad capacitivo: - Pin "VCC" del sensor de humedad capacitivo --> Pin "+5V" de Arduino. - Pin "GND" del sensor de humedad capacitivo --> Pin "GND" de Arduino. */ #define AOUT 0 // Pin analógico "A0" para conectar la salida del sensor de humedad capacitivo int valor_sensor; // Variable que almacena el valor de salida del sensor de humedad capacitivo void setup() { Serial.begin(9600); // Comienzo de la comunicación con el monitor serie del IDE de Arduino } void loop() { // Leemos el valor de la salida analógica del sensor capacitivo, conectada al pin analógico "A0" valor_sensor = analogRead(AOUT); // Mostramos el valor de la salida analógica del sensor capacitivo a través del monitor serie Serial.print("Valor del sensor de humedad capacitivo: "); Serial.println(valor_sensor); delay(1000); // Retardo de un segundo entre lecturas del sensor de humedad capacitivo } |
Sensor_humedad_capacitivo_final
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
/* TITULO: Medida del porcentaje de humedad relativa del terreno mediante un sensor de humedad capacitivo AUTOR: MARIANO DEL CAMPO GARCÍA (@2018) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa vamos a obtener los porcentajes de humedad relativa del terreno mediante un sensor de humedad capacitivo. Para que el sistema trabaje correctamente debemos de modificar el valor de las variables "Valor_Sensor_Aire" y "Valor_Sensor_Agua" por las obtenidas anteriormente mediante el programa "Calibracion_sensor_humedad_capacitivo.ino". A través del monitor serie del IDE de Arduino podemos ver dicho porcentaje de humedad relativa a tiempo real, y dependiendo de su cuantía, nos avisará del estado del terreno a través del monitor. - Si el porcentaje <= 33% --> "Suelo seco". - Si el porcentaje > 33% y a su vez porcentaje <= 66% --> "Suelo húmedo". - Si el porcentaje > 66% --> "Suelo con exceso de humedad". ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| Pin "AOUT" del sensor de humedad | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Alimentación del sensor de humedad capacitivo: - Pin "VCC" del sensor de humedad capacitivo --> Pin "+5V" de Arduino. - Pin "GND" del sensor de humedad capacitivo --> Pin "GND" de Arduino. */ #define AOUT 0 // Pin analógico "A0" para conectar la salida del sensor de humedad capacitivo const int Valor_Sensor_Aire = 630; // Valor calculado con el programa de calibración con el sensor al aire const int Valor_Sensor_Agua = 345; // Valor calculado con el programa de calibración con el sensor sumergido en agua int valor_sensor = 0; // Variable que almacena el valor de salida del sensor de humedad capacitivo int porcentaje = 0; // Variable que almacena el porcentaje de humedad relativa del terreno void setup() { Serial.begin(9600); // Comienzo de la comunicación con el monitor serie del IDE de Arduino } void loop() { // Leemos el valor de la salida analógica del sensor capacitivo, conectada al pin analógico "A0" valor_sensor = analogRead(AOUT); // Se calcula el porcentaje de humedad relativa teniendo en cuenta los dos límites porcentaje = map(valor_sensor, Valor_Sensor_Agua, Valor_Sensor_Aire, 100, 0); if(porcentaje < 0) porcentaje = 0; // Evita porcentajes negativos en la medida del sensor if(porcentaje > 100) porcentaje = 100; // Evita porcentajes negativos en la medida del sensor // Se presenta el porcentaje a través del monitor serie Serial.print("HUMEDAD: "); Serial.print(porcentaje); Serial.println("% HR"); // Se presentan los mensajes, a través del monitor serie, dependiendo del porcentaje de humedad relativa if(porcentaje <= 33) { Serial.println("Suelo seco !!!"); } if(porcentaje > 33 && porcentaje <= 66) { Serial.println("Suelo humedo !!!"); } if(porcentaje > 66) { Serial.println("Suelo con exceso de humedad !!!"); } Serial.println(" "); delay(1000); // Retardo de un segundo entre lecturas del sensor de humedad capacitivo } |
Video
En conclusión, el uso de un sensor de humedad capacitivo es una excelente opción para medir el porcentaje de humedad relativa de un terreno en tiempo real. Sin embargo, debido a que la fabricación de estos sensores no siempre es precisa y existen diferentes fabricantes, es importante calibrar el dispositivo antes de utilizarlo mediante programación y obtener los valores de calibración a través de varias lecturas. Esto permitirá una medición precisa y confiable de la humedad del terreno.
Esperamos haber proporcionado información valiosa y útil sobre el uso de un sensor de humedad capacitivo para medir el porcentaje de humedad relativa de un terreno en tiempo real. Si tienen alguna pregunta o comentario, no duden en hacérselo saber. Estamos muy interesados en conocer sus pensamientos y opiniones sobre este tema.