Использование датчика влажности почвы YL-100

  • 23-Discord-3184
  • 0 Comments

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

Прежде всего стоит отметить, что этот YL-100 является аналогом датчика SparkFun Soil Moisture Sensor (вот здесь его исходные материалы, инструкции, 3D модели). YL-100 отличается от оригинального SparkFun, наверное, только порядком расположения контактов. Обычно cенсор YL-100 продается с таким описанием: “3Pin Soil Hygrometer Detection Module Moisture Sensor Analog Output Arduino”.

Для работы датчика требуется напряжение на контакты VCC и GND. Значение с контакта OUT будет зависеть от вольтажа питания (рекомендуется от 3.3 до 5 вольт). Ниже будет описана схема подключения и скетч для Arduino, когда напряжение на датчик будет подаваться на 10 миллисекунд, только в момент получения показаний — такая схема позволит защитить щуп от преждевременного окисления. При постоянном поступлении питания на датчик — щуп достаточно быстро начнет подвергаться коррозии.

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

Это схема подключения датчика YL-100 к Arduino Uno с подачей питания по требованию:

А это соответствующий скетч для Arduino IDE, подключения каких-либо сторонних библиотек не требуется:

/*
* YL-100 sensor Example
* Based on "Soil Mositure Basic Example" by SparkFun Electronics, Joel Bartlett
* Released under the MIT License(http://opensource.org/licenses/MIT)
*/
int mositure = 0; // Значение для сохранения значения влажности
int YL100OUT = A0; // Переменная для номера аналогового пина, к которому подключен датчик
int YL100VCC = 2; // Переменная номера пина для питания датчика
void setup()
{
Serial.begin(9600); // Открытие последовательной шины через USB
pinMode(YL100VCC, OUTPUT); // Установка пина питания на выход
digitalWrite(YL100VCC, LOW); // Установка уровня питания на LOW после включения
}
void loop()
{
Serial.print("Soil moisture = "); // Печать префикса строки вывода
Serial.println(readYL100()); // Получение значения влажности из функции и его печать
delay(5000); // Задержка в 5 секунд перед следующим получением данных
}
int readYL100() // Функция чтения данных из датчика
{
digitalWrite(YL100VCC, HIGH); // Включение питания датчика
delay(10); // Задержка в 10 миллисекунд
mositure = analogRead(YL100OUT); // Чтение значения с пина OUT датчика
digitalWrite(YL100VCC, LOW); // Выключение питания
return mositure; // Возвращение считанного значения
}

В Arduino IDE вы можете проверить работоспособность датчика сразу после загрузки скетча через встроенный Serial Monitor.

Показания датчика будут зависеть прежде всего от подаваемого напряжения, а также от типа грунта и уровня окисления контактов.

Значение ‘0’ — означает, что датчик находится не в почве, нарушена коммутация или же грунт достиг абсолютной сухости (что маловероятно). С напряжением в 5 вольт максимальное значение датчика может быть около 800 (при погружении в воду), при 3.3 вольтах — уже около 500.

То есть, каждая отдельная установка датчика требует калибровки. Если необходимо стандартизировать выводимые значения (например, привести их к обычному виду процентов влажности), можно воспользоваться встроенной функцией map().

Leave a Reply