цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Простой датчик качества воды на основе Arduino с передачей данных по Bluetooth


Простой датчик качества воды на основе Arduino с передачей данных по Bluetooth

Автор: Mike(admin) от 3-04-2021, 01:55

Вода – важный ресурс в нашей повседневной жизни. И перед ее употреблением мы должны убедиться, что она хорошего качества. Поэтому в данном материале мы рассмотрим, как своими руками создать простой датчик качества воды на основе Arduino.


Простой датчик качества воды на основе Arduino с передачей данных по Bluetooth

В рамках процессов оценки качества воды зачастую используется параметр TDS или общая минерализация воды. Он дает нам количество твердых веществ, растворенных в определенном количестве воды в ppm (частях на миллион). TDS рассчитывается на основе электропроводности (См/м). Чем выше электропроводность, тем выше значение TDS. Вот список значений TDS для разных типов воды:


  • Чистая вода: 80-150
  • Водопроводная вода: 250-350
  • Подземные воды: 500-1000
  • Морская вода: около 30000

Подходящий TDS питьевой воды, рекомендованный ВОЗ (Всемирная организация здравоохранения), ниже 300. Однако воду с TDS ниже 100 нельзя употреблять, так как в ней не хватает основных минералов. Вода выше 300 считается слишком «жесткой», так как содержит больше минералов, чем необходимо.


Простой датчик качества воды на основе Arduino с передачей данных по Bluetooth

Сегодня на рынке доступны специальные измерители TDS, но они недешевые. Поэтому мы соберем свой датчик качества вода на простых компонентах.


Соберите схему согласно следующему изображению. Резисторы здесь используются сопротивлением 330 Ом.


Простой датчик качества воды на основе Arduino с передачей данных по Bluetooth

Для проверки качества воды используйте специальную трубку-контейнер с подведенными проводами.


Простой датчик качества воды на основе Arduino с передачей данных по Bluetooth

Код программы для Arduino выглядит следующим образом:



#include <SoftwareSerial.h> // pdfpunk.weebly.com/softwareserial-library-download.html
#include <LiquidCrystal.h> // arduinolibraries.info/libraries/liquid-crystal

//для bluetooth - создайте объект под названием BTserial с выводом RX на 3 и выводом TX на 2
SoftwareSerial BTserial(3,2); // RX | TX

float reads;
int pin = A0;

float vOut = 0 ; // падение напряжения между 2-я точками
float vIn = 5;
float R1 = 1000;
float R2 = 0;
float buffer = 0;
float TDS;

float R = 0;// сопротивление между 2 проводами 
float r = 0;// удельное сопротивление 
float L = 0.06;// расстояние между проводами в м 
double A = 0.000154;// площадь сечения провода в м ^ 2

float C = 0;// проводимость в См/м 
float Cm = 0;// проводимость в мСм/см 

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

//мы будем использовать эту формулу, чтобы получить удельное сопротивление после использования закона Ома
//R = r L / A => r = R A / L 

//создание lcd объекта из библиотеки Liquid Crystal 
LiquidCrystal lcd(8,7,10,11,12,13);

void setup() {

  Serial.begin(9600);
  BTserial.begin(9600);

  lcd.begin(16, 2);

  //установите выводы светодиода rgb (все они должны быть выводами pwm на Arduino) в качестве вывода 
  pinMode(rPin,OUTPUT);
  pinMode(bPin,OUTPUT);
  pinMode(gPin,OUTPUT);
  pinMode(pin,INPUT);
  lcd.print("Conductivity: ");
}

void loop() {
    reads = analogRead(A0);
  
  vOut = reads*5/1023;
  Serial.println(reads);
//  Serial.println(vOut);
  buffer = (vIn/vOut)-1;
  R2 = R1*buffer;
  Serial.println(R2);
  delay(500);
    //преобразовать напряжение в сопротивление 
    //Применить формулу, упомянутую выше 
      r = R2*A/L;//R=rL/A
    //преобразовать удельное сопротивление в проводимость
    C = 1/r;
    Cm = C*10;
    //преобразовать проводимость в мСм/см в TDS 
    TDS = Cm *700;
    //Установить курсор ЖК-дисплея на следующую строку 
    lcd.setCursor(0,1);
    lcd.println(C);

    //отображать соответствующие цвета на светодиодах RGB в соответствии с принятыми аналоговыми сигналами
     if( reads < 600 )
  {
      if (reads <= 300){
        setColor( 255, 0, 255 ) ;
      }
      if (reads > 200){
        setColor( 200, 0, 255 ) ;
      }
  }
  else{
    if( reads <= 900 )
    {
      setColor( 0, 0, 255 ) ;
    }
    if( reads > 700 )
  {
    setColor( 0, 255, 255 ) ;
  }
    }

//отправлять данные в приложение на мобильном телефоне через Bluetooth
BTserial.print(C);
BTserial.print(",");
BTserial.print(TDS);
BTserial.print(";");
delay(500);
}


void setColor(int red, int green, int blue)
{
  analogWrite( rPin, 255 - red ) ;
  analogWrite( gPin, 255 - green ) ;
  analogWrite( bPin, 255 - blue ) ;  
}

Итак, в данном случае мы рассчитываем сопротивление воды и на основании этого получаем удельное сопротивление. Для этого мы должны учитывать длину и площадь поперечного сечения нашего контейнера: R = r L/A => r = R A/L.


Из удельного сопротивления мы можем получить проводимость: c = 1/r.


Наконец, мы получаем TDS из проводимости: TDS = c*7000.


Как видите, принцип работы устройства очень прост, а его сборка не занимает много времени, средств и сил благодаря простоте и доступности компонентов.




© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий