Суббота, 14.06.2025
Завод горного оборудования
Меню сайта
Google_Translate
Категории раздела
Мои статьи [126]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Рейтинг@Mail.ru

Яндекс.Метрика
Главная » Статьи » Мои статьи

Датчик протечки на Arduino со звуковым сигналом

В качестве датчика протечки использовал дешевый китайский датчик water sensor Funduino. Он видимо проектировался для установки в вертикальном положении с подключением сверху. Для установки на полу переделал датчик. Выпаял трехконтактный штырьковый разъем. Вместо него отпилил и впаял трехконтактную ответную часть для штырькового разъема. Разъем припаял со стороны, противоположной контактным полоскам датчика. Промазал клеем из термопистолета вокруг стыка разъема и платы датчика. Для защиты от воды детали схемы также залиты термоклеем из клеевого пистолета. Использовал прозрачный пруток клея, чтобы было видно светодиод индикации питания. Толщину слоя заливки сделал примерно 3 мм для облегчения доступа воды к контактным полоскам.

Устройство можно собрать на Arduino Uno или Arduino Nano. На фото показан макет устройства, собранный на Arduino Nano.

Схема конструкции проста. Динамик подключен к Arduino через электролитический конденсатор 100 мкФ. Плюсовой вывод конденсатора подключите к выводу D9, Минусовой вывод подпаяйте к выводу динамика. Второй вывод динамика подключите к контакту GND Arduino. Вывод S (Сигнал) датчика протечки подключите к контакту A0 Arduino. Контакты + и — датчика подключены соответственно к контактам 5V и GND. Динамик поставил 0,5ГДШ-2 сопротивлением 8 Ом. Можно использовать любой небольшой 8-Омный динамик мощностью 0,5 - 1 Вт.

Скетч Water_Sensor
==================

int water; // присваиваем имя для значений датчика с аналогового входа A0

const int speakerPin = 9;    // подключим динамик к пину 9

void setup()
{

  pinMode(A0, INPUT);   // к входу A0 подключим датчик протечки
  Serial.begin(9600);   // подключаем монитор порта
}

void loop()
{
  int duration = 250;  // длительность звучания
  int frequency = 3000;   // частота звука
  water = analogRead(A0); // переменная "water" находится в интервале от 0 до 1023
  if (water > 100) {
    tone(speakerPin, frequency, duration);  // включаем звук, если значение > 100
  }

  Serial.println(water); // выводим значение датчика на монитор
  delay(1000);           // задержка в одну секунду

}

При считывании сигнала с датчика протечки переменная  water принимает значения от 0 до 1023. Сухому датчику соответствует значение 0 или близкое к нему. При значении больше 100 включается звук на четверть секунды. Звук будет повторяться каждую секунду, если значение остается больше 100.
Динамик, подключенный через конденсатор, дает не очень громкий звук. Для увеличения громкости можно добавить каскад на транзисторе.

Макет устройства с транзисторным каскадом
 

Отсоедините конденсатор от платы и отпаяйте от вывода динамика. К выводу D9 подключите резистор 510 Ом - 1 КОм. Второй конец резистора подключите к базе n-p-n транзистора. Возьмите n-p-n транзистор средней мощности с постоянным током коллектора 1 - 1,5 А. Подойдут транзисторы КТ815, КТ972 или импортные BD167, BD815, BC639, BD137 и другие n-p-n транзисторы с током коллектора до 1,5 А. Я поставил BD137. Вывод динамика подключите к коллектору транзистора. Второй вывод динамика подключите к 5V. Эмиттер транзистора соедините с GND.

Устройство в режиме ожидания потребляет ток ~ 15 мА, при срабатывании датчика ток ~ 250 мА при напряжении питания 5 В. Обычно Arduino запитывается от бестрансформаторного блока питания, который втыкается в розетку сети. Такие блоки питания не имеют гальванической развязки с сетью, т.е. устройство находится под напряжением сети. Питать устройство с датчиком протечки от такого блока питания опасно. Для безопасной работы устройство надо запитать от аккумулятора. Если это Arduino Uno, то аккумулятор 7 - 12 В можно подключить к разъему внешнего питания. Для увеличения громкости вывод динамика вместо 5V лучше подключить к плюсу аккумулятора. Аккумулятор должен обеспечивать ток нагрузки не менее 0,5 - 1 А.

Устройство нужно расположить в недоступном для воды месте в стороне от датчика. Провода, идущие к датчику и сам разъем заключите в термоусадочную трубку. 
Чтобы датчик не упал на бок, прижмите планку датчика к полу небольшим, но увесистым грузом на расстоянии примерно 5 мм от края, как показано на фото.

Использованные ресурсы

1. https://ampermarket.kz/base/ex29-water-level-sensor/?ysclid=m8qh7edb6e578794945
2. https://2150692.ru/faq/18-wiki/80-kak-podklyuchit-k-arduino-8-omnyj-dinamik
3. Марголис, М. Arduino. Большая книга рецептов. - 3-е изд. - СПб.: БХВ-Петербурr, 2021 стр. 447-448
4. https://seaforum.aqualogo.ru/profile/972-svyaz/content/page/3/?type=forums_topic_post
5. https://www.radiolibrary.ru/reference/transistor-imp/bd137.html

Категория: Мои статьи | Добавил: zgo (04.04.2025)
Просмотров: 50 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Сайт завода zgo.ucoz.ru
  • Забайкальский край
    Дарасун
    Яндекс.Погода


    Хостинг Ucoz опять навязал видеорекламу, но обещает - "мы настроили систему так, чтобы в сутки на уникального посетителя приходилось не более двух показов."
    Совет, как не смотреть видеорекламу.

    Или используйте Uran - браузер от Ucoz без рекламы Скачать

    или подключите к браузеру блокировщик рекламы, например, Adblock Plus или uBlock Origin

    Универсальный декодер кириллицы



    Защита, контроль, управление.



    DONATE (поддержи автора)
    Все статьи авторские, при использовании прошу ссылаться на сайт
    Copyright Дарасунский завод горного оборудования © 2004 - 2025
    Бесплатный конструктор сайтовuCoz