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

Я только учусь программировать на Arduino.

Цель состоит в том, что сначала датчик измеряет уровень влажности (я сопоставил значения показаний от 0 до 100). Если значение меньше порога 70, то включится водяной насос. Как только значение превысит 70, насос перестанет качать воду.

Проблема в том, что даже при значении меньше 70 помпа не работает.

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

//для сопоставления значений
int mostMoist = 100;
int leastMoist = 600;
int percent;

//прямое значение с датчика
int raw;

//порог минимального процента для включения помпы
const int threshold = 70;

//начальное состояние водяного насоса
bool dosomething = false;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  //если не качает воду:
  while (dosomething == false){
  //проверить значение датчика, сопоставить из 100 и отобразить на мониторе
  raw = analogRead(A0);
  percent = map(raw,leastMoist,mostMoist,0,100);
  if (percent < 0){
    percent = 0;
  }
  Serial.println(percent);
  Serial.println("dosomething is set to false");


  //проверить, меньше ли процент влажности порогового значения. если это так, установите dosomething true, иначе цикл dosomething false
  if (percent<threshold){
    dosomething = true;
  } else{
    dosomething = false;
  }
  delay(2);  
  }



  //если качает воду:
  while (dosomething==true){
  //проверить значение датчика, сопоставить из 100 и отобразить на мониторе
  raw = analogRead(A0);
  percent = map(raw,leastMoist,mostMoist,0,100);
  if (percent < 0){
    percent = 0;
  }
  // включаем насос
  digitalWrite(13,HIGH);
  Serial.println("dosomething is set to true");
  //проверить, меньше ли процент влажности порогового значения, если да, цикл сделать что-то истинное, иначе установить сделать что-то ложным
    if (percent<threshold){
    dosomething = true;
  } else{
    dosomething = false;
  }
    Serial.println(percent);
  delay(2);  
  } 


}

, 👍1

Обсуждение

пожалуйста, не выкладывайте картинки текста... выкладывайте сам текст, @jsotola


2 ответа


3

Я не вижу на вашем фото второго блока питания. Если вы пытаетесь запустить насос напрямую от контакта Arduino, весьма вероятно, что насосу требуется гораздо больше тока, чем может обеспечить контакт.

Возможно питание мотора от USB, но 1) плата Uno не делает это легко доступным, 2) это подвергает ваш компьютер некоторому риску (противо-ЭДС или чрезмерной мощности порта). , Но в идеале был бы отдельный источник питания (не забудьте соединить землю этого источника с землей Uno).

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

,

0

Для управления насосом вам понадобится либо транзистор, либо релейная плата, управляющая током. Контакты Arduino могут управлять только 20 мА, чего недостаточно для большинства насосов, даже очень маленьких.

Если насос может работать от 5 В и < 400 мА, транзистора (FET) может быть достаточно, питание может поступать от VCC или около того. В противном случае одним из простых решений является дополнительный источник питания с реле.

Например, вы можете начать отсюда.

Ищите учебные пособия, их так много, что можно найти с помощью поисковой системы, это того стоит :)

,