Датчик концентрации солей (TDS-метр)

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

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

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

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

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

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

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

  • не все вещества-электролиты опасны;
  • не все опасные вещества являются электролитами, а значит остаются невидимыми для TDS-метра.

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

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

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

  1. Подключите измерительный щуп к датчику солей.
  2. Скоммуницируйте датчик солей с подключённым щупом к аналоговому пину A0 платформы Arduino. Для коммуникации понадобятся соединительные провода «мама-папа».Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.С Troyka Slot Shield провода не понадобятся вовсе.
  3. Опустите измерительный щуп в воду.

Код для Arduino IDE

Прошейте платформу Arduino скетчем приведённым ниже.

troyka-tds-sensor-example-arduino-read-data.ino
// любой GPIO пин с поддержкой АЦП
constexpr auto pinSensor = A0;
 
void setup() {
  // открываем Serial-порт
  Serial.begin(9600);
}
 
void loop() {
  // считываем данные с датчика влажности почвы
  int valueSensor = analogRead(pinSensor);
  // переводим данные с датчика в напряжение
  float voltageSensor = valueSensor * 5 / 1024.0;
  // конвертируем напряжение в концентрацию
  float tdsSensor = (133.42 * pow(voltageSensor, 3) - 255.86 * pow(voltageSensor, 2) + 857.39 * voltageSensor) * 0.5;
  // выводим данные в Serial-порт
  Serial.print("TDS Value = "); 
  Serial.print(tdsSensor);
  Serial.println(" ppm");
  // ждём 100 мс
  delay(1000);
}

После загрузки скетча, в Serial-порт будут выводиться текущие показания примиссей воды в ppm.

Патч для XOD

  1. Создайте новый патч
  2. Добавьте в патч ноду analog-sensor и установите ей в инспекторе PORT значение A0.
  3. Добавьте ноду watch и подключите её к ноде analog-sensor к пину VAL.
  4. Прошейте платформу Arduino с режимом отладки.

После загрузки прошивки, в отладочной ноде watch будут выводиться текущие показания примесей воды в ppm.

Пример для Espruino

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

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

  1. Подключите измерительный щуп к датчику солей.
  2. Соедините датчик солей с подключённым щупом к аналоговому пину A0 платформы Iskra JS. Для коммуникации понадобятся соединительные провода «мама-папа».Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.С Troyka Slot Shield провода не понадобятся вовсе.
  3. Опустите измерительный щуп в воду.

Исходный код

Прошейте платформу Iskra JS скриптом приведённым ниже.

troyka-tds-sensor-example-espruino-read-data.js
// выводим показания датчика на пине A0 каждые 100 мс
setInterval(function() {
  var valueSensor = analogRead(A0) * 100;
  print('Value sensor: ', Math.round(valueSensor), '%');
}, 100);

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

Пример для Raspberry Pi

В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например Raspberry Pi 4.

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

К сожалению в компьютере Raspberry Pi нет встроеенного аналого-цифрового преобразователя. Используйте плату расширение Troyka Cap, которое добавит малине аналоговые пины.

  1. Подключите измерительный щуп к датчику солей.
  2. Подключите TDS-датчик к Raspberry Pi через плату расширения Troyka Cap к 3 пину. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
  3. Опустите измерительный щуп в воду.

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

Исходный код

Запустите скрипт на малине приведённым ниже.

troyka-tds-sensor-example-raspberry-pi-read-data.py
# библиотека для работы со временем и задержками
import time
# библиотека для работы с расширителем портов GPIO Expander на плате Troyka Cap
import gpioexp
# создаём объект для работы с расширителем портов
exp = gpioexp.gpioexp()
 
# пин к которому подключен TDS-датчик
# любой GPIO пин платы расширения Troyka Cap
pinSensor = 3
 
while True:
    # считываем состояние датчика влажности почвы
    valueSensor = exp.analogRead(pinSensor)
    # переводим данные с датчика в напряжение
    voltageSensor = valueSensor * 3.3
    # конвертируем напряжение в концентрацию
    tdsSensor = (133.42 * pow(voltageSensor, 3) - 255.86 * pow(voltageSensor, 2) + 857.39 * voltageSensor) * 0.5;
    # выводим показания датчика
    print('Value sensor: ', round(tdsSensor), ' ppm')
    # ждём 100 мс
    time.sleep(0.1)

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

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

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

Измерительные электроды

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

На электроды поступает переменное напряжение, что значительно увеличивает срок службы щупа.

Разъём подключения TDS-щупа

Измерительный щуп подключается к плате управления через разъём JST XH-3 Female и Male соответственно.

Генератор импульсов LCM555

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

Операционный усилитель TSX564

Микросхема TSX564 состоит из четырёх операционный усилителей: два используются для усиления переменного сигнала на электродах щупа, а другие два выпрямляют полученные данные.

Регуляторы напряжения

В схеме используется двухполярное питание:

  • положительное плечо +3V с выхода понижающего регулятора TPS73030. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3 В с максимальным выходным током 200 мА.
  • отрицательное плечо −3V с выхода инвертирующего регулятора TPS60400. Входное напряжение поступает с положительного плеча +3V и инвертируется в −3Vс максимальным выходным током 60 мА.

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

Troyka-контакты

Датчик подключается к управляющей электронике через три провода.

  • Сигнальный (S) — выходной сигнал сенсора. Напряжение на выходе датчика прямо пропорционально уровню измеренной электропроводности: чем выше электропроводность, тем выше уровень сигнала на выходе датчика и соответственно наоборот. Максимальное выходное значения 2,3 вольта. Подключите к аналоговому пину микроконтроллера.
  • Питание (V) — соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — соедините с землёй микроконтроллера.

Принципиальная и монтажная схемы

Габаритный чертёж

Характеристики

  • Напряжение питания: 3,3–5 В
  • Потребляемый ток: до 6 мА
  • Интерфейс: аналоговый сигнал
  • Диапазон выходного сигнала: 0–2,5 В / 0–1250 ppm
  • Длина выходного кабеля: 0,6 м
  • Габариты модуля: 25×25×17 мм
  • Габариты щупа: 63×13 мм

Ресурсы