Un higrómetro de suelo FC-28 es un sensor que mide la
humedad del suelo. Son ampliamente empleados en sistemas
automáticos de riego para detectar cuando es necesario activar el
sistema de bombeo.
El FC-28 es un sensor sencillo que mide la humedad del suelo por
la variación de su conductividad. No tiene la precisión suficiente
para realizar una medición absoluta de la humedad del suelo, pero
tampoco es necesario para controlar un sistema de riego.
El FC-28 se distribuye con una placa de medición estándar que
permite obtener la medición como valor analógico o como una
salida digital, activada cuando la humedad supera un cierto
umbral.
Los valores obtenidos van desde 0 sumergido en agua, a
1023 en el aire (o en un suelo muy seco). Un suelo
ligeramente húmero daría valores típicos de 600-700. Un suelo seco
tendrá valores de 800-1023.
La salida digital dispara cuando el valor de humedad supera un
cierto umbral, que ajustamos mediante el potenciómetro. Por tanto,
obtendremos una señal LOW cuando el suelo no está húmedo,
y HIGH cuando la humedad supera el valor de consigna.
El valor concreto dependerá del tipo de suelo y la presencia de
elementos químicos, como fertilizantes. Además, no todas las
plantas requieren la misma humedad, por lo que lo mejor es que hagáis
una pequeña calibración en el terreno real.
El sensor de humedad FC-28 es realmente barato. Podemos
encontrarlo por 0,85€ en vendedores internacionales de Ebay y
Aliexpress.
Esquema de montaje
El esquema eléctrico es sencillo. Alimentamos el módulo conectando GND y 5V a los pines correspondientes de Arduino.
Ahora si queremos usar la lectura analógica, conectamos la salida A0 a una de las entradas analógicas de Arduino.
Mientras que la conexión vista desde Arduino quedaría así,
Si quisiéramos emplear el valor digital, que se ajusta con el
potenciómetro de la placa, en su lugar conectaríamos la salida D0
del sensor a una entrada digital de Arduino.
Ejemplos de código
El código necesario es realmente sencillo. Si estamos empleando la señal analógica A0, leemos el valor mediante la entrada analógica, y usamos el puerto serie para mostrar el valor por pantalla. En un caso real, este valor se emplearía para ejecutar acciones, en lugar de mostrar el valor.
#define sensorPin A0
void setup() {
Serial.begin(9600);
}
void loop()
{
int humedad = analogRead(sensorPin);
Serial.print(humedad);
if(humedad <= 500)
{
Serial.println("Encendido");
//hacer las acciones necesarias
}
delay(1000);
}
Si estamos empleando la señal digital, empleamos una entrada
digital para leer el estado. En el ejemplo mostramos un mensaje por
la pantalla, pero igualmente en un caso real ejecutaríamos las
acciones oportunas.
#define sensorPin A0
void setup()
{
Serial.begin(9600);
pinMode(sensorPin, INPUT);
}
void loop()
{
int humedad = digitalRead(sensorPin);
//mandar mensaje a puerto serie en función del valor leído
if (humedad == HIGH)
{
Serial.println("Encendido");
//aquí se ejecutarían las acciones
}
delay(1000);
}
No hay comentarios:
Publicar un comentario