Измеритель влажности почвы на микроконтроллере (Arduino UNO)
Садоводам, цветоводам и огородникам бывает важно знать влажность почвы, в которой они выращивают свои растения. Обычно, влажность почвы измеряют по её сопротивлению электрическому току. Этот способ не всем хорош. Он неточен, потому что на результат измерения сильно влияет состав почвы, её соленость, кислотность... Сильно влияет и состав воды, применяемой для полива.
Второй недостаток в том, что щупы, обычно металлические, корродируют. Даже если они сделаны из нержавеющей стали, под влиянием электролиза происходит и их коррозия.
Сейчас имеются в продаже различные датчики для «умных домов» и прочего, среди которых есть емкостные датчики влажности почвы. Один из таких - «Moisture Sensor V1.2». Внешне напоминает кухонный нож. но из пластмассы, «лезвие» которого втыкают в землю, а в «рукоятке» находится електросхема и трехконтактный разъем для подачи питания и выхода.
Датчик определяет влажность почвы по изменению электрической емкости, и не имеет контактирующих с почвой металлических частей. Единственно, что настораживает. так это открытость электросхемы, но эту проблему можно легко решить при помощи изоленты.
Датчик аналоговый, от влажности зависит постоянное напряжение на его выходе. Поэтому, практически, нужен четырехканальный вольтметр, с вычислителем для пересчета значения напряжения на выходе датчиков в значения процентов влажности. На мой взгляд, проще всего это исполнить на основе готовой платы Arduino uno.
Принципиальная схема
На схеме показаны четыре датчика, обозначенных как U1-U4. Их выходы подключены к аналоговым входам платы Arduino uno. Как известно, аналоговые входы Arduino uno оцифровывают напряжение в диапазоне от 0 до 5V в 1024 ступени. Напряжение питания датчиков 5V, берется с платы Arduino uno.
В литературе и интернете имеется весьма противоречивая информация о зависимости выходного напряжения датчика от влажности почвы. Ясно только что она линейная. Поэтому, было решено испытать имеющиеся датчики экспериментально. При помещении в сухую землю напряжение на выходе датчика было около 2,9V.
При помещении в стакан воды (100% влажность) показания были около 1,6V. Все четыре приобретенных датчика работали практически одинаково. Выходит, что работает выход датчика в диапазоне 1,6...2,9V, и к тому же, зависимость от влажности обратная.
Рис. 1. Принципиальная схема измерителя влажности почвы на микроконтроллере (Arduino uno).
Зная, что напряжение 5V аналоговый вход «понимает» как 1024, были вычислены значения аналогового входа для 100% влажности и для 0% влажности. Получилось: 100% = 327, 0% = 594.
Для индикации результата измерения был использован двухстрочный ЖК-инди-катор типа 1602А, он подключен к цифровым портам D2-D7 платы Arduino uno. Питается ЖК-индикатор от стабилизатора напряжения 5V, имеющегося на плате Arduino uno.
Программа для МК
Программа на языке C++ приведена в таблице 1.
Для того чтобы индикатор взаимодействовал с Arduino uno нужно в программу загрузить подпрограмму для его управления. Такие подпрограммы называются «библиотеками», и в программном комплекте для ARDUINO UNO есть много разных «библиотек».
Таблица 1.
Рис. 0. Программа для микроконтроллера к схеме четырехканального измерителя влажности.
Для работы с ЖК-индикатором на основе HD44780 нужна библиотека LiquidCrystal. Поэтому программа (таблица 1) начинается с загрузки этой библиотеки:
#include
Затем задаются аналоговые порты, порты для ЖК-индикатора. Задаются переменные для измерения и вычисления результата измерения. Как уже сказано, рабочий диапазон выхода датчика 1,6..,2,9V, что в единицах значения аналогового порта получается от 327 до 594. Причем, зависимость в выражении в процентах влажности обратная.
Поэтому, вычисление было решено сделать при помощи функции тар. Сделано это в этих строках :
volt=m*p(vout,327,594,100,0);
volt1=map(voutl,327,594,100,0);
volt2=map(vout2,327,594,100,0);
volt3=map(vout3,327,594,100,0);
To есть, значение 327 соответствует 100% влажности, а значение 594 соответствует 0% влажности. Далее, все промежуточные значения масштабированы функцией тар в указанном диапазоне.
Далее, результат, выраженный в процентах влажности, выводится на двухстрочный ЖК-индикатор, по два значения в строку. Выглядит индикация, например, для значений влажности 50%, 68%, 27% и 89%, примерно так:
Q1 =50
Q2 = 68
Q3 = 27
Q4 = 89
Прибор предназначен для измерения влажности почвы в четырех местах. Если нужен более простой прибор, измеряющий влажность только в одном месте, можно упростить схему, удалив лишние три датчика, например, U2, U3 и U4, оставив только U1.
Программа, при этом, тоже существенно упрощается - таблица 2.
Таблица 2.
Рис. 0. Программа для микроконтроллера к схеме одноканального измерителя влажности.
Существуют и другие аналогичные датчики, пока искал информацию по этим, еще нашел датчики «Moisture Sensor V2.0» и «АМР-В182». Причем, если верить информации из интернета, у датчика «АМР-В182» зависимость выходного напряжения от влажности не обратная, а прямая. Впрочем, в интернете не всегда информация достоверная, и здесь работает правило «доверяй, но проверяй».
Поэтому, если будете использовать другие датчики, рекомендую сначала проверить их показания экспериментально при помощи вольтметра, как описано вначале этой статьи.
Каравкин Д. РК-06-21.