Датчик уровня воды: различия между версиями
м |
|||
| (не показана 1 промежуточная версия 1 участника) | |||
| Строка 22: | Строка 22: | ||
'''Пример кода''' | '''Пример кода''' | ||
[[Файл:Схема с датчиком уровня воды.png|мини|Схема с датчиком уровня воды]] | [[Файл:Схема с датчиком уровня воды.png|мини|Схема с датчиком уровня воды]] | ||
| − | Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), | + | Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствующий трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель - электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор. |
Для проекта нам понадобятся следующие детали: | Для проекта нам понадобятся следующие детали: | ||
| Строка 34: | Строка 34: | ||
Соберем схему. | Соберем схему. | ||
| − | + | // контакт подключения аналогового выхода датчика | |
| − | // | + | <code>int aPin=A0; |
| − | + | // контакт подключения вывода реле | |
| − | + | int soundPin=11; | |
| − | + | // частота звукового сигнала | |
| − | // | + | int freq[3]={587,466,293}; |
| − | + | // переменная для сохранения значения датчика | |
| − | + | int avalue=0; | |
| − | // | + | // значение уровней |
| − | + | int levels[3]={600,500,400}; | |
| − | + | // текущий уровень | |
| − | + | int level=0;</code> | |
| − | / | + | |
| − | void setup( | + | <code>void setup()</code> |
| − | { | + | <code>{ |
| − | + | // инициализация последовательного порта | |
| − | + | 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); | ||
| + | }</code> | ||
Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем: > 400 – минимальное погружение; > 500 – средний уровень погружения; > 600 – большое погружение. Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты: минимальное погружение – 293 Гц (нота ре 1 октавы); средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы); большое погружение – 587 Гц (нота ре 2 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится. | Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем: > 400 – минимальное погружение; > 500 – средний уровень погружения; > 600 – большое погружение. Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты: минимальное погружение – 293 Гц (нота ре 1 октавы); средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы); большое погружение – 587 Гц (нота ре 2 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится. | ||
Текущая версия на 01:03, 12 мая 2022
Датчик уровня воды предназначен для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку.
Конструкции датчиков уровня воды могут быть различными – поплавковые, погруженные, врезные. Данный датчик воды – погруженный. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами. Датчик имеет три контакта для подключения к контроллеру.
- + – питание датчика;
- - – земля;
- S - аналоговое значение.
На вывод S подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик имеет красный светодиод, сигнализирующих о наличие поступающего на датчик питания.
Технические характеристики
- Напряжение питания: 3.3-5 В;
- Ток потребления 20 мА;
- Выход: аналоговый;
- Зона обнаружения: 16×30 мм;
- Размеры: 62×20×8 мм;
- Рабочая температура: 10 – 30 °С.
Пример кода
Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствующий трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель - электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор.
Для проекта нам понадобятся следующие детали:
- Плата Arduino Uno
- Датчик уровня воды
- Динамик 8 Ом
- Резистор 500 Ом
- Транзистор КТ503е
- Соединительные провода
Соберем схему.
// контакт подключения аналогового выхода датчика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 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится.