Датчик кислотности жидкости (pH-метр): инструкция, схемы и примеры использования
Используйте pH-сенсор для определения уровня кислотности жидкости. Сенсор поможет контролировать комфортную среду для выращивания растений, мониторить уютные условия для рыбок в аквариуме и приготовить настоящий квас.
Принцип работы
В состав pH-датчика входит измерительный щуп и плата управления.
Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает разность потенциалов, которое фиксирует и обрабатывает плата управления. А теперь немного подробнее.
Плата управления считывает разность потенциалов между электродами. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал стабилизируется и усиливается с помощью операционных усилителей. На выходе сигнал проходит фильтрацию и поступает на выходной сигнал платы.
Датчик измеряет водородный показатель рН (лат. _potentia Hydrogenii_) — мера кислотности, которая отражает концентрацию ионов водорода в жидкости. Различают три степени кислотности водных растворов:
- pH<7 — кислотная среда;
- pH=7 — нейтральная среда;
- pH>7 — щелочная среда.
Пример работы для Arduino и XOD
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Arduino Uno.
Схема устройства
- Подключите измерительный pH-щуп к плате обработки сигнала через BNC-разъём.
- Выберите один из вариантов коммуникации:
- Подключите датчик кислотности с щупом к аналоговому пину
A0
платформы Arduino. Для коммуникации понадобятся соединительные провода «мама-папа». - Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
- С Troyka Slot Shield провода не понадобятся вовсе.
Код для Arduino IDE
Прошейте платформу Arduino скетчем, приведённым ниже.
- troyka-ph-sensor-example-arduino-read-data.ino
// Определяем ядро платы Arduino // для установки рабочего напряжения и // коэффициента смещения нуля #if defined(__AVR__) #define OPERATING_VOLTAGE 5.0 #define ZERO_SHIFT 0 #else #define OPERATING_VOLTAGE 3.3 #define ZERO_SHIFT 1.1 #endif // Коэффициент перевода напряжения в концентрацию pH #define CALIBRATION_FACTOR 3.5 // Назначаем пин для подключения датчика constexpr auto pinSensor = A0; void setup() { // Открываем Serial-порт Serial.begin(9600); } void loop() { // Считываем аналоговое значение с датчика кислотности жидкости int adcSensor = analogRead(pinSensor); // Переводим данные сенсора в напряжение float voltageSensor = adcSensor * OPERATING_VOLTAGE / 1023; // Конвертируем напряжение в концентрацию pH float pHSensor = CALIBRATION_FACTOR * (voltageSensor + ZERO_SHIFT); // Выводим данные в Serial-порт Serial.print("Voltage: "); Serial.print(voltageSensor); Serial.print(" V"); Serial.print("\t"); Serial.print("Value: "); Serial.print(pHSensor); Serial.println(" pH"); delay(1000); }
После загрузки скетча, в Serial-порт будут выводиться текущие показания кислотности жидкости.
Пример для Espruino
В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например, Iskra JS.
Схема устройства
- Подключите измерительный pH-щуп к плате обработки сигнала.
- Выберите один из вариантов коммуникации:
- Подключите датчик кислотности жидкости к аналоговому пину
A0
платформы Iskra JS. Для коммуникации понадобятся соединительные провода «мама-папа». - Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
- С Troyka Slot Shield провода не понадобятся вовсе.
Исходный код
Прошейте платформу Iskra JS скриптом, приведённым ниже.
- troyka-ph-sensor-example-espruino-read-data.js
// Коэффициент смещения нуля var zeroShift = 1.1; // Коэффициент для вычисления pH var calibrationFactor = 3.5; // Назначаем пин для подключения датчика var pinSensor = A0; // Выводим показания датчика каждую секунду setInterval(function() { // Считываем аналоговое значение с датчика кислотности жидкости var adcSensor = analogRead(pinSensor); // Переводим данные сенсора в напряжение var voltageSensor = adcSensor * 3.3; // Конвертируем напряжение в концентрацию pH var pHSensor = (voltageSensor + zeroShift) * calibrationFactor; // Выводим данные в консоль print('Voltage:', voltageSensor.toFixed(2), 'V', 'Value:', pHSensor.toFixed(2), 'pH'); }, 1000);
После загрузки скрипта, в консоль будут выводиться текущие показания кислотности жидкости.
Пример для Raspberry Pi
В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например, Raspberry Pi 4.
Схема устройства
К сожалению, в компьютере Raspberry Pi нет встроеенного аналого-цифрового преобразователя. Используйте плату расширения Troyka Cap, которая добавит малине аналоговые пины.
- Подключите измерительный pH-щуп к плате обработки сигнала через BNC-разъём.
- Подключите датчик кислотности к Raspberry Pi через плату расширения Troyka Cap к пину
3
. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
Программная настройка
Исходный код
Запустите на малине скрипт, приведённый ниже.
- troyka-ph-sensor-example-raspberry-pi-read-data.py
# Библиотека для работы со временем и задержками import time # Библиотека для работы с расширителем портов GPIO Expander на плате Troyka Cap import gpioexp # Создаём объект для работы с расширителем портов exp = gpioexp.gpioexp() # Пин к которому подключён pH-датчик # Любой GPIO пин платы расширения Troyka Cap pinSensor = 3 # Коэффициент для вычисления pH calibrationFactor = 3.5 # Коэффициент смещения нуля zeroShift = 1.1 while True: # Считываем аналоговое значение с датчика кислотности жидкости adcSensor = exp.analogRead(pinSensor) # Переводим данные сенсора в напряжение voltageSensor = adcSensor * 3.3 # Конвертируем напряжение в концентрацию pH pHSensor = (voltageSensor + zeroShift) * calibrationFactor # Выводим показания датчика в консоль print('Voltage: ', voltageSensor, ' pH', 'Value: ', pHSensor, ' pH') # Ждём 1000 мс time.sleep(1)
После загрузки скрипта, в консоль малины будут выводиться текущие показания кислотности жидкости.
Элементы платы
Датчик кислотности жидкости состоит из измерительного pH-щупа и платы обработки сигнала.
Измерительные электроды
Для контакта с жидкостью на щупе сенсора расположены два электрода, которые необходимо опустить в измеряемую жидкость для считывания концентрации кислотности.
Разъём подключения pH-щупа
Измерительный щуп подключается к плате управления через BNC-разъём Female и Male соответственно.
ОУ для обработки сигнала
На плате расположена схема, которая усиливает электрохимическую разность потенциалов, создаваемую на щупе тестируемым электролитом. Ключевыми элементами схемы являются два операционных усилителя:
Регулятор напряжения
В схеме используется двухполярное питание с двумя плечами и общей точкой GND:
- положительное плечо Vcc: поступает от внешнего источника питания через контакт V. Диапазон рабочего напряжения от 3,3 до 5 вольт.
- отрицательное плечо -Vcc (Vss): поступает с выхода инвертирующего регулятора TPS60403. Входное напряжение на регулятор подаётся с положительного плеча Vcc и инвертируется преобразователем в -Vcc (Vss) с максимальным выходным током 60 мА.
Troyka-контакты
Датчик подключается к управляющей электронике через три провода.
- Сигнальный (S) — выходной сигнал сенсора. Подключите к аналоговому пину микроконтроллера. Напряжение на выходе датчика прямо пропорционально уровню pH. Диапазон выходного напряжения: 0–4 В при питании 5 В и 0–2,6 В при питании 3,3 В.
- Питание (V) — соедините с рабочим напряжением микроконтроллера.
- Земля (G) — соедините с землёй микроконтроллера.
Принципиальная и монтажная схемы
Габаритный чертёж
Плата обработки сигнала
Измерительный щуп
Характеристики
- Напряжение питания: 3,3–5 В
- Потребляемый ток: до 25 мА
- Интерфейс: аналоговый сигнал
- Диапазон выходного сигнала:
- При питании 5 В: 0–4 В
- При питании 3,3 В: 0–2,6 В
- Диапазон измерений: 0–14 pH
- Длина кабеля щупа: 0,9 м
- Габариты модуля: 25×25×39 мм
- Габариты щупа: 144×20×20 мм