====== Ёмкостный датчик уровня жидкости: подключение, примеры работы ======
[[amp>product/sensor-liquid-level-contactless?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Бесконтактный датчик уровня жидкости XKC-Y25-V]] зафиксирует наличие водного раствора сквозь преграды и стены.
{{ :products:sensor-liquid-level-contactless:sensor-liquid-level-contactless.5.jpg?nolink&500 |}}
Датчик не будет работать с металлическими препятствиями.
===== Примеры работы ======
Для теста сенсора воспользуйтесь стаканом или кружкой. Наполните ёмкость наполовину водой и перемещайте сенсор в области ватерлинии. Для питания и обработки результатов понадобится [[amp>collection/controllers?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|контроллер]].
==== Пример для Arduino ====
Подключите датчик уровня воды к [[amp>product/arduino-uno?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Arduino Uno]] через [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Troyka Shield]] к ''4'' цифровому пину.
=== Схема устройства ===
{{ :products:sensor-liquid-level-contactless:sensor-liquid-level-contactless_arduino_troyka-shield.png?nolink |}}
=== Код программы ===
// пин бесконтакного датчика уровня жидкости
#define LIQIID_SENSOR_PIN 4
void setup()
{
// открываем монитор Serial-порта
Serial.begin(9600);
// настраиваем пин в режим входа
pinMode(LIQIID_SENSOR_PIN, INPUT);
}
void loop()
{
// считываем состояние пина
int motionState = digitalRead(LIQIID_SENSOR_PIN);
// выводим данные в Serial-порт
Serial.println(motionState);
delay(100);
}
После прошивки платы, откройте монитор Serial порта. Если уровень жидкости будет выше сенсора — вы увидите бегущие единицы, а как уровень воды снизится ниже датчика — единицы сменятся на нули.
==== Пример для Iskra JS ====
Скоммутируем датчик к [[amp>product/iskra-js?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Iskra JS]] через [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Troyka Shield]] к ''4'' цифровому пину.
=== Схема устройства ===
{{ :products:sensor-liquid-level-contactless:sensor-liquid-level-contactless_iskra_troyka-shield.png?nolink |}}
=== Код программы ===
Зафиксируем изменение уровня жидкости с помощью Espruino и языка JavaScript.
// наблюдаем за датчиком уровня жидкости
setWatch(function() {
// если сработало изменение на пине датчика
// считываем состояние сенсора
var state = digitalRead(P7);
// выводим в консоль текущие состояние
if (state) {
print("Water is Yes");
} else {
print("Water is Not");
}
}, P7, {
// функция вызывается многократно
repeat: true,
// фиксация восходящего фронта
edge: "both"
});
В результате вы увидите сообщение в консоле, при изменении уровня воды вблизи видимости датчика.
==== Пример для Raspberry Pi ====
Произведите мониторинг уровня воды микрокомпьютером [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Raspberry Pi]]. Подключите сенсор движения к ''4'' пину малины. Чтобы обойтись без макеток и проводов, используйте плату расширения [[amp>product/raspberry-pi-troyka-hat?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Troyka HAT]].
=== Схема устройства ===
{{ :products:sensor-liquid-level-contactless:sensor-liquid-level-contactless_rpi.png?nolink |}}
=== Код программы ===
# библиотека для работы с методами языка Wiring (Arduino)
import wiringpi as wp
# инициализация WiringPi
wp.wiringPiSetup()
# пин 4 в режим входа
wp.pinMode(4, 0)
while (True):
# считываем состояние с датчика уровня воды
motionState = wp.digitalRead(4)
# печатаем результат в консоль
print(motionState);
# ждём 100 мс
wp.delay(100)
После запуска скрипта вы увидите текущие показатели сенсора. Пока уровень воды находится выше датчика — в консоле выводятся единицы, при опускании уровня ниже сенсора — нули.
===== Элементы платы =====
{{ :products:sensor-liquid-level-contactless:sensor-liquid-level-contactless_annotation.png?nolink |}}
==== Световой индикатор ====
Информационный светодиод о детектировании жидкости: при наличии воды в зоне поиска сенсора — светодиод горит, при отсутствии — не горит. Светодиод дублирует выходной сигнал сенсора.
==== Регулировка чувствительности ====
Откройте заднюю крышку сенсора.
{{ :products:sensor-liquid-level-contactless:sensor-liquid-level-contactless-without-cap.gif?nolink |}}
Под защитным колпачком находится многооборотный потенциометр регулировки чувствительности сенсора. При вращении винта по часовой стрелке чувствительность датчика уменьшается, а против часовой — увеличивается.
Для регулировки используйте маленькую плоскую отвёртку, которую можно найти в [[amp>product/screw-kit?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|«Наборе отвёрток»]].
==== Разъём подключения ====
Сенсор подключается к управляющей плате через встроенный кабель. На конце провода расположен разъём в формфакторе Troyka-контактов:
* Жёлтый (S) — цифровой выход сенсора. Используется для передачи текущего состояния модуля. При детектировании воды на датчике высокий уровень сигнала, при отсутствии — низкий. Подключите к цифровому пину микроконтроллера.
* Чёрный/Коричневый (V) — соедините с рабочим напряжением микроконтроллера.
* Синий (G) — соедините с землёй микроконтроллера.
===== Характеристики =====
* Модуль датчика: XKC-Y25-V
* Интерфейс: бинарный цифровой сигнал
* Диапазон толщины/чувствительность индукции: 0–20 мм
* Напряжение питания: 3,3–5 В
* Потребляемый ток: до 5 мА
* Время отклика: 500 мс
* Класс защиты: IP67
* Длина кабеля: 50 см
* Габариты: 28×28 мм
===== Ресурсы =====
* [[amp>product/sensor-liquid-level-contactless?utm_source=man&utm_campaign=sensor-liquid-level-contactless&utm_medium=wiki|Бесконтактный датчик уровня жидкости XKC-Y25-V]] в магазине
* [[https://github.com/amperka/hardware-drawings/blob/master/sensor-liquid-level-contactless.svg|Векторное изображение сенсора]]