Как собрать и спаять модуль измерения pH на основе ADS1115

Если вы дошли до этой статьи, значит, вам нужно цифровое значение 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-усилитель на плате), то пайка — это просто соединение проводами. Но если вы собираете всё на одной плате, вот порядок действий:

  1. Припаяйте ADS1115 к плате. Если это модуль — припаяйте шпильки или провода к контактам VDD, GND, SCL, SDA, ADDR.
  2. Обвязка по питанию: конденсатор 100 нФ между VDD и GND максимально близко к микросхеме. Это обязательно — без него будут скачки на каждом отсчёте.
  3. Подтяжки шины I2C: резисторы 4,7 кОм от SDA к VDD и от SCL к VDD. На многих модулях они уже стоят — проверьте.
  4. Усилитель для pH: если это самодельная схема на ОУ, разместите его как можно ближе к разъёму BNC. Длинные провода от электрода к усилителю — это источник помех и паразитных токов. Идеально — вынести усилитель на отдельную плату прямо на BNC-разъём.
  5. RC-фильтр на выходе усилителя: резистор последовательно с сигналом, конденсатор от сигнала к земле после резистора. Разместите его перед входом ADS1115.
  6. Соедините выход фильтра с A0 ADS1115.
  7. Земля электрода (если есть отдельный провод экранировки) подключите к общей земле, но точка подключения должна быть одна — чтобы не было контуров земли.

Важный момент: 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 — это самый быстрый способ получить результат. Когда разберётесь в работе, можно будет перейти к самостоятельной сборке и более тонкой настройке. Главное — не забывайте про калибровку и температурную компенсацию, именно они определяют реальную точность прибора.

Radio-Blog.ru