Tds sensor arduino

Содержание

Датчик концентрации солей (TDS-метр): инструкция, схемы и примеры использования

Сенсор уровня солей используется для контроля питательных веществ раствора в системах гидропоники и аквакультуре. Датчик также пригодится для проверки эффективности очистки воды фильтрами и системами обратного осмоса.

Датчик измеряет минерализаци воды, а точнее концентрацию солей, методом измерения электропроводности. Существует прямая зависимость электропроводности от количества растворенных в воде соединений солей, на этом основан принцип действия TDS метра. Сенсор определяет концентрацию (сумму) любых растворенных в воде ионов: катионов (+) и анионов (−), минералов, солей и металлов.

Принцип работы

TDS-датчик методом кондуктометра (EC-метра) измеряет удельную электрическую проводимость жидкости, которая пропорциональна суммарному количеству растворенных в воде примесей TDS (Total Dissolved Solids) на один миллион частиц воды (parts per million). Один ppm примерно соответствует одному мг/литр.

В состав TDS-датчика входит измерительный щуп и плата управления. Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает сопротивление, которое фиксирует и обрабатывает плата управления. А теперь немного подробнее.

Плата управления генерирует с помощью микросхемы LMC555 переменное напряжение, которое поступает на один из электродов щупа. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал усиливается и выпрямляется с помощью операционных усилителей на чипе TSX564. На выходе сигнал проходит фильтрацию и поступает на выходной сигнал платы.

TDS-метр измеряет минирелизацию воды, но не определяет её чистоту и безопасность, так как:

Пример работы для Arduino и XOD

В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Uno.

Источник

Измеритель кислотности и концентрации (TDS, EC, pH-метр) на Arduino, Piranha, ESP

Общие сведения

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

У нас также есть проекты по созданию отдельных устройств: измерителя кислотности (pH-метр), и измерителя концентрации (TDS-метр), а таже устройств для автоматической нормализации кислотности и концентрации.

Если это ваш первый опыт программирования контроллеров, прочитайте статью о настройке Arduino IDE и об установке библиотек.

Видео

Нам понадобится

  • 1х датчик TDS/EC-метр;
  • 1х датчик pH-метр;
  • 1х контроллер Arduino или Piranha UNO*;
  • 1x Trema Shield;
  • 1х I2C LCD дисплей 2004 (с конвертером I2C) или 1602;
  • 1х I2C Hub (или в формате Trema);
  • в качестве корпуса можно использовать ПВХ-конструктор.

* Можно использовать любой контроллер серии Piranha, Arduino, или ESP-32.

Установка библиотек

Установите необходимые библиотеки в Arduino IDE:

Установка I2C адресов датчиков

Поскольку оба модуля подключены к шине I2C, необходимо, чтобы они имели разные адреса. Достаточно изменить адрес только одного устройства (или TDS-метра, или pH-метра). Сделать это можно, используя специальный установщик адресов, или при помощи контроллера. О том, как это сделать, читайте здесь (на примере pH-метра). Установите ему адрес, отличный от 0x09, например, 0x0A.

Схема

Не забудьте перед сборкой схемы откалибровать датчики. Как откалибровать pH-метр? Как откалибровать TDS-метр?

Скетч

Особенность совместной работы устройств

Щупы датчиков pH и TDS, находясь в одной ёмкости, электрически соединяются посредством жидкости. Из-за этого может наблюдаться отклонение значений TDS-метра примерно на 20-30% в меньшую сторону. При этом, TDS-метр не оказывает влияния на показания pH-метра.

Источник

Arduino with TDS Sensor (Water Quality Sensor)

In this guide, you’ll learn how to use a TDS meter (Total Dissolved Solids) with an Arduino board. A TDS meter indicates the total dissolved solids like salts, minerals, and metals, in a solution. This parameter can be used to give you an idea of water quality and compare water from different sources. One of the main applications of a TDS meter is aquarium water quality monitoring.

We’ll use the TDS meter from keystudio and show you a simple example to measure TDS in ppm units using Arduino IDE.

Table of Contents

In this tutorial, we’ll cover the following topics

Introducing the TDS Meter

A TDS meter measures the number of total dissolved solids like salts, minerals, and metals in the water. As the number of dissolved solids in the water increases, the conductivity of the water increases, and that allow us to calculate the total dissolved solids in ppm (mg/L).

Although this is a good indicator to monitor the quality of the water, note that it does not measure contaminants in the water. Thus, you can’t rely solely on this indicator to determine if the water is good for consumption or not.

A TDS meter can be useful to monitor water quality in many applications like pools, aquariums, fish tanks, hydroponics, water purifiers, etc.

In this tutorial, we’ll use the TDS meter from keystudio that comes with an interface module and an electrode probe (see picture above).

For more information about the TDS meter, we recommend taking a look at the official documentation.

Features and Specifications

This tutorial refers to the TDS Meter V1.0 from keystudio. Here are the sensor parameters:

TDS Meter:

    Input Voltage: DC 3.3

5.5V
Output Voltage: 0

2.3V
Working Current: 3

6mA
TDS Measurement Range: 0

1000ppm

  • TDS Measurement Accuracy: ± 10% F.S. (25 ℃)
  • Module Interface: XH2.54-3P
  • Electrode Interface: XH2.54-2P
  • TDS Probe:

    • Number of Needle: 2
    • Total Length: 60cm
    • Connection Interface: XH2.54-2P
    • Color: White
    • Waterproof Probe

    Where to Buy TDS Sensor?

    You can check the TDS sensor on Maker Advisor to find the best price:

    You can use the preceding links or go directly to MakerAdvisor.com/tools to find all the parts for your projects at the best price!

    Interfacing the TDS Meter with the Arduino

    The TDS meter outputs an analog signal that can be measured using the Arduino analog pins (A0 to A5).

    Wire the sensor as in the following table:

    TDS Sensor Arduino
    GND GND
    VCC 3.3V
    Data A0 (or any other Arduino analog pin)

    Reading TDS (water quality) with the Arduino- Code

    As we mentioned previously, the sensor outputs an analog signal that can be converted to TDS in ppm. We’re using the code provided by the sensor documentation with some modifications.

    To get more accurate results, you’ll probably need to calibrate your sensor against a solution with a known TDS value. However, it might not be needed if you are not concerned about specific values but about a qualitative value of TDS.

    Upload the following code to your Arduino.

    How the Code Works

    Let’s take a quick look at the code. You can also skip right away to the Demonstration section.

    The TdsSensorPin variable saves the GPIO where you want to get the readings. The ESP8266 only has one analog pin, A0.

    Then, insert the analog voltage reference for the ADC. For an Arduino, it is 5V.

    Before getting a measurement value, we’ll apply a median filtering algorithm to get a more stable value. The SCOUNT variable refers to the number of samples we’ll filter before getting an actual value.

    Then, we need some arrays to store the readings as well as some index variables that will allow us to go through the arrays.

    Initialize the averageVoltage variable and tsdValue as float variables.

    The temperature variable saves the current temperature value. The temperature influences the readings, so there is an algorithm that compensates for fluctuations in temperature. In this example, the reference temperature is 25ºC, but you can change it depending on your environment. For more accurate results, you can add a temperature sensor and get the actual temperature at the time of reading the sensor.

    The following function will be used to get a stable TDS value from an array of readings.

    In the setup() , initialize the Serial Monitor at a baud rate of 115200.

    Set the TDS sensor pin as an input.

    In the loop(), get new TDS readings every 40 milliseconds and save them in the buffer:

    Then, every 800 milliseconds, it gets the latest readings and gets the average voltage by using the filtering algorithm created before:

    Then, it calculates a temperature compensation coefficient and calculates the TDS value taking that value into account:

    Finally, it prints the TDS value in ppm:

    Demonstration

    After copying the code to the Arduino IDE, upload the code to your board. Don’t forget to select the right board in Tools > Board and the right COM port in Tools > Port.

    After uploading, open the Serial Monitor at a baud rate of 115200.

    It will show a value of approximately 0 if the probe is not submerged. Put the probe on a solution to check its TDS. You can try with tap water and add some salt to see the values increase.

    I measured the TDS value for tap water in my house, and I got a value of around 100ppm, which is a good value for drinking water.

    I also tested tea, and the TDS value increased to about 230ppm, which seems a reasonable value.

    Finally, I also measured the TDS value of bottled water and I got a value of around 25ppm (the same value when using an ESP8266).

    Wrapping Up

    A TDS meter can measure the total dissolved solids in a solution. It can be used as an indicator of water quality and allows you to characterize the water. The meter returns the TDS value in ppm (parts per million—mg/L). The TDS value has many applications but it cannot be used by itself to determine if the water is drinkable or not.

    A great application of this type of sensor is an aquarium water quality monitor. You can use this sensor alongside a waterproof DS18B20 temperature sensor to monitor your fish tank, for example.

    We have tutorials for other popular sensors with the Arduino board that you may like:

    Learn more about the Arduino with our resources:

    Источник

    TDS/EC-метр для воды с щупом: руководство по использованию для Arduino

    Используйте TDS/EC-метр для измерения количества растворённых твёрдых веществ в воде и её удельной электрической проводимости. Датчик пригодится для проверки эффективности очистки питьевой воды в бытовом фильтре, анализа качества дистиллированной воды или приготовления питательного раствора в гидропонных системах.

    Видеообзор

    Подробности

    Сенсор TDS/EC — это солемер и кондуктометр на одной плате.

    • Солемер TDS (Total Dissolved Solids) служит для определения общего количества растворённых твердых веществ в воде от 0 до 10000 ppm.
    • Кондуктометр EC (Electrical Conductivity) служит для определения удельной электрической проводимости воды от 0 до 20000 мкСм/см.

    По выходным данным TDS и EC можно судить об общей минерализации, жёсткости и солёности воды. Чувствительность датчика позволяет зафиксировать даже 2-3 крупинки пищевой соли растворённой в стакане дистиллированной воды.

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

    TDS/EC-метр состоит из погружного щупа и платы управления. Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор между электродами возникает сопротивление, которое фиксирует и обрабатывает плата управления.

    TDS/EC-метр относится к серии «Flash», а значит к одной шине I²C можно подключить более 100 модулей. Адрес по умолчанию установлен 0x09.

    Рекомендации по измерению

    • Перед измерениями протрите электроды щупа спиртом или дистиллированной водой.
    • При сильном загрязнении электродов, опустите щуп в дистиллированную воду на пару часов.
    • После погружения сенсора в жидкость, поводите щупом в разные стороны, как бы перемешивая жидкость. Это позволит избавиться от пузырьков воздуха, которые могут попасть между контактами электродов в процессе погружения датчика.
    • Выжидайте не менее минуты с момента погружения щупа до проведения замеров.
    • Не касайтесь руками электродов измерительного щупа.
    • Между измерениями разных жидкостей, сполосните щуп в дистиллированной воде или стряхните остатки капель предыдущей жидкости.
    • Датчик следует калибровать, как в процессе эксплуатации, так и после каждой замены датчика.
    • Постоянное увеличение показаний модуля (>20 ppm в день), означает о испарении жидкости в которую погружён датчик или о наличии в ней микрофлоры.

    Подключение и настройка

    TDS/EC-метр поддерживает два выходных интерфейса для подключения к контроллеру: аналоговый и цифровой I²C.

    Аналоговый интерфейс

    Что понадобится

    Рекомендуем также обратить внимание на дополнительные платы расширения:

    • Trema Shield поможет подключить модуль к Arduino с помощью аккуратного шлейфа.
    • Trema Set Shield поможет подключить модуль к Arduino без проводов вовсе.

    Схема устройства

    Схема устройства с Trema Shield

    Схема устройства с Trema Set Shield

    В завершении опустите измерительный щуп в воду.

    Программная настройка

    Цифровой интерфейс I²C

    Что понадобится

    Рекомендуем также обратить внимание на дополнительные платы расширения:

    • Trema Shield поможет подключить модуль к Arduino с помощью аккуратного шлейфа.
    • Trema Set Shield поможет подключить модуль к Arduino без проводов вовсе.

    Схема устройства

    Схема устройства с Trema Shield

    Схема устройства с Trema Set Shield

    В завершении опустите измерительный щуп в воду.

    Программная настройка

    Калибровка датчика

    Для повышения точности показаний датчик необходимо калибровать. TDS/EC-метр поддерживает аппаратную и программную калибровку.

    Калибровка датчика доступна только на шине I²C, с аналоговым сигналом калибровочные коэффициенты необходимо высчитывать самостоятельно.

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

    Приготовление калибровочных растворов

    Рассмотрим процесс приготовления буферных растворов для дальнейшей калибровки TDS/EC-метра. Для примера будем приготавливать растворы с концентрацией 500 ppm и 1500 ppm.

    Что понадобится

    • 1× Хлорид калия KCl
    • 3× Стакан для воды
    • 1× Дистиллированная вода (H2O)
    • 1× Шприц
    • 1× Кухонные весы

    Если хлорида калия KCl нет, можно использовать хлорид натрия NaCl — это обычная пищевая соль. Однако в обычной поваренной соли содержится много примесей, которые негативно будут влиять на точность показаний.

    Инструкция по приготовлению

    1. Пронумеруйте стаканы цифрами «0», «1» и «2» соответственно.
    2. В стакане «0» приготовим раствор хлорида калия с концентрацией 10000 ppm:
      • В стакан «0» насыпьте 1000 мг калиевой соли.
      • В стакан «0» налейте 50 мл дистиллированной воды и перемешайте до полного растворения соли.
      • В стакан «0» долейте дистиллированной воды до получения 100 мл раствора и снова перемешайте.
      • В итоге в стакане «0» мы получили раствор 10000 ppm (1000 мг / 100 мл = 10000 мг/л).
    3. В стакане «1» приготовим первую калибровочную жидкость 500 ppm:
      • В стакан «1» перелейте 5 мл раствора из стакана «0» с помощью шприца. Теперь в стакане «1» находится 5 мл начального раствора.
      • В стакан «1» долейте дистиллированной воды до получения 100 мл раствора.
      • В итоге в стакане «1» мы получили первую калибровочную жидкость 500 ppm (50 мг / 100 мл = 500 мг/л).
    4. В стакане «2» приготовим первую калибровочную жидкость 1500 ppm:
      • В стакан «2» перелейте 15 мл раствора из стакана «0» с помощью шприца. Теперь в стакане «2» находится 15 мл начального раствора.
      • В стакан «2» долейте дистиллированной воды до получения 100 мл раствора.
      • В итоге в стакане «2» мы получили первую калибровочную жидкость 1500 ppm (150 мг / 100 мл = 1500 мг/л).
    5. Раствор в стакане «0» больше не понадобится. А калибровочные растворы в стаканах «1» и «2» должны настояться не менее 2 часов.

    Аппаратная калибровка

    Аппаратная калибровка — это калибровка датчика при помощи кнопки.

    Что понадобится

    1. Подключите и настройте TDS/EC-метр через цифровой интерфейс I²C.
    2. Приготовьте калибровочные растворы. По умолчанию концентрация первого раствора 500 ppm, а второго — 1500 ppm.

    Инструкция

    • Протрите электроды щупа спиртом или дистиллированной водой.
    • Опустите щуп датчика в первую калибровочную жидкость. В нашем примере концентрация первой калибровочной жидкости установлена в 500 ppm.
    • Подождите одну минуту.
    • Нажмите кнопку «калибровка». Должен начать мигать светодиод «1».
    • Подождите пока не начнут перемигиваться светодиоды «1» и «2».
    • Вытащите щуп датчика из первой калибровочной жидкости.
    • Протрите электроды щупа спиртом или дистиллированной водой.
    • Опустите щуп датчика во вторую калибровочную жидкость. В нашем примере концентрация второй калибровочной жидкости установлена в 1500 ppm.
    • Подождите одну минуту.
    • Нажмите кнопку «калибровка». Должен начать мигать светодиод «2».
    • Подождите пока не погаснут светодиоды «1» и «2».
    • Вытащите щуп датчика из второй калибровочной жидкости.

    Примечания

    • Концентрация эталонного раствора для первой стадии — 500 ppm, для второй стадии — 1500 ppm.
    • Новые эталонные значения концентрации калибровочных растворов можно установить функцией setKnownTDS() .
    • Температура калибровочных жидкостей должна быть близка к 25 °С. Если температура жидкостей отличается от 25 °С, то её реальное значение необходимо указать функцией set_t() .

    Программная калибровка

    Программная калибровка — это калибровка датчика без помощи кнопки.

    Что понадобится

    1. Подключите и настройте TDS/EC-метр через цифровой интерфейс I²C.
    2. Приготовьте калибровочные растворы. По умолчанию концентрация первого раствора 500 ppm, а второго — 1500 ppm.

    Инструкция

    • Протрите электроды щупа спиртом или дистиллированной водой.
    • Опустите щуп датчика в первую калибровочную жидкость. В нашем примере концентрация первой калибровочной жидкости установлена в 500 ppm.
    • Подождите одну минуту.
    • Вызовите функцию setCalibration() с параметрами 1 и концентрацией первого калибровочного раствора.
    • Вытащите щуп датчика из первой калибровочной жидкости.
    • Протрите электроды щупа спиртом или дистиллированной водой.
    • Опустите щуп датчика во вторую калибровочную жидкость. В нашем примере концентрация второй калибровочной жидкости установлена в 1500 ppm.
    • Подождите одну минуту.
    • Вызовите функцию setCalibration() с параметрами 2 и концентрацией второго калибровочного раствора.
    • Вытащите щуп датчика из второй калибровочной жидкости.

    Исходный код

    Примечания

    • Мы использовали концентрации эталонных растворов для первой стадии — 500 ppm, для второй стадии — 1500 ppm. Однако вы можете указывать свои значения калибровочных растворов в функции setCalibration() .
    • Температура калибровочных жидкостей должна быть близка к 25 °С. Если температура жидкостей отличается от 25 °С, то её реальное значение необходимо указать функцией set_t() .

    Примеры работы

    Рассмотрим базовые примеры для работы с TDS/EC-метром.

    Аналоговый интерфейс

    Выведем данные с датчика через аналоговый интерфейс.

    Исходный код

    Результат работы

    После прошивки контроллера, в COM-порт Arduino будет выводиться измеренная электропроводность жидкости S, приведенная электропроводность жидкости EC и количество растворённых твёрдых веществ в жидкости TDS.

    Цифровой интерфейс I²C

    Выведем данные с датчика через цифровой интерфейс I²C.

    Исходный код

    Результат работы

    После прошивки контроллера, в COM-порт Arduino будет выводиться измеренная электропроводность жидкости S, приведенная электропроводность жидкости EC и количество растворённых твёрдых веществ в жидкости TDS.

    Элементы платы

    Датчик TDS/EC состоит из измерительного щупа и платы управления.

    Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает сопротивление, которое фиксирует и обрабатывает плата управления.

    Плата управления генерирует переменное напряжение, которое поступает на один из электродов щупа. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал усиливается и выпрямляется с помощью операционных усилителей.

    Модуль построен на базе микроконтроллера STM32F030F4 и двух операционных усилителях LMC7101 и LM358. На плате также распаяна кнопка калибровки, информационные светодиоды и контакты для подключения к контроллеру.

    Кнопка калибровки

    Кнопка «Калибровка» служит для выполнению аппаратной калибровки модуля. Все подробности по использованию кнопки читайте в разделе калибровка модуля.

    Информационные светодиоды

    Информационные светодиоды «1» и «2» служат для наглядности выполнения аппаратной калибровки модуля. Все подробности читайте в разделе калибровка модуля.

    Trema-контакты

    TDS/EC-метр поддерживает два выходных интерфейса для подключения к контроллеру: аналоговый и цифровой I²C.

    Аналоговый интерфейс

    Контакт Функция Подключение
    S Выходной сигнал сенсора Подключите к пину ввода-вывода микроконтроллера с поддержкой АЦП.
    V Питание Подключите к питанию микроконтроллера.
    G Земля Подключите к земле микроконтроллера.

    Цифровой интерфейс I²C

    Контакт Функция Подключение
    SDA Линия данных шины I²C Подключите к пину SDA микроконтроллера.
    SCL Линия тактирования шины I²C Подключите к пину SCL микроконтроллера.
    V Питание Подключите к питанию микроконтроллера.
    G Земля Подключите к земле микроконтроллера.

    Формулы и определения

    Формулы

    • Ro = (R + Rd ) Xc / (R + Rd + Xc)
    • S = Ka * (( VCC_M — Kf * V_M ) / 2) ^ Kb.
    • EC = S / ( 1 + Kt * (t — T))
    • TDS = EC × Kp

    Определения

    • VCC_M — напряжение питания ОУ модуля 3,3 В.
    • V_M — напряжение на выходе модуля. Напряжение на выходе модуля V_M можно запросить функцией getVout()
    • S — измеренная удельная электрическая проводимость в мкСм/см. Вычисляется из электрической проводимости G (мкСм) и постоянной датчика Kd (см-1). Измеренную удельную электропроводность S можно запросить функцией get_S() .
    • EC — приведённая удельная электропроводность жидкости. Электрическая проводимость жидкости S сильно зависит от её текущей температуры t: чем выше температура жидкости, тем выше её электрическая проводимость и соответственно наоборот. По этому удельную электрическую проводимость S измеряют при любой температуре t, а затем результат приводят к опорной температуре T получая EC. Приведённую удельную электропроводность EC можно запросить функцией get_EC() .
    • TDS — количество растворённых твёрдых веществ в ppm (мг/л воды). Это значение определяется умножением приведённой удельной электрической проводимости ЕС (мкСм/см) на коэффициент пересчёта Kp = 0,5 (по умолчанию). Количество растворённых твёрдых веществ TDS можно запросить функцией get_TDS() .
    • t — текущая температура жидкости. Модуль определяет все параметры измеряя сопротивление жидкости, которое сильно зависит от её температуры. По этому модулю требуется указывать текущую температуру жидкости для получения корректных значений. Текущую температуру t нужно установить функцией set_t() .
    • T — опорная температура жидкости, при которой произведение её измеренной удельной электропроводности и коэффициента пересчёта Kp равно концентрации растворённых твёрдых веществ в жидкости TDS. Опорную температуру T можно запросить функцией get_T() .
    • Kt — температурный коэффициент жидкости, который показывает на сколько сильно электрическая проводимость жидкости зависит от её температуры. Температурный коэффициент жидкости Kt используется для приведения удельной электрической проводимости жидкости S измеренной при текущей температуре t к удельной электрической проводимости жидкости EC для опорной температуры T. Температурный коэффициент жидкости Kt можно запросить функцией getKt() .
    • Kp — коэффициент пересчёта для преобразования приведённой удельной электрической проводимости жидкости EC в количество растворённых твёрдых веществ TDS. Коэффициент пересчёта Kp можно запросить функцией get_Kp() .
    • Kf — коэффициент передачи частоты тока используемого для измерений.
    • Коэффициенты степенной функции Ka и Kb определяются модулем самостоятельно в процессе калибровки и автоматически сохраняются в его памяти. Калибровка является предпочтительным методом указания коэффициентов Ka и Kb.

    Библиотека для Arduino

    Для работы TDS/EC-метра с контроллерами Arduino мы разработали библиотеку iarduino_I2C_TDS. Программный модуль поддерживает аппаратную и программную реализацию I²C, подробности читайте в разделе расширенные возможности библиотек для Arduino на шине I²C.

    Библиотека поддерживает работу с датчиком только по шине I²C, с аналоговым сигналом программный модуль работать не будет.

    Установка

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

    Источник

    Adblock
    detector