Вы здесь

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

 Всем привет, сегодня в нашей статье мы рассмотрим как сделать датчик влажности почвы своими руками. Причиной самостоятельного изготовления может послужить износ датчика (коррозия, окисление), либо просто невозможность приобрести, долгое ожидание и желание смастерить что-либо своими руками. В моем случае желанием сделать датчик самому послужил износ, дело в том что щуп датчика при постоянной подаче напряжение взаимодействует с почвой и влагой в результате чего окисляется. Например датчики 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() {
analogWrite(power_sensor, 255);
delay(10000);
Serial.print("Suhost' : ");
Serial.println(analogRead(sensor));
analogWrite(power_sensor, 255);
delay(10000);
}
 Спасибо всем за внимание!
Всего голосов: 313

Комментарии

kuklan
Интересная идея, нужно как-нибудь попробовать.
1 февраля, 2018 - 21:10
Сергей (не проверено)
Сколько оцинкованный живёт?
28 июня, 2019 - 12:35
ma3i4
В раза три дольше точно, потом он работает, но поверхность уже меняется.
1 июля, 2019 - 16:28
Андрей (не проверено)
Ух тыж ё. Все понимаю идея интересная, но такое подключение ближе к электролизеру, чем к датчику влажности. Не понимаю, зачем нам подавать постоянно питание на датчик, если можно считывать показания в "импульсном" режиме. Вместо постоянных 5 вольт пина можно подключить датчик к цифровому пину напрямую или к источнику 5 вольт через мосфет типо bc 335, которым будет управлять цифровой пин. (смотрите в зависимости от потребления, чтобы не сжечь цифровой порт ардуины). далее в код добавить 2 строчки. 1. в начале digitalWright (dpin, High ); -- подали напряжение на базу мосфета, открыли транзистор, напряжкние пошло на датчик. 2. в конце digitalWright (dpin, Low ); -- отключили пин. и перестали "коробить" датчик. Ардуина готова отправлятся в сон. В таком режиме датчик почти все время будет спать. Износ снизется до минимального. Еще лайфхак чтобы сделать датчик почти вечным: Залудите пластины обычным припоем, так через время можно будет почистить окислы и восстановить припой. (хотя за пол года работы автополива, я не заметил даже следов износа на датчике при работе в импульсном режиме)
11 сентября, 2019 - 14:54