Датчик уровня воды

Материал из MIK32 микроконтроллер
Датчик уровня воды

Датчик уровня воды предназначен для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку.

Конструкции датчиков уровня воды могут быть различными – поплавковые, погруженные, врезные. Данный датчик воды – погруженный. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами. Датчик имеет три контакта для подключения к контроллеру.

  • + – питание датчика;
  • - – земля;
  • S - аналоговое значение.

На вывод S подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик имеет красный светодиод, сигнализирующих о наличие поступающего на датчик питания.


Технические характеристики

  • Напряжение питания: 3.3-5 В;
  • Ток потребления 20 мА;
  • Выход: аналоговый;
  • Зона обнаружения: 16×30 мм;
  • Размеры: 62×20×8 мм;
  • Рабочая температура: 10 – 30 °С.

Пример кода

Схема с датчиком уровня воды

Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствуюший трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель -  электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор.

Для проекта нам понадобятся следующие детали:

  • Плата Arduino Uno
  • Датчик уровня воды
  • Динамик 8 Ом
  • Резистор 500 Ом
  • Транзистор КТ503е
  • Соединительные провода

Соберем схему.

// Подключаем необходимые библиотеки
  1. include <OneWire.h>
  2. include <DallasTemperature.h>

// Шину данных подключаем к выводу №2 Arduino

  1. define ONE_WIRE_BUS 2

// Создаём экземпляр класса для нашей шины и ссылку на него OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire);

// ФУНКЦИЯ ПРЕДУСТАНОВОК void setup(void) {

 Serial.begin(9600); // Инициализация серийного порта
 sensors.begin(); // Инициализация шины

}

// ОСНОВНОЙ ЦИКЛ void loop(void) { Serial.print("Reading Temperature..."); // Подаём команду на чтение sensors.requestTemperatures(); Serial.println("Read"); Serial.print("Sensor Temperature 1: "); // Отображаем значение температуры Serial.print(sensors.getTempCByIndex(0)); }

Аналоговый вывод датчика подключен к аналоговому входу Arduino,  который представляет собой  аналого-цифровой преобразователь (АЦП) с разрешением  10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем: > 400 – минимальное погружение; > 500 – средний уровень погружения; > 600 – большое погружение. Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты: минимальное погружение – 293 Гц (нота ре 1 октавы); средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы); большое погружение – 587 Гц (нота ре 2 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится.