ACERCA DE ESTE PROYECTO

El agua es un recurso esencial en nuestra vida diaria. Por lo tanto, debemos asegurarnos de que sea de buena calidad para su uso.

COMPONENTES Y SUMINISTROS

  • Arduino UNO
  • Cables de puente macho / hembra
  • Protoboard 800p
  • Módulo Bluetooth HC-05
  • Cátodo común difuso RGB
  • Resistencia 330 ohmios
  • Potenciómetro giratorio (genérico)
  • Kit de pantalla LCD RGB, pantalla de 16×2 caracteres
  • Resistencia 1k ohmios

¿Qué es el TDS?

TDS son las siglas de Total Dissolved Solids. Como sugiere el nombre, nos da la cantidad de sólidos disueltos en una cierta cantidad de agua, en ppm (partes por millón). El TDS se calcula en función de la conductividad eléctrica [S / m]. Cuanto mayor sea la conductividad eléctrica, mayor será el valor de TDS. Aquí hay una lista de los valores de TDS de diferentes tipos de agua:

  • Agua pura: 80-150
  • Agua del grifo: 250-350
  • Agua subterránea: 500-1000
  • Agua de mar: alrededor de 30000

El TDS adecuado del agua potable, según lo recomendado por la OMS (Organización Mundial de la Salud) está por debajo de 300. Sin embargo, el agua de TDS por debajo de 100 no se puede consumir, ya que carecería de los minerales esenciales. El agua por encima de 300 se considera demasiado «dura», ya que contiene más minerales de los necesarios.

Normalmente, usamos un bolígrafo TDS para medir el TDS del agua. Sin embargo, no podemos integrar el lápiz con Arduino. Por lo tanto, hay medidores TDS especiales disponibles que se pueden integrar con Arduino. Sin embargo, he decidido hacer este proyecto sin el uso del lápiz TDS.

Bolígrafo TDS.  Cortesía: https://www.indiamart.com/proddetail/tds-meter-8850482948.html

El circuito

Arduino

  • Conecte 5V de Arduino a un riel de alimentación de la placa de pruebas
  • Conecte la tierra de Arduino al otro riel de alimentación de la placa de pruebas
  • Conecte un extremo de una resistencia de 1 k-ohm al suelo y el otro extremo a la placa de pruebas. Conecte el pin analógico A0 en el Arduino a la resistencia. Finalmente, conecte un cable a la resistencia y otro cable a 5V. Conecte los extremos libres de estos cables a las pinzas de cocodrilo.

Pantalla LCD

  • Conecte el pin VSS al riel de tierra
  • Conecte el pin VDD al riel de 5V
  • Conecte V0 al pin central del potenciómetro
  • Conecte los extremos del potenciómetro a 5 V y tierra
  • Conecte el pin RS al pin 7 de Arduino
  • Conecte el pin R / W al pin 8 de Arduino
  • Conecte D4 al pin 10 de Arduino
  • Conecte D5 al pin 11 de Arduino
  • Conecte D6 al pin 12 de Arduino
  • Conecte D7 al pin 13 de Arduino

Módulo Bluetooth HC-05

  • Conecte el pin VCC al riel de 5V
  • Conecte el pin GND a tierra
  • Conecte el pin TX al pin 3 de Arduino (sirve como RX)
  • Conecte el pin RX al pin 2 de Arduino (sirve como TX)

LED RGB

  • Conecte el cátodo común (pin más largo) a tierra
  • Conecte el pin rojo (a la derecha del pin del cátodo) al pin 9 de PWM en Arduino a través de una resistencia de 330 ohmios
  • Conecte el pin verde (a la izquierda del pin del cátodo) al pin 6 de PWM en Arduino a través de una resistencia de 330 ohmios
  • Conecte el pin azul (extremo izquierdo) al pin 5 de PWM en Arduino a través de una resistencia de 330 ohmios

El trabajo

Calcularemos la resistencia del agua bajo prueba, y de ahí obtendremos la resistividad. Tenemos que considerar la longitud y el área de la sección transversal de nuestro contenedor para esto.

R = r L/A
=> r = R A/L

De la resistividad, podemos obtener la conductividad.

c = 1/r

Finalmente, obtenemos el TDS de la conductividad

TDS = c*7000

CÓDIGO

// incluir bibliotecas
#include  <SoftwareSerial.h>
#include  <LiquidCrystal.h>

// para bluetooth: crea un objeto llamado BTserial, con el pin RX en 3 y el pin TX en 2
SoftwareSerial  BTserial ( 3 , 2 );  // RX | TX

// decraración de todas nuestras variables

flotante  lee ;
int  pin  =  A0 ;

flotar  vOut  =  0  ; // caída de voltaje en 2 puntos
flotador  vIn  =  5 ;
flotador  R1  =  1000 ;
flotar  R2  =  0 ;
 búfer  flotante =  0 ;
flotar  TDS ;

flotar  R  =  0 ; // resistencia entre los 2 cables
flotar  r  =  0 ; //resistividad
flotador  L  =  0.06 ; // distancia entre los cables en m
doble  A  =  0,000154 ; // área de la sección transversal del cable en m ^ 2

flotador  C  =  0 ; // conductividad en S / m
flotador  Cm  =  0 ; // conductividad en mS / cm

int  rPin  =  9 ;
int  bPin  =  5 ;
int  gPin  =  6 ;
int  rVal  =  255 ;
int  bVal  =  255 ;
int  gVal  =  255 ;

// usaremos esta fórmula para obtener la resistividad después de usar la ley de ohmios -> R = r L / A => r = RA / L

// creando un objeto lcd a partir de la biblioteca de cristal líquido
LiquidCrystal  lcd ( 8 , 7 , 10 , 11 , 12 , 13 );

 configuración vacía ()  {
  // inicializar BT serial y monitor serial
  Serial . comenzar ( 9600 );
  BTserial . comenzar ( 9600 );

  // inicializar lcd
  lcd . comenzar ( 16 ,  2 );

  // establecer pines led rgb (todos serán pines pwm en Arduino) como salida
  pinMode ( rPin , SALIDA );
  pinMode ( bPin , SALIDA );
  pinMode ( gPin , SALIDA );
  pinMode ( pin , ENTRADA );
  // Imprimir mensaje estancado en LCD
  lcd . print ( "Conductividad:" );
}

 bucle vacío ()  {
    lee  =  analogRead ( A0 );
  
  Vout  =  lee * 5 / 1.023 mil ;
  Serial . println ( lee );
// Serial.println (vOut);
  búfer  =  ( vIn / vOut ) - 1 ;
  R2  =  tampón R1 * ;
  Serial . println ( R2 );
  retraso ( 500 );
    // convierte voltaje en resistencia
    // Aplicar la fórmula mencionada anteriormente
      r  =  R2 * A / L ; // R = rL / A
    // convierte resistividad en condictividad
    C  =  1 / r ;
    Cm  =  C * 10 ;
    // convierte la conductividad en mS / cm a TDS
    TDS  =  Cm  * 700 ;
    // Coloca el cursor de la pantalla LCD en la siguiente fila
    lcd . setCursor ( 0 , 1 );
    lcd . println ( C );

    // muestra los colores correspondientes en el led rgb de acuerdo con la lectura analógica
     si (  lee  <  600  )
  {
      if  ( lee  <=  300 ) {
        setColor (  255 ,  0 ,  255  )  ;
      }
      if  ( lee  >  200 ) {
        setColor (  200 ,  0 ,  255  )  ;
      }
  }
  else {
    si (  lee  <=  900  )
    {
      setColor (  0 ,  0 ,  255  )  ;
    }
    si (  lee  >  700  )
  {
    setColor (  0 ,  255 ,  255  )  ;
  }
    }

// enviar datos a la aplicación Ardutooth en el teléfono móvil a través de bluetooth
BTserial . imprimir ( C );
BTserial . imprimir ( "," );
BTserial . imprimir ( TDS );
BTserial . imprimir ( ";" );
retraso ( 500 );
}


void  setColor ( int  rojo ,  int  verde ,  int  azul )
{
  analogWrite (  rPin ,  255  -  rojo  )  ;
  analogWrite (  gPin ,  255  -  verde  )  ;
  analogWrite (  bPin ,  255  -  azul  )  ;  
}
https://create.arduino.cc/