Используйте pH-сенсор для определения уровня кислотности жидкости. Сенсор поможет контролировать комфортную среду для выращивания растений, мониторить уютные условия для рыбок в аквариуме и приготовить настоящий квас.
В состав pH-датчика входит измерительный щуп и плата управления.
Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает разность потенциалов, которое фиксирует и обрабатывает плата управления. А теперь немного подробнее.
Плата управления считывает разность потенциалов между электродами. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал стабилизируется и усиливается с помощью операционных усилителей. На выходе сигнал проходит фильтрацию и поступает на выходной сигнал платы.
Датчик измеряет водородный показатель рН (лат. _potentia Hydrogenii_) — мера кислотности, которая отражает концентрацию ионов водорода в жидкости. Различают три степени кислотности водных растворов:
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Arduino Uno.
A0
платформы Arduino. Для коммуникации понадобятся соединительные провода «мама-папа».Прошейте платформу Arduino скетчем, приведённым ниже.
// Определяем ядро платы 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, например, Iskra JS.
A0
платформы Iskra JS. Для коммуникации понадобятся соединительные провода «мама-папа».Прошейте платформу Iskra 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 4.
К сожалению, в компьютере Raspberry Pi нет встроеенного аналого-цифрового преобразователя. Используйте плату расширения Troyka Cap, которая добавит малине аналоговые пины.
3
. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.Запустите на малине скрипт, приведённый ниже.
# Библиотека для работы со временем и задержками 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-щупа и платы обработки сигнала.
Для контакта с жидкостью на щупе сенсора расположены два электрода, которые необходимо опустить в измеряемую жидкость для считывания концентрации кислотности.
Измерительный щуп подключается к плате управления через BNC-разъём Female и Male соответственно.
На плате расположена схема, которая усиливает электрохимическую разность потенциалов, создаваемую на щупе тестируемым электролитом. Ключевыми элементами схемы являются два операционных усилителя:
В схеме используется двухполярное питание с двумя плечами и общей точкой GND:
Датчик подключается к управляющей электронике через три провода.