Автоматика управления вентилятором в ванной
- Войдите на сайт для отправки комментариев
Добрый день.
Вопрос к знатокам.
Собрал простейшую схему на NANO V3 ATmega328, одноканальном релейном модуле, датчике движения (из комплекта Arduino), датчик температуры и влажности (то же из комплекта Arduino).
Написал простейший скеч при котором по условиям превышении температуры или влажности или если долго по времени детектируется движение, релейный модуль замыкается и тем самым сключается вентилятор вытяжки. Соответственно работает 3 минуты.
Вобщем собрал, спаял. Протестил. На колнке всё работает. В мониторинг порта данные идут на отлично, реле щёлкает как положено.
НО, стоит подключить на реле вентилятор и вся эта конструкция перестаёт отвечать по com порту, уходит в постоянную перезагрузку, вобщем полный неадекват.
Как только снимаю питание вентилятора с реле, всё опять как новенькое.
ПОМОГИТЕ. Что я делаю не так???????
Очень прошу помощи знающих людей.
ЗЫ Схему не рисую, всё до безобразия тупа и приметивно собранно.
ЗЫ Схему не рисую, всё до безобразия тупа и приметивно собранно.
Вот именно поэтому и не работает.
Давайте схему, не ленитесь. А также ссылку на Ваш модуль реле и датчики. Ну, и скетч, конечно.
Схема выглядит так. Сама ардуинка запитывается через USB (как нарисовать не знаю) от блока питания (или компьютера).
Скетч только вечером свогу выложить.
Но в скетче врятли дело, без подключения вентилятора то работает. Как только вентилятор со своими питание в схеме появляется, всё накрывается медным тазиком.
Ну, что-то подобное я ожидал увидеть. Очевидно Ардуина питается в конечном счетё от той же розетки, что и мотор.
Подключите осциллограф к пинам +5В и Gnd Ардуины и посмотрите, что происходит в момент включения вентиллятора с питанием контроллера. Всё поймёте.
У меня нет осцелогрофа((((
Вот Вы же знаете ответ, подскажите.
Как исправить, что бы заработало?
от чего питается Ардуина ?
У меня нет осцелогрофа((((
Постарайтесь приобрести хотя бы полуигрушечный DSO138. Одна тысяча рублей ведь не разорит Вас, а поможе ещё не раз.
Вот Вы же знаете ответ, подскажите.
Нет, не знаю. Предполагаю с большой долей вероятности, но точно не знаю. Необходимо проверить.
Давайте так, если у Вас нет осциллоргафа, найдите какой-нибудь аккумулятор на 8-16 вольт (автомобильный, от шуруповёрта, какой угодно на указанные напряжения).
Запитайте ардуину и датчики от аккумулятора (так чтобы они к розетке вообще никаким боком!) и проверьте. Если, как я предполагаю, беда с питанием, то в такой конфигурации всё должно заработать нормально.
После этого будет понятно куда копать дальше. А пока - надо либо подтвердить, либо исключить проблему с питанием.
Сделайте это.
Добрый день.
Спасибо что пытаетесь помочь, это сразу.
При экспериментах запитывал ардуино (nano) через юсб от ноутбука (ноут даже в розетку не втыкал).
Пока питание вентилятора не подключаю к реле, ардуинка в монитор порта пишет всю тестовую инфу (см. скетч), как только подключаю питание вентилятора, только первую строчку "DHTxx test!" и уходит в перезагрузку.
#include <DHT.h> #define DHTPIN A5 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); int vent = 13; int light = 2; int motion = 4; int varvent; int varlight; int varmotion; int varh; int timeh; int timem; int timel; int lightvar; int i; int alert; void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); pinMode(vent, OUTPUT); pinMode(light, INPUT); pinMode(motion, INPUT); dht.begin(); } void loop() { delay(1000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("----------------------------------------------"); Serial.println("\t"); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C\t"); Serial.print("Light: "); Serial.print(digitalRead(light)); Serial.println("\t"); Serial.print("Motion: "); Serial.print(digitalRead(motion)); Serial.println("\t"); Serial.print("VENT: "); Serial.print(digitalRead(vent)); Serial.println("\t"); Serial.print("alert = "); Serial.print(alert); Serial.println("\t"); } //условие по движению if (digitalRead(motion) == HIGH) { timem++; Serial.print("------------------"); Serial.println("\t"); Serial.print("timem = "); Serial.print(timem); Serial.println("\t"); } else { timem = 0; } //условие по влажности или температуре if (h >= 50 || t >= 35) { timeh++; Serial.print("------------------"); Serial.println("\t"); Serial.print("timeh = "); Serial.print(timeh); Serial.println("\t"); } else { timeh = 0; } //условие по свету if (digitalRead(light) == HIGH) { timel++; Serial.print("------------------"); Serial.println("\t"); Serial.print("timel = "); Serial.print(timel); Serial.println("\t"); if (timel >= 10) { Serial.print("wate LIGHT OFF"); Serial.println("\t"); lightvar = 2; //взвели по условию что свет был долго включен Serial.print("lightvar = "); Serial.print(lightvar); Serial.println("\t"); } } else { timel = 0; } //после выключения света включаем вентилятор if (lightvar == 2 && digitalRead(light) == LOW) { digitalWrite(vent, HIGH); Serial.print("VEN HIGH after light OFF"); delay(30000); lightvar = 0; } //защита от постоянной работы if (alert >= 20) { digitalWrite(vent, LOW); Serial.print("VEN LOW - ALERT"); delay(6000000); } //ИТОГ if (timeh >= 5 || timem >= 10) { digitalWrite(vent, HIGH); Serial.print("VEN HIGH after h% or motion"); alert++; delay(30000); } else { digitalWrite(vent, LOW); alert = 0; } //конец }попробуйте за место вентилятора лампочку подключить... обычную накаливания
попробуйте за место вентилятора лампочку подключить... обычную накаливания
и изменить пин включения реле с 13 на "более другой".
попробуйте за место вентилятора лампочку подключить... обычную накаливания
и изменить пин включения реле с 13 на "более другой".
А в чём особенность 13 пина по сравнению с более другими?
попробуйте за место вентилятора лампочку подключить... обычную накаливания
и изменить пин включения реле с 13 на "более другой".
А в чём особенность 13 пина по сравнению с более другими?
http://arduino.ru/Hardware/ArduinoBoardUno , ищем "13"
При экспериментах запитывал ардуино (nano) через юсб от ноутбука (ноут даже в розетку не втыкал).
Пока питание вентилятора не подключаю к реле, ардуинка в монитор порта пишет всю тестовую инфу (см. скетч), как только подключаю питание вентилятора, только первую строчку "DHTxx test!" и уходит в перезагрузку.
Это ближе к делу. Значит, моё первоначальное предположение оказалось неправильным. А Вы "знаете - скажите" - не всё так просто! :)
Теперь более или менее понятно, что происходит (хотя глянуть осциллографом не помешало бы).
Вы на схеме не нарисовали откуда питаете модуль реле. Рискну предположить, что от пина 5В ардуины. Так? А саму ардуину от USB. Всё правильно?
И ещё один момент. (вопрос №1) Я правиьно понял, что если реле стоит без нагрузки (но подключено), то оно нормально щёлкает и всё работает как надо? Оно щелкает? Или всё работает без реле, а среле даже без нагрузки не работает? Обязательно ответьте на это. И если работает, то сделайте как Вам советовали - подключите лампу накаливания в качестве нагрузки и (вопрос №2) - напишите как с ней
В любом случае, давайте подтвердим или исключим ещё одну гипотезу: возможно, в момент включения реле (а оно жрёт 70мА) происходит скачок напряжения, который убивает Ваш контроллер (вот тут бы осциллограф! Я Вам уже написал совсем недорогой полуигрушечный, но очень бы выручил - подумайте!). Попробуйте поставить достаточно большой (1000-10000 μF) конденсатор между Vcc и GND модуля реле (только полярность не перепутайте).
Жду результата эксперимента и ответов на вопросы №№1-2 выше.
Спасибо за помощь.
Всё верно, реле питаю от ардуинки.
По второму вопросу не совсем верно. Если в реле не подключать провода (физически в клемы реле) вентилятора. то всё таботает, реле щёлкает согласно программе. Питания точно хватат.
Проблема именно появляется в момент втыкания проводов вентилятора в клемы реле (хотя как я понимаю это же гальванически развязаная система).
Лампу подключу вечером, завтра отсчитаюсь.
Осцилограф заказал, но почта россии мсит не быстро)))
Если с лампочкой не прокатит (тоже будет сума сходить). попробую поставить конденсатор. Опять же отчёт только завтра.
Всем спасибо за советы.
У самого стоит что-то подобное в ванной. Намучался я с этим щелкающим реле.
Проблема в том, что как раз таки "на коленке" всё работает, а с нагрузкой нет. Как я понял проблема вот в чем: в момент включения/отключения реле между контактами проскакивает искра, которая создает помеху. У меня так NRF24 зависал и намертво вешал ардуину за собой. Как решение можно использовать твердотельные реле или попробовать физически отвести МК от реле подальше(да и от вентилятора тоже не помешало бы, т.к. он сам по себе создает относительные помехи)
Всем дорый день.
Попробывал с лампочкой (60 ват, накаливания), история один в один - ардуинка виснет.
Конденсатор?
Конденсатор?
К сожалению не успел, слишком поздно приехал((((
Поскольку осцилографа нет - попробуйте развязать питание Arduino и платы реле. У контроллера и реле земляные провода обьедините. контроллер питайте от одного 5в блока питания. Плату реле от другого блока питания. на 5в. Вывод +5в отдельных блоков питания между собой не соединять. Так не должно быть влияния реле на контроллер. В качестве блоков питания лучше использовать конечно не ноутбук, а две зарядки от телефона.