Определение качества (мутности) воды с помощью Arduino и датчика мутности


Мутность является одним из важнейших показателей качества воды. В этой статье мы рассмотрим что такое мутность жидкости и как ее измерять с помощью платы Arduino. Усовершенствовать рассматриваемый в данной статье тестер качества воды вы можете на основе измерения ее уровня pH (кислотности).

Внешний вид проекта определения качества воды с помощью Arduino и датчика мутности

Что такое мутность жидкости

Мутность является степенью (уровнем) непрозрачности (затемненности) жидкости. Жидкость становится мутной вследствие присутствия в ней большого количества невидимых глазу частиц, что очень похоже на белый туман (дым) в воздухе. Когда свет проходит через такую жидкость, световые волны рассеиваются из-за наличия этих мелких частиц. Мутность жидкости прямо пропорциональна количеству свободных частиц во взвешенном состоянии, чем больше число этих частиц – тем больше мутность жидкости.

Физический смысл мутности жидкости

Как измерить мутность с помощью платы Arduino

Как было отмечено ранее, мутность обусловлена рассеянием световых волн. Таким образом, для измерения мутности мы должны измерять рассеяние света. Мутность обычно измеряется нефелометрическими единицами мутности (nephelometric turbidity units, NTU) или единицами мутности по Джексону (Jackson turbidity units, JTLJ) в зависимости от используемого метода измерений. Оба этих значения примерно равны.

Датчик мутности (turbidity sensor) состоит из двух частей – передатчика и приемника. Передатчик состоит из источника света, обычно это светодиод, и схемы управления. В приемнике используется детектор света, обычно это фотодиод или фоторезистор. Измеряемая жидкость (раствор) находится между передатчиком и приемником.

Принцип измерения мутности жидкости

Принцип работы датчика мутности достаточно прост. Передатчик излучает свет, свет проходит через жидкость (раствор) и приемник улавливает свет. Если жидкость прозрачная (нет никаких взвесей), то приемник улавливает практически весь свет, излученный передатчиком. Но если жидкость мутная (взвеси присутствуют), то количество улавливаемого приемником света уменьшается, причем интенсивность принятого света обратно пропорциональна мутности жидкости. Таким образом, мы можем измерять мутность жидкости, измеряя интенсивность принятого света, излученного передатчиком.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль датчика мутности (Turbidity module) (купить на AliExpress).
  3. ЖК дисплей 16х2 с модулем интерфейса I2C (купить на AliExpress).
  4. Трехцветный светодиод с общим катодом (Common cathode RGB LED) (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Внешний вид необходимых для проекта компонентов показан на следующем рисунке.

Внешний вид необходимых для проекта компонентов

Датчик мутности (Turbidity Sensor)

Внешний вид типового датчика мутности показан на следующем рисунке.

Внешний вид датчика мутности (Turbidity Sensor)

Как вы можете видеть из рисунка, модуль датчика мутности содержит 3 основные части: водонепроницаемый корпус, схема управления и соединительные провода. Измерительный датчик состоит из передатчика и приемника.

Передающая и приемная части датчика мутности крупным планом

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

Внешний вид платы управления датчика мутности

Датчик может быть подключен к модулю с помощью разъема JST XH типа. Он содержит три контакта: VCC (напряжение питания 5 В), ground (общий провод, земля), и output (выход). На выходной контакт модуля подается сигнал, пропорциональный интенсивности принятого светового сигнала.

Технические характеристики датчика мутности:

  • рабочее напряжение: 5VDC (5 В постоянного тока);
  • ток: 30mA (MAX);
  • диапазон рабочих температур: от -30 ° C до 80 ° C.
  • совместим с Arduino, Raspberry Pi, AVR, PIC и т.д.

Схема проекта

Схема подключения датчика мутности к плате Arduino представлена на следующем рисунке. Схема нарисована в симуляторе EasyEDA.

Схема подключения датчика мутности к плате Arduino

Как видите, схема крайне проста. Выход датчика мутности у нас аналоговый, поэтому он подключен к аналоговому контакту A0 платы Arduino, ЖК дисплей подключен по интерфейсу I2C к контактам данного интерфейса на плате Arduino (SCL – A5, SDA – A4). Трехцветный светодиод подключен к цифровым контактам D2, D3 и D4 платы Arduino. После сборки проекта на макетной плате у нас получилась конструкция следующего вида:

Внешний вид конструкции нашего проекта

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Основная цель нашего проекта – отображать на экране ЖК дисплея значения мутности в диапазоне от 0 до 100, где 0 соответствует абсолютно чистой жидкости, а 100 – очень сильно мутной жидкости.

Первым делом в программе подключим библиотеку для управления ЖК дисплеем по протоколу I2C.

Затем дадим осмысленное название контакту, к которому подключен выход датчика мутности.

В функции setup зададим режим работы на вывод данных для 3-х используемых цифровых контактов.

В функции loop мы будем считывать значение с выхода контакта A0 с помощью функции AnalogRead.

Но прежде чем делать вывод о том, насколько тестируемая жидкость мутная, необходимо разобраться с принципом работы (поведением) нашего датчика мутности. Для этого нам необходимо считать минимальное и максимальное значения с его выхода.

Для получения этих значений мы сначала погрузили датчик в абсолютно чистую воду, без всяких взвесей. В этом случае мы получили значение 640 с выхода датчика. Потом мы поместили абсолютно черное вещество между передатчиком и приемником и получили минимальное значение – 0. Таким образом, мы получили 640 в качестве максимального значения и 0 в качестве минимального. Теперь нам необходимо конвертировать эти значения в диапазон 0-100 – для этого мы будем использовать функцию map.

Затем мы будем отображать это значение на экране ЖК дисплея.

После этого мы с помощью оператора if запишем несколько условий в программе. Следующий фрагмент кода будет зажигать зеленый цвет в светодиоде, а на экран ЖК дисплея будет выводиться надпись "its clear" – то есть жидкость чистая (прозрачная).

Если значение мутности будет лежать в диапазоне 20-50, то будет загораться синий цвет в светодиоде, а на экран ЖК дисплея будет выводиться надпись "its cloudy"  – "мутновато немного".

Если значение мутности будет больше 50, то будет загораться красный цвет в светодиоде, а на экран ЖК дисплея будет выводиться надпись "it's dirty"  – "жидкость совсем мутная".

После того как аппаратная часть проекта будет готова, загружайте программу в плату Arduino. После этого вы сможете измерять мутность жидкостей. Значения мутности будут отображаться на экране ЖК дисплея как показано на следующем рисунке. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Тестирование работы проекта

Но следует отметить, что наш измеритель мутности жидкости отображает лишь процент мутности и не может выполнять роль промышленного прибора, но, тем не менее, он может быть использован для сравнения качества двух жидкостей (по параметру мутности).

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
2 809 просмотров

Комментарии

Определение качества (мутности) воды с помощью Arduino и датчика мутности — 5 комментариев

  1. Добрый день. Датчик мутности со смотровым стеклом. Какой экономический эффект? В нефтяной промышленности

  2. Здравствуйте! Подскажите, как было установлено, что прозрачной воде соответствует значение 640 с выхода датчика? В моем случае это значение 3.57В, подскажите как его перевести в понятное для arduino?

    • Добрый день. Калибровка датчиков мутности с завода может немного отличаться друг от друга, поэтому и нужно вручную определять диапазон его значений. 640 - это значение на выходе АЦП аналогового контакта Ардуино, оно может изменяться в диапазоне от 0 до 1023, по нему можно определить значение аналогового напряжения, приложенного к контакту. В данном случае это будет 640/1024 * 5В = 3,125В. Более подробно про это вы можете прочитать в статье про использование АЦП в Ардуино. Аналогичным образом, развернув формулу, вы можете пересчитать свои 3.57В в значение на выходе АЦП и потом подставить это значение в команду map(sensorValue, 0,640, 100, 0) вместо 640 чтобы конвертировать ваш диапазон на выходе АЦП в диапазон от 0 до 100.

    • Добрый день. А что конкретно не работает? Никто пока не жаловался. Может быть, в скетч где-нибудь закралась обидная опечатка и все исправляют ее на "автомате", но мы с вами можем попытаться ее найти

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *