Нужно сделать, чтобы насос переключался по заданным условиям
- Войдите на сайт для отправки комментариев
Я делаю стенд для регулирования уровнем воды, но у меня возникла проблема. Ультразвуковой датчик HC-SR04 измеряет уровень воды, в случае, если вода достигнет нужного уровня, который заранее задан в скетче, должен переключиться насос, но насос не переключается. Если нажимаю на клавишный переключатель, насос также не отключается. Ультразвуковой датчик определяет уровень, это можно понять по видео, когда подношу руку к датчику и на плате arduino загорается тусклый световой сигнал, также уровень отображается в мониторе порта, в программе arduino ide. Поплавковый датчик, сенсорная кнопка и пьезо-пищалка работают нормально.
Подключал всё по схеме подключения:
****
Система состоит из:
Ультразвуковой датчик HC-SR04
Сенсорная кнопка TTP223
Arduino Nano V3
Кнопочный переключатель KCD1-101
Литиевая аккумуляторная батарея HG2
Сигнализирующая пьезо-пищалка
Водяной насос MINI DC6-12V R385
Одноканальный релейный модуль JQC-3FF-S-Z
Поплавковый выключатель
Скетч для работы системы:
//Программа управления насосом по датчику расстояния #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); // задержка }
Видео как у меня работает система: https://www.youtube.com/watch?v=R5m0cp_jRFo&t=21s
Видео как должна работать система:
https://www.youtube.com/watch?v=5aiIxOBYARY&list=WL
Вся система должна работать по принципу, микроконтроллер Arduino Nano опрашивает ультразвуковой датчик, получая расстояние до поверхности жидкости. В программе можно указать минимальное и максимальное расстояние до неё. Микроконтроллер Arduino Nano будет отключать и включать насос, автоматически поддерживая уровень жидкости в заданных диапазонах. Для защиты от перелива дополнительно установлен поплавковый выключатель. В случае нештатной ситуации, например, если не сработает ультразвуковой датчик расстояния, то для предотвращения затопления сработает поплавок и микроконтроллер Arduino Nano отключит насос и подаст сигнал на звуковой излучатель, сигнал которой будет говорить об аварийной ситуации, чтобы выключить сигнализацию, нужно коснуться сенсорной кнопки.
Ваша задача: найти ошибку, из-за которой не переключается насос в заданных диапазонах и исправить её.
Cхема подключения:
нам учитель задаёт с иксами задачу...
Тут и код и эмуляция, всё работает
Что не устраивает?
нам учитель задаёт с иксами задачу...
Тут и код и эмуляция, всё работает
Что не устраивает?
Можете скинуть пожалуйста свою почту или ссылку на страницу вконтакте?
ua6em @ yandex.ru
Для начала ты бы подключение выключателя и бесконтактной кнопки проверил бы )))
barmaley2m@yandex.ru