====== Датчик концентрации солей (TDS-метр): инструкция, схемы и примеры использования ======
[[amp>product/troyka-tds-sensor?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Сенсор уровня солей]]
используется для контроля питательных веществ раствора в системах гидропоники и аквакультуре. Датчик также пригодится для проверки эффективности очистки воды фильтрами и системами обратного осмоса.
{{ :products:troyka-tds-sensor:troyka-tds-sensor.1.jpg?nolink |}}
Датчик измеряет минерализаци воды, а точнее концентрацию солей, методом измерения электропроводности. Существует прямая зависимость электропроводности от количества растворенных в воде соединений солей, на этом основан принцип действия TDS метра. Сенсор определяет концентрацию (сумму) любых растворенных в воде ионов: катионов (+) и анионов (−), минералов, солей и металлов.
===== Принцип работы =====
TDS-датчик методом кондуктометра (EC-метра) измеряет удельную электрическую проводимость жидкости, которая пропорциональна суммарному количеству растворенных в воде примесей TDS (Total Dissolved Solids) на один миллион частиц воды (parts per million). Один ppm примерно соответствует одному мг/литр.
В состав TDS-датчика входит измерительный щуп и плата управления.
{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe.png?nolink |}}
Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает сопротивление, которое фиксирует и обрабатывает плата управления. А теперь немного подробнее.
Плата управления генерирует с помощью {{ :products:troyka-tds-sensor:lmc555-datasheet.pdf |микросхемы LMC555}} переменное напряжение, которое поступает на один из электродов щупа. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал усиливается и выпрямляется с помощью операционных усилителей на чипе {{ :products:troyka-tds-sensor:tsx564-datasheet.pdf |TSX564}}. На выходе сигнал проходит фильтрацию и поступает на выходной сигнал платы.
TDS-метр измеряет минирелизацию воды, но не определяет её чистоту и безопасность, так как:
* не все вещества-электролиты опасны;
* не все опасные вещества являются электролитами, а значит остаются невидимыми для TDS-метра.
===== Пример работы для Arduino и XOD =====
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии [[amp>collection/arduino?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Arduino]], например, [[amp>product/arduino-uno?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Uno]].
* [[amp>page/arduino-ide?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Как начать работу с Arduino?]]
* [[amp>page/xod-ide?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Как начать работу с XOD?]]
==== Схема устройства ====
- Подключите измерительный щуп к датчику солей.{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe.png?nolink |}}
- Скоммуницируйте датчик солей с подключённым щупом к аналоговому пину ''A0'' платформы Arduino. Для коммуникации понадобятся [[amp>product/wire-fm?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|соединительные провода «мама-папа»]].{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-arduino.png?nolink |}}Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Troyka Shield]], которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-arduino-troyka-shield.png?nolink |}}С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-arduino-troyka-slot-shield.png?nolink|}}
- Опустите измерительный щуп в воду.{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe-water.png?nolink |}}
==== Код для Arduino IDE ====
Прошейте платформу Arduino скетчем, приведённым ниже.
// любой 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 ====
- Создайте новый патч
- Добавьте в патч ноду ''analog-sensor'' и установите ей в инспекторе PORT значение ''A0''.
- Добавьте ноду ''watch'' и подключите её к ноде ''analog-sensor'' к пину ''VAL''.
- Прошейте платформу Arduino с режимом отладки.
{{ :products:sensor-soil-moisture-capacitive:sensor-soil-moisture-capacitive-xod-read-data.png?nolink |}}
После загрузки прошивки, в отладочной ноде ''watch'' будут выводиться текущие показания примесей воды в ''ppm''.
===== Пример для Espruino =====
В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии [[amp>collection/espruino?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Espruino]], например, [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Iskra JS]].
[[:js:ide|Как начать работу с Espruino?]]
==== Схема устройства ====
- Подключите измерительный щуп к датчику солей.{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe.png?nolink |}}
- Соедините датчик солей с подключённым щупом к аналоговому пину ''A0'' платформы Iskra JS. Для коммуникации понадобятся [[amp>product/wire-fm?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|соединительные провода «мама-папа»]].{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-espruino.png?nolink |}}Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Troyka Shield]], которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-espruino-troyka-shield.png?nolink |}}С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-espruino-troyka-slot-shield.png?nolink|}}
- Опустите измерительный щуп в воду.{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe-water.png?nolink |}}
==== Исходный код ====
Прошейте платформу Iskra JS скриптом приведённым ниже.
// выводим показания датчика на пине A0 каждые 100 мс
setInterval(function() {
var valueSensor = analogRead(A0) * 100;
print('Value sensor: ', Math.round(valueSensor), '%');
}, 100);
После загрузки скрипта, в консоль будут выводиться текущие показания примиссей воды в ''ppm''.
===== Пример для Raspberry Pi =====
В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Raspberry Pi]], например, [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaigtroyka-tds-sensorn=sensor-soil-moisture-resistive&utm_medium=wiki|Raspberry Pi 4]].
[[articles:rpi-guide|Подготовь Raspberry Pi]]
==== Схема устройства ====
К сожалению в компьютере Raspberry Pi нет встроеенного аналого-цифрового преобразователя. Используйте плату расширение [[amp>product/raspberry-troyka-cap?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Troyka Cap]], которое добавит малине аналоговые пины.
- Подключите измерительный щуп к датчику солей.{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe.png?nolink |}}
- Подключите TDS-датчик к Raspberry Pi через плату расширения [[amp>product/raspberry-troyka-cap?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Troyka Cap]] к пину ''3''. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-tds-sensor:troyka-tds-sensor-example-raspberry-pi-troyka-cap.png?nolink |}}
- Опустите измерительный щуп в воду.{{ :products:troyka-tds-sensor:troyka-tds-sensor-with-probe-water.png?nolink |}}
==== Программная настройка ====
- [[articles:rpi-guide|Подготовь Raspberry Pi]]
- [[продукты:raspberry-troyka-cap|Настройте плату расширения Troyka Cap]]
==== Исходный код ====
Запустите на малине скрипт, приведённый ниже.
# библиотека для работы со временем и задержками
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-щупа и платы управления.
{{ :products:troyka-tds-sensor:troyka-tds-sensor-annotation.png?nolink |}}
==== Измерительные электроды ====
Для контакта с жидкостью на щупе сенсора расположены два электрода, которые необходимо опустить в измеряемую жидкость для считывания концентрации солей.
На электроды поступает переменное напряжение, что значительно увеличивает срок службы щупа.
==== Разъём подключения TDS-щупа ====
Измерительный щуп подключается к плате управления через разъём {{ :products:troyka-tds-sensor:jst-xh-datasheet.pdf |JST XH-3}} Female и Male соответственно.
==== Генератор импульсов LCM555 ====
Микросхема {{ :products:troyka-tds-sensor:lmc555-datasheet.pdf |LCM555}} используется для генерации импульсов высокой частоты для работы измерительной схемы сенсора.
==== Операционный усилитель TSX564 ====
Микросхема {{ :products:troyka-tds-sensor:tsx564-datasheet.pdf |TSX564}} состоит из четырёх операционный усилителей: два используются для усиления переменного сигнала на электродах щупа, а другие два выпрямляют полученные данные.
==== Регуляторы напряжения ====
В схеме используется двухполярное питание:
* положительное плечо ''+3V'' с выхода понижающего регулятора {{ :products:troyka-tds-sensor:tps73030dbvr-datasheet.pdf |TPS73030}}. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3 В с максимальным выходным током 200 мА.
* отрицательное плечо ''−3V'' с выхода инвертирующего регулятора {{ :products:troyka-tds-sensor:tps60400dbv-datasheet.pdf |TPS60400}}. Входное напряжение поступает с положительного плеча ''+3V'' и инвертируется в ''−3V''с максимальным выходным током 60 мА.
Двухполярная схема используется для генерации переменного напряжения на электроды измерительного TDS-щупа.
==== Troyka-контакты ====
Датчик подключается к управляющей электронике через три провода.
* Сигнальный (S) — выходной сигнал сенсора. Напряжение на выходе датчика прямо пропорционально уровню измеренной электропроводности: чем выше электропроводность, тем выше уровень сигнала на выходе датчика и соответственно наоборот. Максимальное выходное значения 2,3 вольта. Подключите к аналоговому пину микроконтроллера.
* Питание (V) — соедините с рабочим напряжением микроконтроллера.
* Земля (G) — соедините с землёй микроконтроллера.
===== Принципиальная и монтажная схемы =====
{{:products:troyka-tds-sensor:troyka-tds-sensor-schematic.png?direct&490 |}}
{{ :products:troyka-tds-sensor:troyka-tds-sensor-layout-top.png?direct&180|}}
{{ :products:troyka-tds-sensor:troyka-tds-sensor-layout-bottom.png?direct&180|}}
===== Габаритный чертёж =====
[[this>_media/products:troyka-tds-sensor:troyka-tds-sensor-dimensions.pdf|{{:products:troyka-tds-sensor:troyka-tds-sensor-dimensions.png}}]]
===== Характеристики =====
* Напряжение питания: 3,3–5 В
* Потребляемый ток: до 6 мА
* Интерфейс: аналоговый сигнал
* Диапазон выходного сигнала: 0–2,5 В / 0–1250 ppm
* Длина выходного кабеля: 0,6 м
* Габариты модуля: 25×25×17 мм
* Габариты щупа: 63×13 мм
===== Ресурсы =====
* [[amp>product/troyka-tds-sensor?utm_source=man&utm_campaign=troyka-tds-sensor&utm_medium=wiki|Датчик солей]] в магазине.
* [[https://github.com/amperka/hardware-drawings/blob/master/troyka-tds-sensor.svg|Векторное изображение датчика]]
* {{ :products:troyka-tds-sensor:lmc555-datasheet.pdf |Datasheet на микросхему генератора импульсов LMC555}}
* {{ :products:troyka-tds-sensor:tsx564-datasheet.pdf |Datasheet на четырёхканальный операционный усилитель TSX564}}
* {{ :products:troyka-tds-sensor:tps73030dbvr-datasheet.pdf |Datasheet на понижающий преобразователь 3V TPS73030DBVR}}
* {{ :products:troyka-tds-sensor:tps60400dbv-datasheet.pdf |Datasheet на инвертирующий преобразовател TPS60400DBV}}