Мы с соцсетях

Датчик влажности почвы

Датчик влажности почвы
Тип статьи:
Авторская

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

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

Этот модуль включает регулятор напряжения, который позволяет ему работать в диапазоне напряжений 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>