Не переключается насос

polyana
Offline
Зарегистрирован: 23.04.2022

Стенд нужен для регулирования уровня воды.

Ультразвуковой датчик HC-SR04 измеряет уровень воды, в случае, если она достигнет нужного уровня, который заранее задан в скетче, должен переключиться насос, но насос не переключается и начинает работать с момента, когда я только вставлю аккумуляторы.

Подключал всё по схеме подключения:

Ультразвуковой датчик определяет уровень, это можно понять по видео, когда подношу руку к датчику и на плате arduino загорается тусклый световой сигнал, также уровень отображается в мониторе порта, в программе arduino ide.

Видео с демонстрацией работы системы: https://www.youtube.com/watch?v=R5m0cp_jRFo&t=17s

Когда подключаю VCC от реле к аккумуляторам, насос выключается и загораются лампочки на реле, но никак не реагирует на ультразвуковой датчик, видео: https://www.youtube.com/watch?v=b5vEM8EvqJ4

Ссылка на скетч: https://disk.yandex.ru/d/w9ZO3YS9IA9zrQ

В системе используется:

реле jqc-3ff-s-z
насос MINI DC6-12V R385
плата arduino nano v3
 
Что нужно изменить, чтобы при достижении воды заданного диапазона отключался/включался насос?
sadman41
Offline
Зарегистрирован: 19.10.2016

Во-первых - не питать насос от батареек.

polyana
Offline
Зарегистрирован: 23.04.2022

sadman41 пишет:
Во-первых - не питать насос от батареек.

тогда от чего? если не будет компьютера под руками. батарейки никак на работу не повлияют, я считаю

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

во вторых выложи скетч сюда, кодом только выкладывай

polyana
Offline
Зарегистрирован: 23.04.2022
//Программа управления насосом по датчику расстояния
#include "Ultrasonic.h"


boolean pereliv = 0; //переменная для хранения значения с датчика перелива
boolean key = 0;    //переменная для хранения значения с кнопки (1 если кнопка нажата, 0 если нет)
boolean trevoga = 0; //переменная сигнализирующая о наличии тревоги
float maxLevel=4.00;  //расстояние в сантиметрах, соответствующее максимальному уровню жидкости в емкости
float minLevel=7.00; //расстояние в сантиметрах, соответствующее минимальному уровню жидкости в емкости

Ultrasonic ultrasonic(3, 4); //подключили датчик расстояния (TRIG к 3 пину. ECHO к 4)



void setup()
{
  Serial.begin(9600); 	 // запускаем серийный порт
  pinMode(8, INPUT_PULLUP);  //ПОДКЛЮЧИЛИ ПИН КНОПКИ (ИСПОЛЬЗУЕТСЯ ДЛЯ ОТКЛЮЧЕНИЯ РЕЖИМА ТРЕВОГИ)
  pinMode(10, INPUT_PULLUP);  //ПОДКЛЮЧИЛИ ПИН ПОПЛАВКОВОГО ВЫКЛЮЧАТЕЛЯ (НА СЛУЧАЙ ПЕРЕЛИВА)
}

void loop()
{
  float rast = ultrasonic.Ranging(CM); 	// получаем расстояние с ультразвукового датчика и сохраняем его в rast
  pereliv = digitalRead(10); // считываем состояние поплавкового выключателя
  key = digitalRead(8); // считываем состояние кнопки

  Serial.print(rast); 					// выводим растояние до воды в монитор порта
  
  if (rast > minLevel) { //если растояние до поверхности воды больше 7 см
    digitalWrite(12, HIGH);  //включаем питание на реле
    digitalWrite(13, HIGH);  //подаем сигнал реле на включение насоса
    Serial.println("    OnNasos");
  }

  if (rast < maxLevel) { //если растояние до поверхности воды меньше maxLevel;
    digitalWrite(13, LOW); //даем сигнал на отключение реле
    digitalWrite(12, LOW); //отключаем питание реле
      Serial.println("    OFFNasos");
  }

  if (pereliv == 1) {//если сработал поплавковый выключатель, то
    trevoga = 1;  //включаем режим тревоги
  }

  if (trevoga == 1) {  //если режим тревоги включен, то
    digitalWrite(13, LOW); //даем сигнал на отключение реле
    digitalWrite(12, LOW); //отключаем питание реле
    tone(7, 2500, 250); //подаем сигнал тревоги с частотой 2500 и длительностью 250мс
  }

  if (key == 1) {  //если нажата кнопка, то
    trevoga = 0;  //отключаем режим тревоги
  }

 if (trevoga == 0) {  //если режим тревоги отключен, то
    noTone(7);  //отключаем пьезопищалку
  }



  delay(500); 								// задержка

  
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

" берём чистый палец " и смотрим в эмуляторе образец   и с твоими кнопками 

"Ульри, где у него кнопка"? )))

Так сойдёт? )))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

polyana пишет:

sadman41 пишет:
Во-первых - не питать насос от батареек.

тогда от чего? если не будет компьютера под руками. батарейки никак на работу не повлияют, я считаю

Вас, вообще-то, никто не спрашивал, что именно Вы считаете.

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

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

polyana
Offline
Зарегистрирован: 23.04.2022

В видео всё работает на аккумуляторах, которые у меня: https://www.youtube.com/watch?v=5aiIxOBYARY&list=WL

в описание к видео человек оставил ссылки на компоненты, на которых работает система

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

polyana пишет:

В видео всё работает на аккумуляторах, которые у меня: https://www.youtube.com/watch?v=5aiIxOBYARY&list=WL

в описание к видео человек оставил ссылки на компоненты, на которых работает система

На заборе тоже написано... Если не хотите следовать советам специалистов - закрывайте тему.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Одна проблема очевидна сразу - начальное состояние пина реле при старте системы не задаётся никак. Исправьте это, а затем показывайте вывод в монитор порта (только не вздумайте картинкой!). Чтобы все убедились, что Ваш датчик действительно что-то измеряет. Чтобы не получилось тонны текста, можно пока задержку побольше поставить.