Un sensor para el agua, un sensor para la lluvia en los zapatos

Cómo utilizar sensores de lluvia en arduinoAyy el agua… ese recurso básico que tan poco cuidamos y que pronto necesitaremos. Y no en otros países… sino en todos y cada uno de ellos. Un verdadero problema… (Aunque media España ande nevada).

Después de este momento así profundo dejo de meterme en cosas tan idealistas y me vuelvo a cosas prácticas y realizables. No sé como solucionar el problema del agua, pero sé como sensorizar recipientes con agua para que alguien con más visión e ingenio que yo invente cómo ahorrar agua.

Así que de eso va la cosa hoy: sensores y agua… ¿Interesante? ¡Vamos allá!

Cómo funcionan los sensores de agua o lluvia

En cuanto a sensores de agua he encontrado este. Aunque también está el YL-83 y el FC-37. Hay mucho escrito sobre estos y cada uno es de una manera y un color porque cada empresa los hace a su antojo pero el funcionamiento es igual de sencillo en todos. O eso creo…

El sensor en sí son unas placas metálicas recorridas por una corriente. Cuando el agua se deposita encima de las placas hay una conducción de corriente al unirse ambas placas por el agua, un medio conductor. Así se sabe si hay agua o no.

Luego, según la conducción que hay se puede saber si hay mucha agua o poca. Es por eso que uno de los pines ofrece una señal analógica. Al leer esta señal analógica por los pines analógicos de Arduino se puede obtener una señal de 0 (la placa está seca y no hay conducción de corriente) a 1023 (la placa está empapada y ofrece el máximo de corriente que puede dar).

Con esto es sencillo saber si ha bajado el nivel de un depósito, si ha empezado a llover o si alguien ha escupido en nuestra querida planta 😛

¿Pines analógicos y ya está?

Para conectar este tipo de sensores tan solo hay que conectar uno de los tres pines a GND, otro a 5 Voltios y un tercero a un pin analógico. La verdad es que es bastante simple. Los pines de GND y 5 Voltios harán que circule la corriente por el sensor y el pin analógico ofrecerá un valor 0 inicialmente ya que no pasa corriente por sus placas metálicas.

Cuando el agua llegue al sensor las placas se conectarán y harán pasar una corriente. El nivel de agua marcará la intensidad que saldrá por el pin analógico y esto es lo que se apreciará a la entrada de nuestro Arduino.

El ejemplo de conexión que hago es conectando 5V y GND y el pin extra lo conecto al A0. Para utilizarlo podrías utilizar un código sencillo. Este sería un ejemplo:

int agua = 0;

void setup() {
  Serial.begin(9600);
}
 
void loop(){
  agua = analogRead(A0);
  Serial.println(agua); 
  delay(1000);
}

Como puedes ver, declaro una variable llamada agua y la hago ser lo que haya en el pin analógico 0.  Luego muestro ese valor por el Serial y espero 1 segundo a tomar el siguiente valor. En un caso real podría tomar valores cada unos cuantos minutos porque no es una cosa que varíe tan rápido. Incluso si no fuese algo importante se podría medir una vez al día.

Más fácil todavía señores, la versión digital</3>

Pero he visto por ahí que hay una serie de placas que acompañan a estos sensores para manejarlos y en lugar de tener 3 pines tienen 4. Este cuarto pin es una salida digital, es decir o un Sí o un No, o un 1 o un 0, o 5 Voltios o GND.

Para ello se incluye un potenciómetro en la placa. El potenciómetro lo que hace es marcar un voltaje determinado. Este se compara con un comparador que tiene la propia placa y lo que hace es sacar por el pin 0 Voltios si el valor es menor al marcado con el potenciómetro y 5 Voltios cuando el valor supera este límite.

En estos caso el circuito solamente varía en la conexión al pin analógico. Se conecta ahora al pin digital 9 (por ejemplo). Y su código simplemente trata de coger entre un valor positivo o negativo. Un ejemplo de código sería algo tal que así:

int agua = 0;

void setup() {
  Serial.begin(9600);
  pinMode(9, INPUT);
}
 
void loop(){
  agua = digitalRead(9);
  if (agua==HIGH) Serial.println("Empieza a haber algo de agua...");
  else Serial.println("Nos quedamos sin agua..."); 
  delay(1000);
}

Como ves no es más que una lectura de un pin digital y si es HIGH hacemos una cosa y si es LOW otra. Sencillo, sencillo eh…

Opt In Image

Creando nuestro propio sensor de lluvia digital

Si en el sensor que has comprado no está esta excelente placa adicional que contiene el potenciómetro y el comparador no todo está perdido. Puedes hacer un apaño en el código de tu Arduino para que la señal de salida analógica actúe como la digital.

Como ya te he dicho, solamente necesitas la placa en sí, el circuito es el que has visto para la señal analógica. Pero ahora utilizarás el siguiente código:

int agua = 0;

void setup() {
  Serial.begin(9600);
}
 
void loop(){
  agua = analogRead(A0);
  if (agua>700) Serial.println("Empieza a haber algo de agua...");
  else Serial.println("Nos quedamos sin agua..."); 
  delay(1000);
}

Y así lo hacemos, diciéndole que a partir de una tensión (aquí utilizamos el número y con la placa utilizabamos la propia comparación entre tensiones) actúe como un HIGH. Así que es más barato y bien simple 😉

Nada, ahora a medir la lluvia, el agua y la cerveza…

Y ya está! Ya puedes detectar agua. La precisión no da para tanto y no vas a poder contar cuántas gotas de lluvia caen en tu terraza o saber cuándo tienes que desalojar a tus clientes de la terraza del bar pero sí vas a poder notar que hay agua y activar algún mecanismo.

Puede que detectes que hay agua y si a los 5 minutos sigue habiendo agua actives un techo para los clientes del bar. O puede que notes que el agua de un depósito ha subido o bajado de un nivel determinado en el que hayas puesto el sensor y actives la adición o extracción de agua… O una alarma…

Aunque eso último se podría intentar por ultrasonidos… Solo son ideas, estoy seguro que tú tienes miles. ¡A ver si nos las cuentas en los comentarios! 😉

Oye! ¿Y si detectas la lluvia en los zapatos?

[Total:4    Promedio:5/5]

Déjame un comentario que en el fondo soy buen chaval

  1. Responder

    • Responder

Deja un comentario