Датчик влажности почвы
Емкостной датчик влажности почвы, который идеально подойдет для систем автополива растений, наблюдений изменения влажности почвы, системы сигнализации о протечке грунтового трубопровода и замеров уровня жидкости. Датчик основан на технологии шунтирования высокой частоты. В отличии от традиционного датчика влажности этот датчик не подвержен коррозии.
Этот модуль включает регулятор напряжения, который позволяет ему работать в диапазоне напряжений 3,3 — 5,5 В.
Подробно о датчике и способах подключения можно прочитать здесь
Вкратце, работу с датчиков можно описать следующим образом. Сигнальный выход датчика подключаем к АЦП ардуино (пин А0).
В зависимости от влажности и датчика АЦП передаст значения от 0 до 1023. Для перевода значения в процент влажности используется функция map().
Описание функции map():
Синтаксис: map (ПЕРЕМЕННАЯ, НАЧАЛЬНОЕ НИЖНЕЕ ЗНАЧЕНИЕ, НАЧАЛЬНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ, КОНЕЧНОЕ НИЖНЕЕ ЗНАЧЕНИЕ, КОНЕЧНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ);
- ПЕРЕМЕННАЯ — переменная или функция, возвращающая значение int;
- НАЧАЛЬНОЕ НИЖНЕЕ ЗНАЧЕНИЕ — начальное значение входного диапазона для конвертирования.
- НАЧАЛЬНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ — конечное значение входного диапазона.
- КОНЕЧНОЕ НИЖНЕЕ ЗНАЧЕНИЕ — начальное значение выходного диапазона
- КОНЕЧНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ — конечное значение выходного диапазона
Для калибровки датчика необходимо записать минимальное и максимальное значение на воздухе и в воде.
Скетч будет следующим
#define SENSOR A0 // Определяем номер аналогового входа, к которому подключен датчик влажности почвы. // Датчик инверсный: больше влажность - меньше значение. #define MIN 630 // Определяем минимальное показание датчика (в воздухе), #define MAX 330 // определяем максимальное показание датчика (в воде), uint16_t sensor; // создаем переменную для хранения адаптированных показаний, void setup(){ Serial.begin(9600); // Инициируем передачу данных по последовательному порту на скорости 9600 бот. } void loop(){ sensor = analogRead(SENSOR); // Читаем сырые данные с датчика, sensor = map(sensor, MIN, MAX, 0, 100); // адаптируем значения от 0 до 100, Serial.println(sensor); // выводим текущую влажность почвы из датчика в последовательный порт, delay(500); // приостанавливаем выполнение программы на 0.5 секунд. }<br>