Цифровой измеритель влажности почвы своими руками. Датчик влажности почвы: принцип работы и сборка своими руками


Самодельный, стабильный датчик влажности почвы для автоматической поливальной установки

Эта статья возникла в связи с постройкой автоматической поливальной машины для ухода за комнатными растениями. Думаю, что и сама поливальная машина может представлять интерес для самодельщика, но сейчас речь пойдёт о датчике влажности почвы. https://сайт/


Самые интересные ролики на Youtube


Пролог.

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

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


Описания самодельных любительских датчиков в сети хотя и присутствуют, но все они работают по принципу измерения сопротивления почвы постоянному току. А первые же эксперименты показали полную несостоятельность подобных разработок.

Собственно, это меня не очень удивило, так как я до сих пор помню, как в детстве пытался измерять сопротивление почвы и обнаружил в ней... электрический ток. То есть стрелка микроамперметра фиксировала ток, протекающий между двумя электродами, воткнутыми в землю.


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


Вначале я и вовсе отказался от измерения сопротивления почвы и даже начал сооружать индукционный датчик, так как нашёл в сети промышленный датчик влажности, про который было написано, что он индукционный. Я собирался сравнивать частоту опорного генератора с частотой другого генератора, катушка которого одета на горшок с растением. Но, когда начал макетировать устройство, вдруг вспомнил, как однажды попал под «шаговое напряжение». Это и натолкнуло меня на очередной эксперимент.

И действительно, во всех, найденных в сети самодельных конструкциях, предлагалось замерять сопротивление почвы постоянному току. А что, если попытаться измерить сопротивление переменному току? Ведь по идее, тогда вазон не должен превращаться в "аккумулятор".

Собрал простейшую схему и сразу проверил на разных почвах. Результат обнадёжил. Никаких подозрительных поползновений в сторону увеличения или уменьшения сопротивления не обнаружилось даже в течение нескольких суток. Впоследствии, данное предположение удалось подтвердить на действующей поливальной машине, работа которой была основана на подобном принципе.

Электрическая схема порогового датчика влажности почвы.

В результате изысканий появилась эта схема на одной единственной микросхеме. Подойдёт любая из перечисленных микросхем: К176ЛЕ5, К561ЛЕ5 или CD4001A. У нас эти микросхемы продают всего по 6 центов.


Датчик влажности почвы представляет собой пороговое устройство, реагирующее на изменение сопротивления переменному току (коротким импульсам).

На элементах DD1.1 и DD1.2 собран задающий генератор, вырабатывающий импульсы с интервалом около 10 секунд. https://сайт/

Конденсаторы C2 и C4 разделительные. Они не пропускают в измерительную цепь постоянный ток, которые генерирует почва.

Резистором R3 устанавливается порог срабатывания, а резистор R8 обеспечивает гистерезис усилителя. Подстроечным резистором R5 устанавливается начальное смещение на входе DD1.3.


Конденсатор C3 – помехозащищающий, а резистор R4 определяет максимальное входное сопротивление измерительной цепи. Оба эти элемента снижают чувствительность датчика, но их отсутствие может привести к ложным срабатываниям.

Не стоит также выбирать напряжение питания микросхемы ниже 12 Вольт, так как это снижает реальную чувствительность прибора из-за уменьшения соотношения сигнал/помеха.


Внимание!

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

В для полива растений я использовал другую схему, которая генерирует всего один короткий измерительный импульс в сутки, приуроченный ко времени полива растений.

Датчик влажности почвы Arduino предназначен для определения влажности земли, в которую он погружен. Он позволяет узнать о недостаточном или избыточном поливе ваших домашних или садовых растений. Подключение данного модуля к контроллеру позволяет автоматизировать процесс полива ваших растений, огорода или плантации (своего рода "умный полив").

Модуль состоит из двух частей: контактного щупа YL-69 и датчика YL-38, в комплекте идут провода для подключения.. Между двумя электродами щупа YL-69 создаётся небольшое напряжение. Если почва сухая, сопротивление велико и ток будет меньше. Если земля влажная - сопротивление меньше, ток - чуть больше. По итоговому аналоговому сигналу можно судить о степени влажности. Щуп YL-69 соединен с датчиком YL-38 по двум проводам. Кроме контактов соединения с щупом, датчик YL-38 имеет четыре контакта для подключения к контроллеру.

  • Vcc – питание датчика;
  • GND – земля;
  • A0 - аналоговое значение;
  • D0 – цифровое значение уровня влажности.
Датчик YL-38 построен на основе компаратора LM393, который выдает напряжение на выход D0 по принципу: влажная почва – низкий логический уровень, сухая почва – высокий логический уровень. Уровень определяется пороговым значением, которое можно регулировать с помощью потенциометра. На вывод A0 подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик YL-38 имеет два светодиода, сигнализирующих о наличие поступающего на датчик питания и уровня цифрового сигналы на выходе D0. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать модуль автономно, без подключения к контроллеру.

Технические характеристики модуля

  • Напряжение питания: 3.3-5 В;
  • Ток потребления 35 мА;
  • Выход: цифровой и аналоговый;
  • Размер модуля: 16×30 мм;
  • Размер щупа: 20×60 мм;
  • Общий вес: 7.5 г.

Пример использования

Рассмотрим подключение датчика влажности почвы к Arduino. Создадим проект индикатора уровня влажности почвы для комнатного растения (ваш любимый цветок, который вы иногда забываете поливать). Для индикации уровня влажности почвы будем использовать 8 светодиодов. Для проекта нам понадобятся следующие детали:
  • Плата Arduino Uno
  • Датчик влажности почвы
  • 8 светодиодов
  • Макетная плата
  • Соединительные провода.
Соберем схему, показанную на рисунке ниже


Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки: // Датчик влажности почвы // http://сайт // контакт подключения аналогового выхода датчика int aPin=A0; // контакты подключения светодиодов индикации int ledPins={4,5,6,7,8,9,10,11}; // переменная для сохранения значения датчика int avalue=0; // переменная количества светящихся светодиодов int countled=8; // значение полного полива int minvalue=220; // значение критической сухости int maxvalue=600; void setup() { // инициализация последовательного порта Serial.begin(9600); // настройка выводов индикации светодиодов // в режим OUTPUT for(int i=0;i<8;i++) { pinMode(ledPins[i],OUTPUT); } } void loop() { // получение значения с аналогового вывода датчика avalue=analogRead(aPin); // вывод значения в монитор последовательного порта Arduino Serial.print("avalue=");Serial.println(avalue); // масштабируем значение на 8 светодиодов countled=map(avalue,maxvalue,minvalue,0,7); // индикация уровня влажности for(int i=0;i<8;i++) { if(i<=countled) digitalWrite(ledPins[i],HIGH); //зажигаем светодиод else digitalWrite(ledPins[i],LOW); // гасим светодиод } // пауза перед следующим получением значения 1000 мс delay(1000); } Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение переменных для полного полива (minvalue) и сильной сухости почвы (maxvalue) получим экспериментально. Большей сухости почвы соответствует большее значение аналогового сигнала. С помощью функции map масштабируем аналоговое значение датчика в значение нашего светодиодного индикатора. Чем больше влажность почвы, тем больше значение светодиодного индикатора (количество зажженных светодиодов). Подключив данный индикатор к цветку, мы издали можем видеть на индикаторе степень влажности и при определять необходимость полива.

Часто задаваемые вопросы FAQ

1. Не горит светодиод питания
  • Проверьте наличие и полярность подаваемого на датчик YL-38 питания (3,3 – 5 В).
2. При поливе почвы не загорается светодиод индикации влажности почвы
  • Настройте потенциометром порог срабатывания. Проверьте соединение датчика YL-38 с щупом YL-69.
3. При поливе почвы не изменяется значение выходного аналогового сигнала
  • Проверьте соединение датчика YL-38 с щупом YL-69.
  • Проверьте наличие щупа в земле.

Всем привет, сегодня в нашей статье мы рассмотрим как сделать датчик влажности почвы своими руками. Причиной самостоятельного изготовления может послужить износ датчика (коррозия, окисление), либо просто невозможность приобрести, долгое ожидание и желание смастерить что-либо своими руками. В моем случае желанием сделать датчик самому послужил износ, дело в том что щуп датчика при постоянной подаче напряжение взаимодействует с почвой и влагой в результате чего окисляется. Например датчики SparkFun покрывают его специальным составом (Electroless Nickel Immersion Gold) для увлечения ресурса работы. Так же что бы продлить жизнь датчику лучше подавать питание на датчик только в момент замеров.
В один "прекрасный" день я обратил внимание что моя система полива увлажняет почву без лишней надобности, при проверке датчика я извлек щуп из почвы и вот что я увидел:

Из-за коррозии между щупами появляется дополнительное сопротивление в результате которого сигнал становиться меньше и arduino считает что почва сухая. По скольку Я использую аналоговый сигнал то схему с цифровым выходом на компараторе я делать не буду для упрощения схемы.

На схеме изображен компаратор датчика влажности почвы, красным цветом отмечена часть которая преобразует аналоговый сигнал в цифровой. Не отмеченная часть это часть необходимая нам для преобразование влажности в аналоговый сигнал, мы ее и будем использовать. Чуть ниже я привел схему подключение щупов к arduino.

Левая часть схемы показывает как щупы подключаются к arduino, а правую часть (с резистором R2) я привел для того что бы показать за счет чего меняются показания АЦП. Когда щупы опущены в землю между ними образуется сопротивление (на схеме я отобразил его условно R2), если почва сухая то сопротивление бесконечно большое, а если влажное то оно стремиться к 0. Так как два сопротивления R1 и R2 образуют делитель напряжение, а средней точкой является выход (out a0) то от величины сопротивления R2 зависит напряжение на выходе. К примеру если сопротивление R2=10Kom то напряжение будет 2,5В. Можно сопротивление запаять на проводах что бы не делать дополнительных развязок, для стабильности показаний можно добавить конденсатор 0,01мкФ между - питания и out. схема подключение следующая:

Поскольку с электрической частью мы разобрались, можно перейти к механической части. Для изготовления щупов лучше использовать материал менее всего подверженного коррозии что бы продлить жизнь датчика. Можно использовать "нержавейку" или оцинкованный метал, форму можно выбрать любую, даже можно использовать два куска проволочки. Я для щупов выбрал "оцинковку", в качестве фиксирующего материал использовал небольшой кусок гетинакса. Так же стоит учесть что настояния между щупами должно быть 5мм-10мм, но не стоит делать больше. На концы оцинковки я напаял провода датчика. Вот что получилось в итоге:

Не стал делать подробный фото отчет, все и так просто. Ну и фото в работе:

Как я уже раньше указывал лучше использовать датчик только в момент измерений. Оптимальный вариант включение через транзисторный ключ, но так как потребление тока у меня составило 0,4мА можно включить на прямую. Для подачи напряжения во время замеров можно подключить контакт датчика VCC к пину ШИМ или использовать цифровой выход на момент измерений подавать высокий (HIGH) уровень, а потом устанавливать низкий. Так же стоит учесть что после подачи напряжения на датчик необходимо выждать некоторое время для стабилизации показаний. Пример через ШИМ:

Int sensor = A0; int power_sensor = 3;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
analogWrite(power_sensor, 0);
}

void loop() {

delay(10000);
Serial.print("Suhost" : ");
Serial.println(analogRead(sensor));
analogWrite(power_sensor, 255);
delay(10000);
}

Спасибо всем за внимание!




Поэт Андрей Вознесенский однажды сказал так: «лень - двигатель прогресса». Пожалуй, трудно не согласиться с этой фразой, ведь большинство электронных устройств создаются именно с той целью, чтобы облегчить нашу с вами повседневную жизнь, полную забот и всяких разных суетных дел.

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

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

По проводам они подключаются к схеме, задача которой открывать реле только тогда, когда влажность упадёт ниже заданной и закрывать реле в тот момент, когда почва вновь насытится влагой. Реле, в своё очередь, управляет насосом, который качает воду из резервуара прямо под корень растению.

Схема датчика

Как известно, электропроводимость сухой и влажной почвы отличается довольно значительно, именно этот факт лежит в основе работы датчика. Резистор номиналом 10 кОм и участок почвы между прутками образуют делитель напряжения, их средняя точка подключается напрямую на вход ОУ. На другой вход ОУ напряжение подаётся со средней точки переменного резистора, т.е. его можно настраивать от нуля до напряжения питания. С его помощью выставляется порог переключения компаратора, в роли которого и работает ОУ. Как только напряжение на одном его входе превысит напряжение на другом - на выходе окажется логическая «1», загорится светодиод, транзистор откроется и включит реле. Транзистор можно применить любой, структуры PNP, подходящий по току и напряжению, например, КТ3107 или КТ814. Операционный усилитель TL072 или любой аналогичный, например, RC4558. Параллельно обмотке реле следует поставить маломощный диод, например, 1n4148. Напряжение питания схемы - 12 вольт.

Из-за длинных проводов от горшка до самой платы может возникнуть такая ситуация, что реле переключается не чётко, а начинает щёлкать с частотой переменного тока в сети, и только спустя какое-то время устанавливается в открытом положении. Для устранения этого нехорошего явления следует поставить электролитический конденсатор ёмкостью 10-100 мкФ параллельно датчику. Архив с платой . Удачной сборки! Автор - Дмитрий С.

Обсудить статью СХЕМА ДАТЧИКА ВЛАЖНОСТИ ПОЧВЫ

Хотели бы вы, чтобы ваши растения сообщали о том, что их надо полить? Или просто держали вас в курсе уровня влажности почвы?

В этой статье мы рассмотрим проект автоматизированного полива с использованием датчика уровня влажности почвы:

Обзор датчика уровня влажности почвы

Подобные датчики подключаются достаточно просто. Два из трех коннекторов - это питание (VCC) и земля (GND). При использовании датчик желательно периодически отключать от источника питания, чтобы избежать возможного окисления. Третий выход - сигнал (sig), с которого мы и будем снимать показания. Два контакта датчика работают по принципу переменного резистора - чем больше влаги в почве, тем лучше контакты проводят электричество, падает сопротивление, сигнал на контакте SIG растет. Аналоговые значения могут отличаться в зависимости от напряжения питания и разрешающей способности ваших аналоговых пинов микроконтроллера.

Для подключения датчика можно использовать несколько вариантов. Коннектор, приведенный на рисунке ниже:

Второй вариант более гибкий:

Ну и конечно можно напрямую запаять контакты на датчик.

Если вы планируете использовать датчик за пределами квартиры, стоит дополнительно задуматься о защите контактов от грязи и прямого попадания солнечных лучей. Возможно, стоит подумать о корпусе или нанесении защитного покрытия непосредственно на контакты датчика уровня влажности и проводники (смотрите на рисунок ниже).

Датчик уровня влажности почвы с нанесенным защитным покрытием на контактах и изолированными проводниками для подключения:

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

Один из недостатков датчиков подобного типа - недолговечность их чувствительных элементов. К примеру, компания Sparkfun решает эту проблему, используя дополнительное покрытие (Electroless Nickel Immersion Gold). Второй вариант продления срока действия сенсора - подавать на него питание непосредственно при снятии показаний. При использовании Arduino, все ограничивается подачей сигнала HIGH на пин, к которому подключен датчик. Если вы хотите запитать датчик большим напряжением чем предоставляет Arduino, всегда можно использовать дополнительный транзистор.

Контроль уровня влажности почвы - пример проекта

В приведенном ниже проекте использованы датчик уровня влажности, аналог платы Arduino - RedBoard и LCD дисплей, на котором выводятся данные про уровень влажности почвы.

Датчик уровня влажности почвы компании SparkFun:

Красный проводник (VCC) подключается к 5 В на Arduino, черный - к земле (GND), зеленый - сигнал - к аналоговому пину 0 (A0). Если вы используете другой аналоговый пин на Arduino, не забудьте внести соответствующие изменения в скетч для микроконтроллера, представленный ниже.

LCD дисплей подключен к 5 В, земле и цифровому пину 2 (также можно изменить и внести изменения в код) для обмена данными с микроконтроллером по серийному протоколу связи.

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

Программа для Arduino

Скетч достаточно простой. Для передачи данных на LCD дисплей вам необходимо подключить библиотеку Software Serial library. Если у вас в ее нет, скачать можно здесь: Arduino GitHub

Дополнительные пояснения приведены в комментариях к коду:

// Пример использования датчика уровня влажности почвы с LCD дисплеем.

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (не используется)

int thresholdUp = 400;

int thresholdDown = 250;

int sensorPin = A0;

String DisplayWords;

int sensorValue;

mySerial.write(254);

mySerial.write(128);

// очистка дисплея:

mySerial.write(" ");

mySerial.write(" ");

// перемещение курсора к началу первой строки LCD дисплея:

mySerial.write(254);

mySerial.write(128);

// "Dry, Water it!"

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

} else if (sensorValue >= thresholdUp){

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

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

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

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

Датчик уровня влажности в составе автоматической системы полива на основании Arduino:

Для автоматизации полива нам понадобятся дополнительные детали: возможно, шкивы, зубчатые шестерни, двигатель, муфта, транзисторы, резисторы. Список зависит от вашего проекта. Ну все, что может попасться под руку в быту. Более детально один из примеров показан ниже:

Это один из множества вариантов установки двигателя для системы автоматического полива. Колесо можно установить непосредственно в воде. В таком случае при его быстром вращении, вода будет подаваться к растению. В общем, можете проявить фантазию.

Схема подключения двигателя постоянного тока () на примере копии Arduino от SparkFun приведена ниже:

Ниже приведен скетч для Arduino (по сути он такой же как и приведенный выше с небольшим дополнением для управления двигателем):

// В скетче считываются данные с датчика и отображается уровень влажности почвы

// если почва сухая, начинает работать двигатель

// Для работы с дисплеем используется библиотека softwareserial library

#include <SoftwareSerial.h>

// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)

// Управляем двигателем с помощью пина 9.

// Этот пин должен обязательно поддерживать ШИМ-модуляцию.

const int motorPin = 9;

// Тут мы настраиваем некоторые константы.

// Настройка констант зависит от условий внешней среды, в которой используется датчик

int thresholdUp = 400;

int thresholdDown = 250;

// Настраиваем пин A0 на Arduino для работы с датчиком:

int sensorPin = A0;

pinMode(motorPin, OUTPUT); // устанавливаем пин, к которому подключен двигатель в качестве выхода

mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud

delay(500); // ждем пока дисплей прогрузится

// Здесь мы объявляем строку, в которой хранятся данные для отображения

// на жидкокристаллическом дисплее. Значения будут изменяться

// в зависимости от уровня влажности почвы

String DisplayWords;

// В переменной sensorValue хранится аналоговое значение датчика с пина А0

int sensorValue;

sensorValue = analogRead(sensorPin);

mySerial.write(128);

// очистка дисплея:

mySerial.write(" ");

mySerial.write(" ");

// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);

mySerial.write(128);

// запись необходимой информации на дисплей:

mySerial.write("Water Level: ");

mySerial.print(sensorValue); //Использование.print вместо.write для значений

// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.

// Если значение меньше thresholdDown, отображаем слова:

// "Dry, Water it!"

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = "Dry, Water it!";

mySerial.print(DisplayWords);

// запуск двигателя на небольших оборотах (0 – остановка, 255 – максимальная скорость):

analogWrite(motorPin, 75);

// Если значение не ниже thresholdDown надо провести проверку, не будет

// ли оно больше нашего thresholdUp и, если, больше,

// отобразить надпись "Wet, Leave it!":

} else if (sensorValue >= thresholdUp){

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = "Wet, Leave it!";

mySerial.print(DisplayWords);

// выключение двигателя (0 – остановка, 255 – максимальная скорость):

analogWrite(motorPin, 0);

// Если полученное значение в диапазоне между минимальным и максимальным

// и почва была раньше влажной, а теперь сохнет,

// отображаем надпись "Dry, Water it!" (то есть, когда мы

// приближаемся к thresholdDown). Если почва была сухой, а теперь

//быстро увлажняется, отображаем слова "Wet, Leave it!" (то есть, когда мы

// приближаемся к thresholdUp):

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

delay(500); //Задержка в пол секунды между считываниями

Удачи вам в реализации автоматического полива ваших растений!