Sencillo detector de líquidos


En este post, vamos a ver como realizar la detección de niveles de líquidos con Arduino. En primer lugar, verá información sobre el sensor de nivel de agua y, a continuación, aprenderá a usar este módulo con algunos ejemplos prácticos.

Estos son los componentes hw y sw que necesitaremos:

Componentes de hardware
Arduino UNO R3 ×1
Sensor de nivel de agua ElectroPeak ×1
ElectroPeak Jumpers×1
ElectroPeak Buzzer×1
Aplicaciones de software y servicios en línea
ElectroPeak Arduino IDE

¿Qué es la detección de nivel de agua?

La detección del nivel de líquido o, en otras palabras, la medición del nivel de líquido en tanques profundos o agua en los embalses se realiza con el fin de controlar la profundidad del agua y evitar que se desborde en la industria. En aplicaciones domésticas también se puede utilizar, por ejemplo, para detectar el nivel de agua dentro de los acuarios. El propósito de la medición del nivel es determinar el nivel de líquido en cualquier momento y hacer el funcionamiento requerido en consecuencia.

Hay diferentes maneras de medir el nivel de líquido. Algunos sensores calculan la profundidad del líquido de acuerdo con la presión causada por la gravedad específica del líquido y la distancia vertical a la superficie. Algunos otros emiten ondas ultrasónicas desde un transductor que también detecta y mide las ondas reflejadas para calcular la profundidad del líquido.

El sensor que utilizamos en este tutorial es compatible con Arduino y funciona sobre la base de mediciones de resistencia, pronto descubrirá cómo funciona.

Cómo funciona el sensor de nivel de agua

Este módulo, que es uno de los módulos más utilizados para detectar el nivel de líquido, funciona sobre la base del cambio de resistencia. En este módulo, hay líneas paralelas de conductividad que están conectadas al suelo y son de hecho el camino de la corriente eléctrica. El agua es un buen conductor por lo que cuando estas líneas están en el agua, serán de cortocircuito, y la resistencia del módulo disminuye.

Al fijar el módulo en el recipiente líquido, la resistencia variable se establece en un valor específico basado en el nivel del agua. El módulo mide esta resistencia analógica y la envía a Arduino. Arduino utiliza este valor directamente o convirtiendo este valor en una cantidad digital.

Este sensor de nivel de agua tiene 3 pines. 2 de ellos son para potencia (+), que se conectan a la +5V, y tierra (-), que se conectan al terminal de tierra del Arduino. El otro pin (S), es el pin de salida analógica.

Sensor de nivel de agua de interconexión con Arduino

No necesita ninguna biblioteca específica para usar este sensor. Sólo tiene que leer el valor analógico del pin de salida y calcular el nivel de líquido en consecuencia.

Circuito

Código

Cargue el siguiente código en la placa Arduino y abra la ventana del monitor serie. Coloque el sensor en agua y podrá ver los resultados en la ventana del monitor serie.

/* Water level sensor
*  by Hanie Kiani
*  https://electropeak.com/learn/   
*/
const int analogInPin = A0; 
int sensorValue = 0;
void setup() {
Serial.begin(9600); 
}
void loop() {
sensorValue = analogRead(analogInPin); 
Serial.print("Sensor = " ); 
Serial.print(sensorValue*100/1024); 
Serial.println("%");
delay(1000); 
} 

Utilice el sensor de nivel de líquido como detector de lluvia

También puede utilizar el sensor de nivel de agua para detectar la lluvia con un zumbador. Para detectar si está lloviendo, coloque el sensor horizontalmente para que las gotas de lluvia puedan caer sobre el sensor y aumentar el valor del pin S.

Cuando el sensor empiece a mojarse, el zumbador comenzará a pitarse cada pocos segundos. Y cuando el módulo se moja por completo, el zumbador advierte con un sonido más fuerte y seguirá pitando sin parar.

Circuito

Código

/* 
  * Rain Detector with Water level sensor
*  by Hanie kiani
*  https://electropeak.com/learn/   
*/
const int sensorMin = 0;     // sensor minimum
const int sensorMax = 1024;  // sensor maximum
const int buzzer = 9;
void setup() {
 Serial.begin(9600);  
 pinMode(buzzer, OUTPUT);
}
void loop() {
int sensorReading = analogRead(A0);
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
 // range value:
 switch (range) {
case 0:    // Sensor is wet
   Serial.println("ٌWet!");
   tone(buzzer, 5000); 
   break;
case 1:    // Sensor getting wet
   Serial.println(" Warning");
    tone(buzzer, 1000 , 5); 
   break;
case 2:    // Sensor dry 
   Serial.println("Dry");
   noTone(buzzer);  
   break;
 }
 delay(10);  // delay between reads
}  

La función map()divide el rango delsensor 0 a 1024 en 3 secciones.

tone(buzzer, 5000);

La función tone() envía una señal PWM en el pasador del zumbador para que el zumbador haga un sonido.

El primer argumento especifica el pin de salida y el segundo determina la frecuencia PWM. También puede tener un tercer argumento de pie para la duración de la señal.

Smarthand


En el impulso por desarrollar sistemas robóticos que puedan sentir e interactuar con su entorno, se han realizado enormes inversiones en visión artificial. Hemos visto los frutos de estas inversiones en una amplia gama de aplicaciones, desde automóviles autónomos hasta la automatización de robots industriales. Si bien estos esfuerzos han tenido mucho éxito, los sensores ópticos no son la solución ideal para todos los casos de uso. Las tareas de manipulación de objetos, por ejemplo, suelen requerir información táctil para manipular con precisión y seguridad los objetos de interés. Puede imaginar un enfoque híbrido en el que los métodos de visión por computadora localicen el objeto y dirijan un robot a la posición correcta. A partir de ahí, los sensores táctiles dentro de una mano robótica brindan información sobre la fragilidad o robustez del objeto y ayudan a crear un plan para llevar a cabo las intenciones del robot.

En comparación con la visión por computadora, se ha dedicado mucha menos atención al desarrollo de sensores táctiles, lo que los hace generalmente menos sofisticados que sus contrapartes ópticas. Esto ha dificultado el desarrollo de robots que sean capaces de generar una comprensión de alta resolución de su entorno mediante la integración de datos de múltiples tipos de sensores.

 En un esfuerzo por comenzar a abordar las deficiencias en la tecnología de detección táctil actual, un equipo de ingenieros de ETH Zürich ha desarrollado un dispositivo que llaman SmartHand .

 SmartHand es un sistema integrado de hardware y software creado para recopilar y procesar información táctil de alta resolución de una matriz de sensores múltiples en forma de mano en tiempo real.

System architecture (📷: X. Wang et al.)

Arquitectura del sistema (📷: X. Wang et al.)

El dispositivo SmartHand utiliza una rejilla sensora táctil resistiva de bajo costo, basada en un compuesto de polímero conductor, que se pega a un guante. Se adjunta una unidad de medición inercial (IMU) en la parte posterior del guante para proporcionar información adicional sobre el movimiento. Los datos de los 1024 sensores táctiles (dispuestos en una cuadrícula de 32 por 32) y la IMU se introducen en una placa de descubrimiento STM32F769NI conectada a la muñeca a través de una serie de cables. Esta placa contiene un núcleo Arm Cortex-M7 que funciona a 216 MHz, con 2 MB de memoria flash y 532 kB de RAM.

Para demostrar SmartHand, los investigadores querían poder detectar qué tipo de objeto sostenía la mano. Para ello, se creó y entrenó una red neuronal convolucional, basada en la arquitectura ResNet-18, para reconocer la relación entre los datos de los sensores y un conjunto de dieciséis objetos cotidianos. Se creó un conjunto de datos usando el dispositivo físico para que sirviera como datos de entrenamiento para el modelo. Recopilando mediciones a 100 cuadros por segundo (13,7 veces más rápido que el trabajo anterior), se generó un conjunto de datos táctiles que consta de 340.000 cuadros.

The sensor grid (📷: X. Wang et al.)

La red de sensores (📷: X. Wang et al.)

Al validar la red neuronal, se encontró que el modelo requiere un orden de magnitud menos de memoria y 15,6 veces menos cálculos, en comparación con los dispositivos actuales. Esto se logró manteniendo la red neuronal lo más compacta posible, sin sacrificar la precisión de las predicciones. Hablando de predicciones, se encontró que la precisión de clasificación top 1 del modelo alcanzó el 98,86% en el reconocimiento de objetos. Al mantener el procesamiento en el límite, el tiempo de inferencia se mantuvo en unos muy razonables 100 milisegundos.

Se observó que, debido a las propiedades inherentes de los materiales que componen la rejilla del sensor táctil, habrá cierto nivel de degradación con el uso repetido. Los primeros indicios sugieren que la degradación puede estabilizarse, lo que permitiría recalibrar el diseño actual después de un período de rodaje inicial sin ningún otro cambio. Actualmente están evaluando si este es el caso, o si la degradación del sensor continúa más allá de la meseta aparente, lo que requeriría más cambios de diseño antes de que sea posible el uso del dispositivo en el mundo real.

El equipo prevé que las técnicas de SmartHand se utilicen en futuras aplicaciones robóticas y protésicas de manos. Con un poco más de esfuerzo, este trabajo puede acercarnos a un mundo en el que los robots no parecen tan robóticos.

Fuente hackester.io