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

В рамках процессов оценки качества воды зачастую используется параметр TDS или общая минерализация воды. Он дает нам количество твердых веществ, растворенных в определенном количестве воды в ppm (частях на миллион). TDS рассчитывается на основе электропроводности (См/м). Чем выше электропроводность, тем выше значение TDS. Вот список значений TDS для разных типов воды:
- Чистая вода: 80-150
- Водопроводная вода: 250-350
- Подземные воды: 500-1000
- Морская вода: около 30000
Подходящий TDS питьевой воды, рекомендованный ВОЗ (Всемирная организация здравоохранения), ниже 300. Однако воду с TDS ниже 100 нельзя употреблять, так как в ней не хватает основных минералов. Вода выше 300 считается слишком «жесткой», так как содержит больше минералов, чем необходимо.

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

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

Код программы для 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