Датчик кислотности жидкости (pH-метр): инструкция, схемы и примеры использования

Используйте pH-сенсор для определения уровня кислотности жидкости. Сенсор поможет контролировать комфортную среду для выращивания растений, мониторить уютные условия для рыбок в аквариуме и приготовить настоящий квас.

Принцип работы

В состав pH-датчика входит измерительный щуп и плата управления.

Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает разность потенциалов, которое фиксирует и обрабатывает плата управления. А теперь немного подробнее.

Плата управления считывает разность потенциалов между электродами. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал стабилизируется и усиливается с помощью операционных усилителей. На выходе сигнал проходит фильтрацию и поступает на выходной сигнал платы.

Датчик измеряет водородный показатель рН (лат. _potentia Hydrogenii_) — мера кислотности, которая отражает концентрацию ионов водорода в жидкости. Различают три степени кислотности водных растворов:

  • pH<7 — кислотная среда;
  • pH=7 — нейтральная среда;
  • pH>7 — щелочная среда.

Пример работы для Arduino и XOD

В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Arduino Uno.

Схема устройства

  1. Подключите измерительный pH-щуп к плате обработки сигнала через BNC-разъём.
  2. Выберите один из вариантов коммуникации:
    1. Подключите датчик кислотности с щупом к аналоговому пину A0 платформы Arduino. Для коммуникации понадобятся соединительные провода «мама-папа».
    2. Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
    3. С 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.

Схема устройства

  1. Подключите измерительный pH-щуп к плате обработки сигнала.
  2. Выберите один из вариантов коммуникации:
    1. Подключите датчик кислотности жидкости к аналоговому пину A0 платформы Iskra JS. Для коммуникации понадобятся соединительные провода «мама-папа».
    2. Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
    3. С 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, которая добавит малине аналоговые пины.

  1. Подключите измерительный pH-щуп к плате обработки сигнала через BNC-разъём.
  2. Подключите датчик кислотности к 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 соответственно.

ОУ для обработки сигнала

На плате расположена схема, которая усиливает электрохимическую разность потенциалов, создаваемую на щупе тестируемым электролитом. Ключевыми элементами схемы являются два операционных усилителя:

  • CA3140AMZ включен по схеме интегрирующего усилителя, для фиксирования сигнала на некотором интервале времени.
  • TL081BCD усиливает выходной сигнал для последующего считывания внешними контроллерами.

Регулятор напряжения

В схеме используется двухполярное питание с двумя плечами и общей точкой 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 мм

Ресурсы