Насос, ардуино, реле, 2 геркона.
- Войдите на сайт для отправки комментариев
Чт, 27/03/2014 - 00:18
Всем доброго времени суток. Помогите начинающему.
Вообщем, случилось так, что нужно простое и срочное решение. Причем решение нужно не сегодня-завтра, а вчера.
Суть такова: есть геркон1 (Г1) и геркон2(Г2). Герконы на замыкание. Г1 - нижний уровень воды, Г2-верхний. Нужно выкачивать воду из ёмкости.
Нужно включать реле когда г1 и г2 замкнуты оба, затем г2 размыкается (реле остаётся включенным), затем г1 размыкается - реле выключается и по новой на цикл ожидания замкнутых г1+г2.
Всем доброго времени суток. Помогите начинающему.
Начинающего не видно.
Всем доброго времени суток. Помогите начинающему.
Вообщем, случилось так, что нужно простое и срочное решение. Причем решение нужно не сегодня-завтра, а вчера.
Суть такова: есть геркон1 (Г1) и геркон2(Г2). Герконы на замыкание. Г1 - нижний уровень воды, Г2-верхний. Нужно выкачивать воду из ёмкости.
Нужно включать реле когда г1 и г2 замкнуты оба, затем г2 размыкается (реле остаётся включенным), затем г1 размыкается - реле выключается и по новой на цикл ожидания замкнутых г1+г2.
как то так , но очень расточительно дуню для таких задач использовать...
а вообще прочитав тему , сами бы код написали :)
равно и намного понятнее:
Спасибо не знал, я тоже новичёк :)
Начинающего не видно.
Язык "С" пока новый для меня. Есть только опыт на бейсике и турбо-паскале.
как то так , но очень расточительно дуню для таких задач использовать...
Знаю. Надо на пару недель, потом разберу. Есть простые схемы без МК, но нет быстрого доступа к элементной базе.
Что получается в итоге....
равно и намного понятнее:
А можно было и просто:
Так как по умолчанию входы уже настроены на INPUT. Так что pinMode(INPUT,...), в данном(!) случае, не производят никакой полезной работы.
Но лично я предпочитаю, все-таки написать два лишних "ничего не делающих" pinMode. Что-бы явно было в коде видно какие пины используются и кто вход, а кто выход.
А INPUT_PULLUP - действительно вполне наглядно и соотвествует "официальной политике". Но есть одно но... в старых версиях оно не работает. Не компилится. Не помню точно с какой версии его ввели, но в 1.0 - еще не работает. А эта версия еще много у кого стоит.
Вообщем это все дело вкуса. Работать будут одинаково все три варианта. Но мое личное предпочтение: изначальный вариант zsm@nxt.ru . Покрайней мере пока, я стараюсь именно так писать pinMode/digitalWrite
Начинающего не видно.
Язык "С" пока новый для меня. Есть только опыт на бейсике и турбо-паскале.
Ну если ничего на нем не писать, то он навсегда новым останется. А эта задача - как раз идеальна для того что-бы попытатся написать "свои первые пару строк".
Начинающий подразумевает, что вы хоть что-то да начали. А от вас изначально небыло видно ни строчки кода, никаких попыток что-то начать делать. Поэтому я и сказал "начанающего не видно". Больше похоже на.... желающего что-бы за него все сделали.
А опыта турбо-паскаля - тут более чем достаточно. Значит знаете что такое переменная, что такое if.
С различиями синтаксиса, заглянув в справочник можно разобаратся от пары минут, до пары часов (это если нужно еще разобратся что такое входы/выходы арудины и т.п.).
Там (в паскале) у вам были BEGIN/END, а тут фигурные скобки. Там было IF (УСЛОВИЕ) THEN, а тут if (УСЛОВИЕ), там логические выражения собирались с помощью операторов AND и OR, а тут с помощью && и ||, там у вас оператор присваивания был ":=", а тут просто "=", там оператор "равно" был "=", а тут "==".
Вообще разница на простых задачах - ну минимально косметическая.
Так что если есть ЖЕЛАНИЕ, то можно разобартся. Ну врайнем случае накидать ПСЕВДОКОД на паскале. Оно даже короче и однозначней было-бы чем словами объяснять "что вы хотите". И намного проще понять любому програмеру.
Кстати, если у вас действительно есть опыт паскаля. То вы должны увидить, что преведенный выше код, не будет работать как вы хотели. Условие " затем г2 размыкается (реле остаётся включенным)" - не выполнится. Код "вырубит" реле, как только разомкнется второй геркон.
А от вас изначально небыло видно ни строчки кода, никаких попыток что-то начать делать. Поэтому я и сказал "начанающего не видно". Больше похоже на.... желающего что-бы за него все сделали.
Виноват... согласен. Знал как подключить реле и код ля него, а вот с кнопками....
Кстати, если у вас действительно есть опыт паскаля. То вы должны увидить, что преведенный выше код, не будет работать как вы хотели. Условие " затем г2 размыкается (реле остаётся включенным)" - не выполнится. Код "вырубит" реле, как только разомкнется второй геркон.
попробуемс..
Виноват... согласен. Знал как подключить реле и код ля него, а вот с кнопками....
А что с кнопками? С ArduinoIDE идут примеры работы с кнопками. В форуме программирование в шапке висит прикрепленная тема "в помощь новичку работа с кнопками.." (выше вам ссылку как раз на нее и дали. Читайте обязательно, хотя-бы начало).
P.S. Про вашиу "попытку...." чуть-чуть позже отвечу
ой, AND'а нет тут....
ой, AND'а нет тут....
Хм... а попробйте на паскале набросать. А то чуток сложно понять, где у вас пробой по логике, а где ошибка в синтаксисе.
И еще, "циклы" (если вы пытались его написать) - тут не нужны. Само loop() - оно уже бесконечно вызывается в цикле. Раз за разом. Считайте в уме что loop() уже запусщен в некоем бесконечном цикле:
Так что сама структура того что вам дал zsm - абсолютно верная. Ее менять не нужно. Два if-фа в loop и все.
Нужно только чуток подправить сами условия при котором срабатывают эти IF. Что-бы они соотвествовали вашей постановке задачи.
P.S. Кстати для первого IF-фа условие вы уже поправили верно, осталось поправить для второго... а остальное оставить как было у zsm
Хотя... блин... стоп.... Кажись я навел тень на плетень. Напраслину наговорил на код zsm.
Но я не виноват... это он запутал ;). У нас же герконы выдают LOW когда замыкаются, а HIGH когда разомкнуты. Обычно "инвертирование" Что-бы HIGH означало "включен" делают при чтении состояния кнопки. А он сделал "инвертирование" уже на выключении/выключении реле ;)
Щас... попробуем привести к "прямой логике" (и будем читать состояние герконов в переменные, что-бы лишние digitalRead не делать).
да, без внутреннего цикла, пока не разомкнется нижний - никак
зачем тут дуня????
может сделать так:
Вот как-то так.
Толкьо я тут переименовал val в releState (кстати val - была не объявлена, так что оно не могло скомпилится).
Вообщем IMHO так получается более "дословный перевод" условия задачи с "человеческого", на C++
зачем тут дуня????
может сделать так:
Да уж.... всё гиниальное просто. В наличии только шилд на 2 реле или старые релюхи на 220 в. Думаю, герконы вряд ли выдержат.
В шилд на in1 и in2 какое надо напряжение подавать для срабатывания?
Скетч опробую вечером..
у вас есть шилд на два реле, его вполне хватит... не больше не меньше...
Давайте разовьем эту тему, она актуальна.
Теперь следующий шаг - чтобы насос не работал на "сухую", т.е. нужно проследить каким-то образом, что вода качается. Кто, что может подсказать для этого?
Я заказал флоуметр, но, боюсь, он любитель кристальной воды, а в скважине вначале(да и не только) идет мутная.
ЗЫ: в скетче ошибка, поправьте:
20
if
(!gerk1 && !gerk2 ) {releState =
false
;}
// Выключаем когда ОБА разомкнуты
обычно в погружных насосах есть поплавки, т.е. если поплавок не плавает насос не работает
что-то типа такого:
Теперь следующий шаг - чтобы насос не работал на "сухую", т.е. нужно проследить каким-то образом, что вода качается. Кто, что может подсказать для этого?
1-2 промежуточных датчиков чтобы следить за падением/ростом уровня воды в ёмкости и предельные таймауты по ним выставить. Или общий таймаут между верхним и нижним .
Или следить за массой ёмкости, если это возможно.
обычно в погружных насосах есть поплавки, т.е. если поплавок не плавает насос не работает
что-то типа такого:
есть вариант "перемерзла или сорвало трубу"
Интересен вариант именно умного дома, а не умного насоса. В дальнейшем все это дело прикручивается к базе, чтобы можно было делать графики расхода воды и все с этим связанное.
Есть еще вариант на конце трубы сделать тот же поплавок, струя воды из шланга будет действовать на поплавок, а тот в свою очередь будет замыкать контакты, по этим данным можно судить, что вода идет.
Про таймеры не совсем актуально, насос сгореть может раньше, чем выйдет таймер.
зачем тут дуня????
может сделать так:
Так не интересно :)
" Зато дёшево, надежно и практично! Быстро сымаем гипс и смываемся!.."