====== Датчик кислотности жидкости (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|Векторное изображение датчика]]