Датчик уровня воды: различия между версиями
(Новая страница: «мини|Датчик уровня воды '''Датчик уровня воды''' предназначен...») |
м |
||
| Строка 35: | Строка 35: | ||
Соберем схему. | Соберем схему. | ||
| + | // Подключаем необходимые библиотеки | ||
| + | #include <OneWire.h> | ||
| + | #include <DallasTemperature.h> | ||
| + | // Шину данных подключаем к выводу №2 Arduino | ||
| + | #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 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится. | Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем: > 400 – минимальное погружение; > 500 – средний уровень погружения; > 600 – большое погружение. Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты: минимальное погружение – 293 Гц (нота ре 1 октавы); средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы); большое погружение – 587 Гц (нота ре 2 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится. | ||
Версия 22:34, 31 мая 2021
Датчик уровня воды предназначен для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку.
Конструкции датчиков уровня воды могут быть различными – поплавковые, погруженные, врезные. Данный датчик воды – погруженный. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами. Датчик имеет три контакта для подключения к контроллеру.
- + – питание датчика;
- - – земля;
- S - аналоговое значение.
На вывод S подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик имеет красный светодиод, сигнализирующих о наличие поступающего на датчик питания.
Технические характеристики
- Напряжение питания: 3.3-5 В;
- Ток потребления 20 мА;
- Выход: аналоговый;
- Зона обнаружения: 16×30 мм;
- Размеры: 62×20×8 мм;
- Рабочая температура: 10 – 30 °С.
Пример кода
Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствуюший трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель - электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор.
Для проекта нам понадобятся следующие детали:
- Плата Arduino Uno
- Датчик уровня воды
- Динамик 8 Ом
- Резистор 500 Ом
- Транзистор КТ503е
- Соединительные провода
Соберем схему.
// Подключаем необходимые библиотеки
- include <OneWire.h>
- include <DallasTemperature.h>
// Шину данных подключаем к выводу №2 Arduino
- 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 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится.