====== Датчик кислотности жидкости (pH-метр): инструкция, схемы и примеры использования ====== Используйте [[amp>product/troyka-ph-sensor?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|pH-сенсор]] для определения уровня кислотности жидкости. Сенсор поможет контролировать комфортную среду для выращивания растений, мониторить уютные условия для рыбок в аквариуме и приготовить настоящий квас. {{ :products:troyka-ph-sensor:troyka-ph-sensor.1.jpg?nolink |}} ===== Принцип работы ===== В состав pH-датчика входит измерительный щуп и плата управления. {{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-probe.png?nolink |}} Щуп сенсора выполнен в пластиковом герметичном цилиндре с двумя электродами на конце. При погружении в измеряемый раствор или воду между электродами возникает разность потенциалов, которое фиксирует и обрабатывает плата управления. А теперь немного подробнее. Плата управления считывает разность потенциалов между электродами. При погружении в жидкость, между электродами возникает сопротивления, которое пропорционально электропроводности раствора. Далее сигнал стабилизируется и усиливается с помощью операционных усилителей. На выходе сигнал проходит фильтрацию и поступает на выходной сигнал платы. Датчик измеряет водородный показатель рН (лат. _potentia Hydrogenii_) — мера кислотности, которая отражает концентрацию ионов водорода в жидкости. Различают три степени кислотности водных растворов: * pH<7 — кислотная среда; * pH=7 — нейтральная среда; * pH>7 — щелочная среда. ===== Пример работы для Arduino и XOD ===== В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии [[amp>collection/arduino?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Arduino]], например, [[amp>product/arduino-uno?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Arduino Uno]]. * [[amp>page/arduino-ide?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Как начать работу с Arduino?]] * [[amp>page/xod-ide?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Как начать работу с XOD?]] ==== Схема устройства ==== - Подключите измерительный pH-щуп к плате обработки сигнала через BNC-разъём.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-probe.png?nolink |}} - Выберите один из вариантов коммуникации: - Подключите датчик кислотности с щупом к аналоговому пину ''A0'' платформы Arduino. Для коммуникации понадобятся [[amp>product/wire-fm?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|соединительные провода «мама-папа»]].{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-arduino.png?nolink |}} - Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Troyka Shield]], которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком. {{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-arduino-troyka-shield.png?nolink |}} - С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-arduino-troyka-slot-shield.png?nolink |}} ==== Код для Arduino IDE ==== Прошейте платформу 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 ===== В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии [[amp>collection/espruino?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Espruino]], например, [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Iskra JS]]. [[:js:ide|Как начать работу с Espruino?]] ==== Схема устройства ==== - Подключите измерительный pH-щуп к плате обработки сигнала.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-probe.png?nolink |}} - Выберите один из вариантов коммуникации: - Подключите датчик кислотности жидкости к аналоговому пину ''A0'' платформы Iskra JS. Для коммуникации понадобятся [[amp>product/wire-fm?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|соединительные провода «мама-папа»]].{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-espruino.png?nolink |}} - Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Troyka Shield]], которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-espruino-troyka-shield.png?nolink |}} - С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-espruino-troyka-slot-shield.png?nolink |}} ==== Исходный код ==== Прошейте платформу 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 ===== В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Raspberry Pi]], например, [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaigtroyka-ph-sensorn=sensor-soil-moisture-resistive&utm_medium=wiki|Raspberry Pi 4]]. [[articles:rpi-guide|Подготовь Raspberry Pi]] ==== Схема устройства ==== К сожалению, в компьютере Raspberry Pi нет встроеенного аналого-цифрового преобразователя. Используйте плату расширения [[amp>product/raspberry-troyka-cap?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Troyka Cap]], которая добавит малине аналоговые пины. - Подключите измерительный pH-щуп к плате обработки сигнала через BNC-разъём.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-probe.png?nolink |}} - Подключите датчик кислотности к Raspberry Pi через плату расширения [[amp>product/raspberry-troyka-cap?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Troyka Cap]] к пину ''3''. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-ph-sensor:troyka-ph-sensor-wiring-raspberry-pi-troyka-cap.png?nolink |}} ==== Программная настройка ==== - [[articles:rpi-guide|Подготовь Raspberry Pi]] - [[продукты:raspberry-troyka-cap|Настройте плату расширения Troyka Cap]] ==== Исходный код ==== Запустите на малине скрипт, приведённый ниже. # Библиотека для работы со временем и задержками 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-щупа и платы обработки сигнала. {{ :products:troyka-ph-sensor:troyka-ph-sensor-annotation.png?nolink |}} ==== Измерительные электроды ==== Для контакта с жидкостью на щупе сенсора расположены два электрода, которые необходимо опустить в измеряемую жидкость для считывания концентрации кислотности. ==== Разъём подключения pH-щупа ==== Измерительный щуп подключается к плате управления через BNC-разъём Female и Male соответственно. ==== ОУ для обработки сигнала ==== На плате расположена схема, которая усиливает электрохимическую разность потенциалов, создаваемую на щупе тестируемым электролитом. Ключевыми элементами схемы являются два операционных усилителя: * {{ :products:troyka-ph-sensor:ca3140amz-datasheet.pdf |CA3140AMZ}} включен по схеме интегрирующего усилителя, для фиксирования сигнала на некотором интервале времени. * {{ :products:troyka-ph-sensor:tl081bcd-datasheet.pdf |TL081BCD}} усиливает выходной сигнал для последующего считывания внешними контроллерами. ==== Регулятор напряжения ==== В схеме используется двухполярное питание с двумя плечами и общей точкой GND: * положительное плечо Vcc: поступает от внешнего источника питания через контакт V. Диапазон рабочего напряжения от 3,3 до 5 вольт. * отрицательное плечо -Vcc (Vss): поступает с выхода инвертирующего регулятора {{:products:troyka-ph-sensor:tps60403dbvr-datasheet.pdf |TPS60403}}. Входное напряжение на регулятор подаётся с положительного плеча Vcc и инвертируется преобразователем в -Vcc (Vss) с максимальным выходным током 60 мА. ==== Troyka-контакты ==== Датчик подключается к управляющей электронике через три провода. * Сигнальный (S) — выходной сигнал сенсора. Подключите к аналоговому пину микроконтроллера. Напряжение на выходе датчика прямо пропорционально уровню pH. Диапазон выходного напряжения: 0–4 В при питании 5 В и 0–2,6 В при питании 3,3 В. * Питание (V) — соедините с рабочим напряжением микроконтроллера. * Земля (G) — соедините с землёй микроконтроллера. ===== Принципиальная и монтажная схемы ===== {{:products:troyka-ph-sensor:troyka-ph-sensor-schematic.png?direct&510 |}} {{ :products:troyka-ph-sensor:troyka-ph-sensor-layout-top.png?direct&160|}} {{ :products:troyka-ph-sensor:troyka-ph-sensor-layout-bottom.png?direct&160|}} ===== Габаритный чертёж ===== ==== Плата обработки сигнала ==== [[this>_media/products:troyka-ph-sensor:troyka-ph-sensor-dimensions.pdf|{{:products:troyka-ph-sensor:troyka-ph-sensor-dimensions.png}}]] ==== Измерительный щуп ==== [[this>_media/products:troyka-ph-sensor:ph-probe-dimensions.pdf|{{:products:troyka-ph-sensor:ph-probe-dimensions.png}}]] ===== Характеристики ===== * Напряжение питания: 3,3–5 В * Потребляемый ток: до 25 мА * Интерфейс: аналоговый сигнал * Диапазон выходного сигнала: * При питании 5 В: 0–4 В * При питании 3,3 В: 0–2,6 В * Диапазон измерений: 0–14 pH * Длина кабеля щупа: 0,9 м * Габариты модуля: 25×25×39 мм * Габариты щупа: 144×20×20 мм ===== Ресурсы ===== * [[amp>product/troyka-ph-sensor?utm_source=man&utm_campaign=troyka-ph-sensor&utm_medium=wiki|Датчик кислотности жидкости]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/troyka-ph-sensor.svg|Векторное изображение датчика]]