Общие сведения
Измеритель концентрации можно использовать для анализа жидкостей, используемых в гидропонике, аквариумах, колодцах для полива растений и т.д.
У нас также есть проекты по созданию измерителя кислотности (pH-метр), универсального измерителя pH и TDS, а таже устройств для автоматической нормализации кислотности и концентрации.
Если это ваш первый опыт программирования контроллеров, прочитайте статью о настройке Arduino IDE и об установке библиотек.
Видео
Нам понадобится
- 1х датчик TDS/EC-метр;
- 1х контроллер Arduino или Piranha UNO*;
- 1x Trema Shield;
- 1х I2C LCD дисплей 2004 (с конвертером I2C) или 1602;
- 1х I2C Hub (или в формате Trema);
- в качестве корпуса можно использовать ПВХ-конструктор.
* Можно использовать любой контроллер серии Piranha, Arduino, или ESP-32.
Схема
Не забудьте перед сборкой схемы откалибровать датчик TDS. О том, как это сделать, читайте в статье.

Установка библиотек
Перед загрузкой кода в контроллер, установите необходимые библиотеки:
- iarduino_I2C_TDS для работы с TDS-метром;
- LiquidCrystal_I2C для работы с дисплеем.
При необходимости воспользуйтесь инструкцией по установке.
Скетч
#include <iarduino_I2C_TDS.h> // Подключаем библиотеку для работы с TDS/EC-метром I2C-flash.
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C
iarduino_I2C_TDS tds; // Объявляем объект tds для работы с функциями и методами библиотеки iarduino_I2C_TDS, адрес модуля на шине I2C не указываем - он будет обнаружен автоматически.
LiquidCrystal_I2C lcd(0x27,20,4); // Объявляем объект lcd для работы с дисплеем(адрес I2C = 0x27, количество столбцов = 20, количество строк = 4) (для диспления 1602 параметры будут 16 и 2)
void setup(){
Serial.begin(9600); // Инициируем работу с шиной UART для передачи данных в монитор последовательного порта на скорости 9600 бит/сек.
tds.begin(); // Инициируем работу с TDS/EC-метром I2C-flash.
lcd.init(); // Инициируем работу с LCD дисплеем
lcd.backlight(); // Включаем подсветку LCD дисплея
}
void loop(){
lcd.clear(); // Очищаем дисплей
tds.set_t(18.0f); // Указываем текущую температуру жидкости.
// Удельная электрическая проводимость, приведённая к опорной температуре T = 25°C (по умолчанию), мкСм/см
lcd.setCursor(0, 0); // Устанавливаем курсор в 0 столбец 0 строку дисплея
lcd.print("EC = "); // Выводим текст на дисплей
lcd.print(tds.getEC()); // Выводим общее измеренное сопротивление.
lcd.setCursor(11, 0); // Устанавливаем курсор
lcd.print("uS/sm"); // Выводим текст на дисплей
// Количество растворённых твёрдых веществ в ppm (мг/л воды)
lcd.setCursor(0, 1); // Устанавливаем курсор в 0 столбец 1 строку дисплея
lcd.print("TDS = "); // Выводим текст на дисплей
lcd.print(tds.getTDS()); // Выводим общее измеренное сопротивление.
lcd.setCursor(11, 1); // Устанавливаем курсор
lcd.print("mg/l"); // Выводим текст на дисплей
// Общее измеренное сопротивление, Ом
lcd.setCursor(0, 2); // Устанавливаем курсор в 0 столбец 1 строку дисплея
lcd.print("Ro = "); // Выводим текст на дисплей
lcd.print(tds.getRo()); // Выводим общее измеренное сопротивление.
lcd.setCursor(11, 2); // Устанавливаем курсор
lcd.print(char(244)); // Выводим текст на дисплей
// Удельная электрическая проводимость, мкСм/см
lcd.setCursor(0, 3); // Устанавливаем курсор в 0 столбец 1 строку дисплея
lcd.print("S = "); // Выводим текст на дисплей
lcd.print(tds.get_S()); // Выводим измеренную удельную электропроводность жидкости.
lcd.setCursor(11, 3); // Устанавливаем курсор
lcd.print("uS/sm"); // Выводим текст на дисплей
delay(1000); // Задержка
}
Ссылки
- Полностью автоматизированная гидропоника с управлением через WiFi;
- Инструкция по установке и настройке Arduino IDE;
- Библиотека для работы с TDS-метром;
- Библиотека для работы с дисплеем.
- Инструкция по установке библиотек;

Обсуждение