====== Ёмкостный датчик уровня жидкости: подключение, примеры работы ====== [[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|Векторное изображение сенсора]]