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

Содержание:


Обзор датчика уровня воды

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

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

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

Датчик имеет три контакта для подключения к контроллеру.

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

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

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


Технические характеристики модуля

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

Пример использования

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

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

Соберем схему, показанную на рисунке

waterlevelsensor-arduino

Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки

//  Датчик уровня воды
//  http://makerplus.ru

// контакт подключения аналогового выхода датчика
int aPin=A0;
// контакт  подключения вывода реле
int soundPin=11;
// частота звукового сигнала
int freq[3]={587,466,293};
// переменная для сохранения значения датчика
int avalue=0;
// значение уровней
int levels[3]={600,500,400};
// текущий уровень
int level=0;

void setup()
{
// инициализация последовательного порта
Serial.begin(9600);
// настройка выводов индикации светодиодов
// в режим OUTPUT
pinMode(soundPin,OUTPUT);
}

void loop()
{
// получение значения с аналогового вывода датчика
avalue=analogRead(aPin);
// вывод значения в монитор последовательного порта Arduino
Serial.print("avalue=");Serial.println(avalue);
// вывод звука различной частоты для разных уровней погружения
if(avalue>levels[0])
tone(soundPin,freq[0],2000);
else if(avalue>levels[1])
tone(soundPin,freq[1],2000);
else if(avalue>levels[2])
tone(soundPin,freq[2],2000);
else
noTone(soundPin);
// пауза перед следующим получением значения 1000 мс
delay(1000);
}

Аналоговый вывод датчика подключен к аналоговому входу Arduino,  который представляет собой  аналого-цифровой преобразователь (АЦП) с разрешением  10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем:

> 400 – минимальное погружение;

> 500 – средний уровень погружения;

> 600 – большое погружение.

Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты:

минимальное погружение – 293 Гц (нота ре 1 октавы);

средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы);

большое погружение – 587 Гц (нота ре 2 октавы).

При отсутствии погружения звуковой сигнал на динамике не воспроизводится.


Часто задаваемые вопросы FAQ

  • Не горит светодиод питания

Проверьте наличие и полярность подаваемого на датчик питания (3,3 – 5 В);

  • При погружении в воду не изменяется значение выходного аналогового сигнала

Проверьте соединение датчика с входом Arduino.

Проверьте наличие и полярность подаваемого на датчик питания (3,3 – 5 В);