Если вы ищете эту статью, значит, вам нужно измерять pH. Не просто «померить», а сделать это получше, чем дешевые китайские модули, которые часто врут или требуют вечной настройки. Вы, скорее всего, уже знаете основы электроники: умеете держать паяльник в руке, знаете, что такое макетная плата и что такое микроконтроллер (Arduino, ESP32 или STM32).
Проблема в том, что готовые модули часто содержат некачественные компоненты, а схемы из интернета могут быть размыты или содержать ошибки. Здесь я расскажу, как собрать этот модуль самостоятельно, используя ADS1115. Это не просто «соединяем провода», это про понимание того, как превратить невидимый химический сигнал в точные цифры.
Мы не будем уходить в сухую теорию электрохимии. Я объясню так, чтобы вы понимали, почему именно эти резисторы, почему именно эта схема и что делать, если показания прыгают. Это руководство для тех, кто хочет получить надежный инструмент, а не просто набор микросхем.
- Почему именно ADS1115 и не обычный АЦП?
- Что нам понадобится: список компонентов
- 1. Микросхема ADS1115
- 2. Операционный усилитель (ОУ)
- 3. Резисторы и конденсаторы
- 4. Разъем для электрода
- Схема подключения: сердце системы
- Схема на MCP6002 (Усилитель)
- Схема подключения ADS1115
- Сборка и пайка: практические советы
- Настройка и калибровка: где ошибка
- Формула перевода
- Процедура калибровки (обязательна!)
- Частые ошибки при сборке
- Сравнение вариантов реализации
- Сценарии выбора: что делать в вашей ситуации
- Как улучшить результат: рекомендации
- Итог: что делать дальше
Почему именно ADS1115 и не обычный АЦП?
Давайте сразу разберемся с главным вопросом: зачем усложнять жизнь и использовать внешний преобразователь, если у Arduino есть встроенный АЦП?
У встроенного аналого-цифрового преобразователя (АЦП) микроконтроллера есть существенный недостаток для задач pH — это разрядность и шум. Стандартный Arduino (ATmega328P) имеет 10-битный АЦП. Это значит, что он делит диапазон 0–5 вольт на 1024 шага. Один шаг (единица младшего разряда) равен примерно 4.88 мВ. В мире pH напряжение меняется очень тонко, и такая «лесенка» для него слишком грубая.
ADS1115 — это 16-битный АЦП с программируемым усилителем (PGA). Он делит тот же диапазон на 65 536 шагов. Но самое главное — у него есть встроенный усилитель. Это позволяет нам настроить входящий сигнал так, чтобы он занимал весь диапазон измерения АЦП, а не только его часть. Это дает нам в разы лучшее разрешение и точность.
Для pH-метра важно измерять напряжение с точностью до милливольт, а в идеале — до десятых долей милливоля, так как 1 единица pH соответствует изменению потенциала примерно на 59.16 мВ (при 25°C). Если ваш шаг измерения составляет 5 мВ, вы не сможете различить pH 6.9 от pH 7.0. ADS1115 решает эту проблему.
Что нам понадобится: список компонентов
Чтобы собрать качественный модуль, нам нужно не просто «купить что-то», а выбрать правильные детали. В электронике для измерений мелочей не бывает. Паразитные утечки или плохой контакт могут испортить всё.
1. Микросхема ADS1115
Лучше брать именно микросхему в корпусе SOT-23-6 или SOIC-8, чтобы спаять её самому на плату. Это даст вам контроль над качеством пайки. Если паять сложно, можно взять готовый модуль ADS1115, но тогда вы привяжете себя к размерам именно этого модуля и его трассировке. Для профессионального подхода лучше печатная плата (PCB).
2. Операционный усилитель (ОУ)
Здесь кроется главная ошибка новичков. Электрод pH генерирует очень высокое внутреннее сопротивление (часто сотни МОм) и крайне слабый ток. Обычный усилитель типа LM358 или LM741 просто «затянет» этот сигнал на землю своим входным током, и вы ничего не измерите.
Вам нужен ОУ с КМОП-входом или входом с изоляцией на полевых транзисторах (FET). Входной ток такого усилителя должен быть в пикоамперах или фемтоамперах.
Идеальные варианты: MCP6002 (двойной, дешевый, доступный), TL072 (хороший, но устаревший), OPA2134 (премиум). Для начала берите MCP6002 — он дешевый и отлично подходит для этих задач.
3. Резисторы и конденсаторы
Любые резисторы, кроме прецизионных, имеют допуск. Если вы берете резисторы с допуском 5% (обычно цветные полоски), вы вносите ошибку в калибровку. Используйте резисторы с допуском 1% (обычно коричневая полоска) и температурным коэффициентом 100 ppm или меньше.
Материал корпуса: SMD 0805 или 1206. Мелкие 0406 или 0201 лучше не ставить, если вы не хотите постоянно их сжигать или терять.
4. Разъем для электрода
Никогда не паяйте провод от pH-электрода напрямую к плате! Электроды — дорогие и хрупкие. Вам нужен качественный разъем. Стандарт для лабораторных pH-электродов — это BNC. Для бытовых или самодельных часто используют мини-джек 3.5 мм или специализированные 4-контактные разъемы (Glaser). Если вы делаете устройство на чашке, лучше использовать разъемы на винтовой колодке для подключения проводов от сенсора.
Схема подключения: сердце системы
Давайте разберем логику работы. Сигнал от электрода pH — это напряжение. Но оно не просто приходит к микроконтролеру. Ему нужно пройти через «усилитель». Почему? Потому что АЦП ADS1115 работает в диапазоне от 0 до 5В (или меньше), а сигнал от электрода может быть отрицательным (например, -414 мВ при pH 14) или положительным (около +414 мВ при pH 0).
Вам нужна схема, которая:
- Не нагружает электрод (высокое входное сопротивление).
- Смещает сигнал в положительную область (чтобы АЦП мог его прочитать, так как он не читает отрицательные напряжения от земли).
- Усиливает сигнал до нужного диапазона.
Схема на MCP6002 (Усилитель)
Мы будем использовать конфигурацию повторитель напряжения с смещением (Voltage Follower with Bias). Это самый надежный вариант.
Как это работает:
- Входной сигнал с электрода (через высокоомный резистор 10 МОм для защиты) приходит на неинвертирующий вход (+) ОУ. Поскольку входной ток ОУ ничтожно мал, он не «протянет» сигнал.
- Второй вход (инвертирующий, -) замыкается на выход. Это создает единичное усиление (1x). Мы просто копируем напряжение, но с огромной силой тока, достаточной для АЦП.
- Важный момент: ОУ MCP6002 работает от одного источника питания (например, 3.3В или 5В). Он не может выдать отрицательное напряжение. Поэтому нам нужно «поднять» землю (сигнальную точку) на половину напряжения питания (Vcc/2). Создаем искусственную нулевую точку.
Создание опорного напряжения (Vref / 2):
Берем два резистора по 10 кОм, соединяем их последовательно между +5В и землей (GND). Точка между ними будет иметь напряжение 2.5В. Эту точку нужно отфильтровать конденсатором 100 нФ на землю, чтобы убрать шум питания, и подать на неинвертирующий вход ОУ, если бы мы делали дифференциальное усиление. В нашем случае проще использовать дифференциальную схему или просто сместить уровень.
Для pH-метра часто используется простая схема:
1. На неинвертирующий вход (+) ОУ подаем сигнал от электрода.
2. На инвертирующий вход (-) ОУ подаем не землю, а наше опорное напряжение (Vref/2 = 2.5В).
3. Выход ОУ будет равен: Vout = Vin (от электрода) + 2.5В.
Если напряжение от электрода 0В (pH 7), выход будет 2.5В.
Если электрода -200мВ, выход будет 2.3В.
Если электрода +200мВ, выход будет 2.7В.
Все значения укладываются в диапазон 0–5В.
Схема подключения ADS1115
Теперь, когда у нас на выходе ОУ есть «поднятый» сигнал, подаем его на один из входов ADS1115. Лучше всего использовать дифференциальный вход AIN0 и AIN1.
- AIN0 — подключается к выходу ОУ.
- AIN1 — подключается к опорному напряжению (Vref/2, 2.5В).
- Тогда ADS1115 будет измерять разницу: (Vout_OU) — (2.5В). И мы снова получим чистый сигнал от электрода, но уже в цифровом виде.
Такой подход (дифференциальное измерение) убирает шумы питания и делает схему гораздо стабильнее, чем простые схемы с «землей».
Сборка и пайка: практические советы
Схема понятна, но реализация решает всё. Вот как сделать это руками, чтобы работало.
- Подготовка платы. Если вы рисуете свою PCB, разведите широкую дорожку земли (Ground Plane) под схемой. Это важно. Избегайте дорожек под пятаками компонентов, чтобы не было коротких замыканий. В районе входа ОУ (где подключается электрод) дорожки должны быть максимально короткими. Чем длиннее провод от электрода до схемы, тем больше помех он ловит. Идеально — если плата находится в том же корпусе, что и разъем.
- Пайка ADS1115. Если используете SMD микросхему, наносите канифольный флюс, ставьте микросхему пинцетом и прогревайте одну сторону, фиксируя её, затем вторую. Для 16-битного АЦП критично отсутствие «соплей» (микроскопических капель припоя) между выводами. Проверьте мультиметром на короткое замыкание перед подачей питания.
- Фильтрация. Рядом с каждым выводом питания микросхем (VCC) ставьте керамический конденсатор 100 нФ (0.1 мкФ) как можно ближе к ножкам. Это гасит высокочастотные помехи. Для входа ОУ (где сигнал от электрода) поставьте конденсатор 100 нФ относительно земли. Это сгладит резкие скачки.
- Разъем. Не жалейте места. Если используете BNC-разъем, паяйте его к плате на винты или через надежные переходники. Внутренний контакт BNC — это центр, внешний — экран. Экран обязательно соедините с землей платы. Это ваш щит от помех.
Настройка и калибровка: где ошибка
Спаяли? Отлично. Теперь самое важное — заставить это работать в коде. Сам по себе модуль не знает, что такое pH. Он выдает «сырые» значения (counts) из АЦП. Ваша задача — перевести их в pH.
Формула перевода
Вам нужно знать, какой коэффициент усиления (Gain) вы выбрали в ADS1115. Обычно это 2.048В или 4.096В.
Допустим, Gain = 2.048В. Шаг АЦП = 2.048 / 32768 ≈ 0.0000625 В (62.5 мкВ).
В коде (например, Arduino) вы получаете число от -32768 до +32767.
Напряжение = (RawValue * Gain) / 32768.
После получения напряжения нужно применить формулу Нернста (упрощенную):
pH = (V_measured - V_zero) / Slope
Где:
- V_measured — измеренное напряжение.
- V_zero — напряжение при pH 7 (обычно 0В, если схема сбалансирована, или смещение).
- Slope — чувствительность. Теоретически она равна -59.16 мВ на pH при 25°C. Но у реальных электродов она меньше (например, -55 мВ).
Процедура калибровки (обязательна!)
Не пытайтесь рассчитывать всё по формулам на бумаге. Электроды имеют индивидуальные отклонения. Вам нужны буферные растворы.
Что нужно:
- Раствор pH 7.00 (нейтральный).
- Раствор pH 4.01 (кислый) или pH 10.01 (щелочной).
Шаги калибровки:
- Опустите электрод в раствор pH 7. Подождите 2-3 минуты, пока показания стабилизируются. Запишите значение напряжения (или «сырые» данные АЦП). Это ваш «ноль» (Offset).
- Тщательно промойте электрод дистиллированной водой (иначе остаток pH 7 исказит следующее измерение!). Промокните салфеткой (не трите, электрод статичен!).
- Опустите в раствор pH 4. Запишите новое напряжение.
- Вычислите наклон (Slope): (Вольтаж pH4 — Вольтаж pH7) / (4 — 7). Это и есть ваш реальный коэффициент. Запишите его в код.
Если вы делаете устройство, которое будет использоваться в разных температурах, учтите, что чувствительность меняется. При 20°C наклон будет около -58 мВ, при 30°C — около -60 мВ. Если у вас нет датчика температуры, просто придерживайтесь комнатной температуры при калибровке.
Частые ошибки при сборке
Даже с правильными деталями можно ошибиться. Вот список того, что я видел у новичков:
- Использование «земли» как нуля. Если вы запитываете схему от 5В, но ОУ не может выдавать близко к нулю или к VCC (rail-to-rail), вы потеряете часть диапазона. MCP6002 — rail-to-rail, это хорошо. Но старые LM358 не подходят для точных измерений около нулевой точки.
- Отсутствие экрана. Провод от электрода — это антенна. Если вы не экранируете его (экран заземлен), вы будете ловить наводки от сети 50/60 Гц. Цифры будут прыгать на несколько единиц pH. Всегда используйте экранированный кабель.
- Загрязнение контактов. В месте пайки провода к разъему или к плате не должно быть флюса. Флюс — проводник, и в условиях высокой влажности он создаст утечку, искажающую измерения. После пайки тщательно промойте плату спиртом или очистителем.
- Плохой контакт электрода. Внутри стеклянного шарика электрода есть электролит. Если он высох или в нем есть воздушный пузырь, электрод работать не будет. Перед использованием всегда проверяйте, есть ли в шарике раствор.
- Питание от USB. USB-порты компьютеров часто «шумные». Если вы видите гул на показателях, попробуйте запитать устройство от внешнего стабилизированного блока питания или качественного Power Bank.
Сравнение вариантов реализации
Давайте посмотрим, что лучше выбрать в зависимости от вашей задачи. Не всегда нужно делать сложную схему.
| Вариант | Сложность | Точность | Цена | Для чего подходит |
|---|---|---|---|---|
| Готовый модуль (например, Gravity) | Низкая | Средняя | $ | Хобби, обучение, бытовые проекты, где нужна точность до 0.1 pH. |
| ADS1115 + MCP6002 (Самодельный) | Средняя | Высокая | $$ | Лабораторные эксперименты, контроль качества, промышленные прототипы. |
| Специализированные ИС (LMP91000) | Высокая | Очень высокая | $$$ | Промышленные устройства, где нужна стабильность годами. |
Сценарии выбора: что делать в вашей ситуации
Сценарий 1: «Хочу просто для интереса, чтобы мигать лампочкой»
Не усложняйте. Купите готовый модуль для pH на базе LM393 (или аналогичный дешевый). Он уже настроен. Подключите к Arduino. Это сэкономит вам 5 часов времени на пайку и отладку.
Сценарий 2: «Нужен точный датчик для аквариума или гидропоники»
Здесь важна стабильность. Дешевые модули часто «плывут» со временем. Сделайте самостоятельно на ADS1115. Выберите MCP6002. Обязательно добавьте фильтр в коде (усреднение 100-200 замеров). Это сгладит шум и даст плавную линию.
Сценарий 3: «Нужен промышленный контроллер»
Вам нужно думать о защите. Добавьте оптоизоляцию. Сделайте плату в корпусе с защитой от влаги (герметик). Выбирайте микросхемы с широким рабочим диапазоном температур. ADS1115 здесь — отличный выбор, так как он цифровой (I2C) и меньше подвержен помехам по линии передачи данных.
Как улучшить результат: рекомендации
Если вы хотите, чтобы ваш прибор работал как часы, учтите следующее:
- Усреднение данных. ADS1115 позволяет менять скорость измерений. Если поставить низкую скорость (Data Rate), шум снизится, но результат будет обновляться медленнее. Для pH-метра это нормально — химические реакции идут медленно. Используйте режим 8 SPS (замеров в секунду) или 16 SPS.
- Температурная компенсация. Если вы хотите максимальной точности, добавьте датчик температуры (например, DS18B20 или термистор). В формулу pH нужно будет подставлять текущую температуру. Без этого вы будете иметь погрешность до 0.03 pH на каждый градус отклонения от 25°C.
- Обслуживание. Ваш электрод — это расходник. Он живет от 6 месяцев до 2 лет. Храните его в специальном растворе (обычно 3M KCl). Никогда не храните в дистиллированной воде — это убьет электрод.
Итог: что делать дальше
Сборка модуля pH на ADS1115 — это отличный проект, который сочетает в себе электронику, химию и программирование. Вы получаете инструмент, который реально работает, а не просто имитирует функцию.
Ваш план действий:
- Соберите список деталей (ADS1115, MCP6002, резисторы 1%, конденсаторы, разъем).
- Нарисуйте или распечатайте схему. Проверьте, что вход ОУ подключен к плюсу, а не к минусу.
- Соберите макет на breadboard. Протестируйте работу с мультиметром (измеряйте напряжение на выходе ОУ).
- Купите буферные растворы pH 4 и pH 7. Без них прибор бесполезен.
- Напишите код, который считывает данные через I2C и выводит их в Serial Monitor.
- Спаяйте всё на плату, покройте лаком (конформным покрытием) и запустите в работу.
Не бойтесь, если в первый раз цифры будут прыгать. Это нормально. Настройка — это процесс. Главное, что у вас есть контроль над каждым элементом цепи.
Важное предупреждение: Данная информация носит ознакомительный и образовательный характер. Сборка и использование электронных устройств для измерения pH требуют соблюдения правил техники безопасности. Работайте с химическими реактивами (буферные растворы) аккуратно, используйте защитные перчатки и очки. Калибровка и точность измерений зависят от качества компонентов и условий эксплуатации. Автор не несет ответственности за ущерб, нанесенный оборудованию или здоровью при использовании информации из этой статьи.
