Если вы дошли до этой статьи, значит, вам нужно цифровое значение pH в вашем проекте, а не просто «красивый прибор» с аналоговой стрелкой. Допустим, у вас уже есть электрод, но он выдаёт аналоговый сигнал, который нужно оцифровать с высокой точностью. Стандартный Arduino не подойдёт — у него 10-битный АЦП, и для pH-метрии этого мало. На помощь приходит ADS1115 — 16-битный АЦП с интерфейсом I2C, который даёт реальную разрешающую способность для работы с pH-электродами.
В этой статье я расскажу, как правильно связать pH-электрод с усилителем, подключить всё к ADS1115, спаять плату и получить стабильные показания. Без воды, без пересказа даташитов — только то, что нужно для работающего устройства.
Почему именно ADS1115
pH-электрод — это источник с огромным выходным сопротивлением (десятки мегаом). Обычный АЦП микроконтроллера просто не сможет корректно считать такой сигнал — он «посадит» напряжение из-за входного тока выборки. Поэтому между электродом и АЦП нужен буфер — усилитель с полевым транзистором на входе.
ADS1115 подходит сюда по нескольким причинам:
- 16-битное разрешение — при напряжении питания 5 В один отсчёт это порядка 0,1 мВ, чего достаточно для измерения с точностью до 0,01–0,02 единицы pH.
- Встроенный программируемый усилитель (PGA) с коэффициентом от 1 до 128 — можно подстроить диапазон под ваш электрод.
- Интерфейс I2C — минимум проводов, легко подключить к Arduino, ESP32, Raspberry Pi.
- Рабочее напряжение 2,0–5,5 В — можно питать от того же источника, что и микроконтроллер.
Без этого АЦП вы будете мучиться с шумом и нестабильностью. С ним — получите приемлемую точность для большинства задач: аквариумистика, гидропоника, контроль воды в колодце или бассейне.
Что понадобится
Вот реальный список компонентов, который нужен для рабочего модуля:
- ADS1115 — сама микросхема на плате или в виде модуля (модуль проще для пайки).
- pH-электрод с BNC-разъёмом (типичный стеклянный электрод для воды).
- Усилитель-буфер на полевом транзисторе — например, LMC6001, AD8603, или готовый модуль pH-усилителя (SEN0161, DFRobot).
- Опорное напряжение (опционально) — если хотите повышенную стабильность.
- Резисторы и конденсаторы для обвязки — типичные номиналы описаны ниже.
- Печатная плата или макетная плата с шинками.
- Микроконтроллер — Arduino Nano, ESP32, любой с I2C.
Если вы используете готовый модуль усилителя (например, от DFRobot), то пайка сводится к соединению трёх плат: усилитель → ADS1115 → микроконтроллер. Это самый быстрый путь к первому запуску.
Схема подключения
ADS1115 работает по I2C, поэтому аналоговый вход подключается к одному из четырёх каналов (A0–A3). Выход усилителя с pH-электрода подаётся на A0. Вот минимальная обвязка:
- VDD ADS1115 → 3,3 В или 5 В (зависит от логики микроконтроллера).
- GND → общая земля.
- SCL → линия I2C тактирования (например, A5 на Arduino Uno).
- SDA → линия I2C данных (A4 на Arduino Uno).
- ADDR → GND (адрес 0x48) или VDD (0x49) — выбираете адрес шины.
- ALERT/RDY → можно не подключать для начала.
На вход A0 подаётся напряжение с выхода усилителя-буфера. Усилитель должен быть включен как повторитель напряжения с высоким входным сопротивлением. Типовая схема на одном полевом транзисторе (например, 2N5457) с источником тока на затворе работает, но я рекомендую использовать готовый ОУ с полевым входом — он проще в настройке и стабильнее.
Между выходом усилителя и входом ADS1115 поставьте RC-фильтр: резистор 1 кОм и конденсатор 100 нФ на землю. Это снизит высокочастотный шум, который иначе будет «гулять» в показаниях.
Пайка модуля
Если вы используете готовые модули (ADS1115 на плате и pH-усилитель на плате), то пайка — это просто соединение проводами. Но если вы собираете всё на одной плате, вот порядок действий:
- Припаяйте ADS1115 к плате. Если это модуль — припаяйте шпильки или провода к контактам VDD, GND, SCL, SDA, ADDR.
- Обвязка по питанию: конденсатор 100 нФ между VDD и GND максимально близко к микросхеме. Это обязательно — без него будут скачки на каждом отсчёте.
- Подтяжки шины I2C: резисторы 4,7 кОм от SDA к VDD и от SCL к VDD. На многих модулях они уже стоят — проверьте.
- Усилитель для pH: если это самодельная схема на ОУ, разместите его как можно ближе к разъёму BNC. Длинные провода от электрода к усилителю — это источник помех и паразитных токов. Идеально — вынести усилитель на отдельную плату прямо на BNC-разъём.
- RC-фильтр на выходе усилителя: резистор последовательно с сигналом, конденсатор от сигнала к земле после резистора. Разместите его перед входом ADS1115.
- Соедините выход фильтра с A0 ADS1115.
- Земля электрода (если есть отдельный провод экранировки) подключите к общей земле, но точка подключения должна быть одна — чтобы не было контуров земли.
Важный момент: pH-электрод — это высокоомный источник. Все соединения до усилителя должны быть максимально короткими и защищёнными от помех. Используйте экранированный провод для BNC, экран подключайте к земле только с одной стороны (обычно на стороне усилителя).
Настройка ADS1115 под pH-метр
ADS1115 имеет несколько ключевых настроек, которые нужно правильно выбрать для pH-метрии:
- Диапазон PGA: типичный выход pH-электрода — от −400 до +400 мВ (при использовании усилителя с смещением это смещается в диапазон 0–3 В или 0–5 В). Если усилитель даёт сигнал 0–3 В, ставьте диапазон ±4,096 В (gain = 1) — это даст разрешение около 0,125 мВ на отсчёт.
- Частота отсчётов (DR): для pH не нужна скорость. 128 SPS — оптимальный выбор. При 64 SPS и ниже внутренний фильтр лучше подавляет сетевые помехи 50 Гц.
- Режим: одиночные измерения (single-shot) — вы отправляете команду, ждёте готовности, читаете результат. Это проще и предсказуемее, чем непрерывный режим.
Теперь о калибровке. pH-электрод имеет наклон около −59,16 мВ/пH при 25 °C (уравнение Нернста). Но реальный наклон электрода отличается, и меняется со временем. Поэтому вам нужно как минимум две буферные жидкости: pH 4,01 и pH 6,86 (или 9,18). Замерив напряжение в обеих жидкостях, вы получите две точки и сможете рассчитать реальный наклон и смещение.
Формула для расчёта pH из напряжения:
pH = 7.0 - (V - V_offset) / Slope
Где V — измеренное напряжение, V_offset — напряжение при pH 7,0, Slope — наклон в мВ/единицу pH (обычно около 54–59 мВ/единицу pH в зависимости от температуры и состояния электрода).
Сравнение вариантов усилителей
Выбор усилителя — это ключевое решение. Вот сравнение трёх реальных вариантов:
| Вариант | Входное сопротивление | Сложность пайки | Стабильность | Для кого |
|---|---|---|---|---|
| Готовый модуль pH-усилителя (DFRobot SEN0161, Atlas Scientific) | > 10¹² Ом | Минимальная — только провода | Высокая, откалиброванная | Если нужно быстро запустить и забыть |
| ОУ с полевым входом (LMC6001, AD8603) + обвязка | > 10¹² Ом | Средняя — нужна печатная плата | Зависит от монтажа | Если хотите своими руками и понимаете в пайке |
| Обычный ОУ (LM358, LM324) | Недостаточно высокое | Простая | Низкая — будет дрейф | Не рекомендую для pH |
Если вы только начинаете — берите готовый модуль усилителя. Он стоит недорого, уже откалиброван и избавит вас от головной боли с входным током смещения. Если хотите всё делать сами — LMC6001 в корпусе DIP-8 паруется без проблем и даёт отличные результаты.
Программная часть
Для работы с ADS1115 удобно использовать библиотеку Adafruit_ADS1X15. Вот минимальный скетч для Arduino:
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
void setup() {
Serial.begin(115200);
ads.begin(0x48); // адрес при подключении ADDR к GND
ads.setGain(GAIN_ONE); // ±4.096V, разрешение 0.125mV
ads.setDataRate(RATE_ADS1115_128SPS);
}
void loop() {
int16_t raw = ads.readADC_SingleEnded(0);
float voltage = raw * 0.125 / 1000.0; // в вольтах
// Калибровочные значения — замените на свои
float v_at_7 = 1.65; // напряжение при pH 7.0
float slope = 0.05916; // вольт на единицу pH (типичное значение)
float ph = 7.0 - (voltage - v_at_7) / slope;
Serial.print("Voltage: "); Serial.print(voltage, 4);
Serial.print(" V, pH: "); Serial.println(ph, 2);
delay(1000);
}
Обратите внимание: калибровочные значения v_at_7 и slope нужно определить экспериментально для вашего конкретного электрода и усилителя. Универсальных цифр тут нет — каждый электрод немного отличается.
Частые ошибки
Вот что обычно идёт не так и как этого избежать:
- Дрейф показаний без причины: проверьте конденсатор на питании ADS1115. Без него внутренний АЦП будет ловить помехи. Также убедитесь, что земля усилителя и ADS1115 — одна точка.
- Шум ±5–10 единиц АЦП: скорее всего, длинные провода от электрода к усилителю. Сократите их до минимума, используйте экран.
- Показания не меняются при смене буферных жидкостей: проверьте, что усилитель не «упирается» в ограничение (rail-to-rail выход не обеспечивает полный диапазон при 5 В). Измерьте выход усилителя мультиметром.
- Неверный адрес I2C: если ADDR подтянут к VDD — адрес 0x49, а не 0x48. Проверьте сканером I2C.
- Забыли про температуру: pH-электрод зависит от температуры. Если вода не при 25 °C, будут ошибки. Добавьте датчик температуры (DS18B20) и компенсируйте в коде.
- Пайка без флюса на полевом транзисторе: затвор полевого транзистора чувствителен к статике. Используйте паяльник с заземлением и не касайтесь выводов.
Как лучше сделать в зависимости от вашей ситуации
Если вам нужен pH-метр для аквариума или гидропоники и вы не хотите возиться с пайкой: возьмите готовый модуль pH-усилителя (DFRobot или Atlas Scientific) и модуль ADS1115. Соедините проводами, загрузите скетч — и через час у вас работающий прибор. Точность будет порядка ±0,1 pH, что для этих задач более чем достаточно.
Если вы хотите вникнуть в тему и сделать всё сами: соберите усилитель на LMC6001, спаяйте на плате с ADS1115, добавьте температурную компенсацию. Это даст вам понимание всех этапов и возможность тонкой настройки. Точность при правильной калибровке — до ±0,02 pH.
Если бюджет ограничен: ADS1115 на модуле стоит недорого, а усилитель на одном полевом транзисторе (2N5457 или BF245) — копейки. Но учтите, что настройка такого усилителя потребует больше внимания и измерительных приборов.
Рекомендации по стабильной работе
- Калибруйте электрод перед каждым важным использованием. Наклон электрода меняется со временем, особенно если он работает в агрессивных средах.
- Храните электрод в растворе KCl (обычно 3 М), а не в дистиллированной воде. Это продлит его жизнь и стабильность.
- При пайке используйте качественный флюс и промывайте плату после сборки. Остатки флюса создают паразитные токи на высокоомных участках схемы.
- Если показания «плывут» — проверьте питание. ADS1115 чувствителен к пульсациям VDD. Добавьте электролитический конденсатор 10 мкФ параллельно керамическому 100 нФ.
- Для повышения разрешения можно использовать усреднение в программной части: сделайте 16–32 отсчёта и усредните. Это даст дополнительные 2–3 бита эффективного разрешения.
Итог
Модуль измерения pH на основе ADS1115 — это практичное и доступное решение. Ключевые моменты: правильный усилитель-буфер с высоким входным сопротивлением, грамотный монтаж с короткими соединениями до усилителя, фильтр на входе АЦП и калибровка по двум точкам. Если вы выполните эти условия — получите стабильные показания с точностью, достаточной для большинства реальных задач.
Начните с готового модуля усилителя и ADS1115 — это самый быстрый способ получить результат. Когда разберётесь в работе, можно будет перейти к самостоятельной сборке и более тонкой настройке. Главное — не забывайте про калибровку и температурную компенсацию, именно они определяют реальную точность прибора.
