Проект двухступенчатого водоснабжения загородного дома
- Войдите на сайт для отправки комментариев
Всем привет.
Делаю водоснабжение для своего дома в деревне. Добрался до автоматики, ну и остановился на ардуинке. Никогда с ней раньше не имел дела. Заказал на алиэкспрессе, помигал дидиком :)
Вот добрался до описания проекта, и надеюсь на ваши коментарии.
Проще всего объяснить на видео.
Вода забирается из скважины погружным насосом (дебет скважины неограничен) и подается в накопительную кубовую емкость. Из накопителя насосная станция раздает воду по дому. В емкости 3 горизонтальных датчика уровня. Нижний - включение аварийной сигнализации (ай-яй че-то не работает, вода из скважины не качается). В принципе, в насосной станции есть датчик сухого хода, по-этому никакой автоматики на срабатывания нижнего датчика, кроме оповещения делать не планирую.
Скваженый насос накачивает воду, замыкается верхний датчик. Насос отключатся. На всякий случай наверху поставлю два вертикальных датчика (два - чтоб наверняка :) ) в случае перелива, ну и перелив физический тоже сделаю.
Открыли кран, насосная станция начала забирать воду из емкости. Когда уровень ушел ниже среднего датчика в емкости, включается скваженый насос.
Теперь самое сложное. Специфика скважины - если часа 3 из скважины не выкачивали воду, то первые минут 15 пойдет мергель. Так что нужно эту воду слить. Перед емкостью стоит трехходовой клапан. Если по таймеру с последнего включения скваженного насоса прошло более 3-х часов, то вода минут 15 будет сливаться на улицу в накопительный пруд в конце участка. Уровень среднего датчика в емкости надо будет так подобрать, чтобы при максимальном расходе потребителем воды хватило как раз на эти 15 минут слива.
В случае засора (замерзл, засорилось, улитки наползли, танки подъехали) трубы уличного слива поставлю на трубу реле давления, шоб не прорвало где трубу (хотя скорее насос просто сгорит, он простенький в скважине). Но реле, мне кажтся, смысла нет включать в систему - просто провод к насосу пропустить через реле.
Заказал на алиэкспрессе вертикальные, а на eBay горизонтальный датчики, уже в наличии ардуинка леонардо.
Нужно будет задействовать реле для включения скваженного насоса ~220в и трехходового клапана ~12 в, обработать замыкание 5 датчиков...
Достаточно будет платы леонардо или лучше какую-нить платку расширения докупить? Паяльником работать умею, но вот что-то плату рассчитать самостоятельно не смогу. Хотя по готовой схеме и спаяю.
Буду признателен за вопросы и коментарии.
еще забыл, конечно дисплейчик прикручу, куда без него :), возможность принудительного перехода в режим слива на улицу, регулировки таймеров включения... вроде пока все
с программированием дружил в ввиде долго и увлеченного терзания Delphi под свои мелкие домашние нужды.
Так, с реле вроде вот варианты
http://www.electronshik.ru/item/2-channel-relay-shield-module-for-arduino-1135593
http://www.electronshik.ru/item/4-channel-5v-relay-module-for-arduino-1135591
Понадобятся, наверняка, часы
http://amperka.ru/product/troyka-rtc
Дисплей
http://www.electronshik.ru/item/lcd128x64-shield-for-arduino-1021358 (дороже, но есть джойстик уже)
или http://amperka.ru/product/graphic-lcd-128x64 но тогда нужна еще и клава http://amperka.ru/product/joystick-module
ну и может вот это?
http://amperka.ru/product/arduino-troyka-shield
Все правильно планируете
оствлось не понятно чем будете трехходовой вентиль переключать
купите ещё несколько макетных плат по пайку. Как минимум надо будет собрать защиту входов ардуину, тех входов, которые будут к датчикам подключаться, провода там довольно длинные будут, нужна как минимум защита от ESD. В самом идеальном варианте поставить tvs диоды на 5.1в.
Реле для включения насоса надо подбирать с большим запасом тока, лучше сделать в две ступени - реле на ардуиновском шилде, этим реле включать электромагнитный пускатель (контактор) который рассчитан на нагрузку AC3 - это высоко ндуктивная нагрузка типа моторов. Важно понимать что реле на ардуино шилде маркированные как 10 ампер, на самом деле 10а они могут коммутировать только неиндуктивная нагрузка типа нагревателей. А индуктивную нагрузку надо считать поделив на 5, а то и 10.
Привет, axill
Спасибо за ответ. Трехходовой вентиль покупал у китайцев - он идет со встроенным электро-приводом, плюс к тому есть два концевика - замыкаются при достижении крайних положений, что можно будет использовать для чего-нить :)
У электропривода 1А и 12 вольт переменного тока. В принципе для этого релешки на ардуиновской шилде должно хватить?
Про релешки и защиту понял, в деталях буду продумывать продумать чуть позже, сейчас хочу определиться с основным железом вокруг ардуинки, написать алгорит логики работы. Немного непривычно, так как ООП сильно послабляет (кинул кнопку, написал обработчик событий :) ), и линейное программирование мне непривычно.
Макетка какая-то валяется, думаю ее хватит. Да и текстолит у меня есть и платки я травил, напечатав на принетере, было дело.
Длина проводов где-то метров по 5, навреное будет от емкости с датчиками до блока управления.
Вечером попробую описать алгоритм блоками, выложу на рассмотрение.
На электропривод реле хватит, но с такими параметрами проще мосфетом управлять, дольше прослужит
а контактор я рекомендовал для пуска насоса в скважине
5 метров до датчиков довольно далеко, защиту от наводок ставить уже крайне желательно. Самый простой способ - поставить оптопару на каждый датчик. Советую нарисовать хотя бы простенькую электрическую схему. У меня с подобной задачей справилась нана. Правда код проверить не успел - запустил уже осенью. Теперь пока следующий поливной сезон не начнется не проверю. Но у меня дачный домик.
На электропривод реле хватит, но с такими параметрами проще мосфетом управлять, дольше прослужит а контактор я рекомендовал для пуска насоса в скважине
5 метров до датчиков довольно далеко, защиту от наводок ставить уже крайне желательно. Самый простой способ - поставить оптопару на каждый датчик. Советую нарисовать хотя бы простенькую электрическую схему. У меня с подобной задачей справилась нана.
не понял про оптопару? типа поплавковый выключатель включает/выключает "лампочку"?
леонардо у меня просто уже куплен :)
Да, все верно. Поплавковый выключатель (в вашем случае скорее всего геркон управляемый магнитом) включается в цепь любого разумного напряжения (например у меня 12В) и включает светодиод оптопары (например PC817), не забудьте только токоограничивающий резистор. Светодиод оптопары в свою очередь открывает транзистор и сигнал идет на контроллер.
не понял про оптопару? типа поплавковый выключатель включает/выключает "лампочку"?
при сильных наводках и помехах один из способов борьбы с ними это использование оптопары. Ваш концевой датчик в бочке замыкает не вход ардуины, а вход оптопары, а уже с выхода оптопары сигнал подается на ардуину. В условиях сильных помех и промышленных производств этот способ часто применяется
но в вашем случае я не думаю, что он необходим. Достаточно поставить RC цепочку на входе для "уничтожения" импульсных наводок (против ложных срабатываний) и поставить или два диода (анод на GND и катод на вход ардуино + анод на вход ардуино и катод на +5В) или TVS (между входом и GND) для защиты от ESD
схему и правда стоит нарисовать, частично блочную (ардуино) частично детальную, например используя программу fritzing
понял, спасибо
про оптопару мне тоже показалось как-то слишком глобально...
вечером засяду за схемы
Всем привет :)
Вы будете ржать, но за два часа я только понял, как кнопки подключить, чтобы ногу не спалить.
Теперь вот вроде с реле через мосфет разобрался (в общих чертах)
группа из трех кнопок - поплавковые выключатели уровня.
группа из двух кнопок - верхний выключатель перелива продублированный двумя поплавками на всякий случай :)
сейчас просто набросал первичный прикид без наворотов от наводок
не все в Fritzing мне понятно, в особенности, как на макетку источники питания ставить произвольные и землю, ну и каша на принципиальной схеме и печатной плате меня вообще у шок повергает :)
ну да ладно, утро вечера мудренее, завтра надо продолжать копать траншею, у реальности такая особенность - на картинках пруд, оно конечно красиво, а на ландшафте усе лопатой да лопатой
Так, на всякий случай - кнопки аварийного перелива надо не последовательно ставить, а в параллель, вы ведь повышаете, а не понижаете надежность.
По фритзингу. Делайте поиск (значек лупы) элемента "battery". Там их целая куча находится.
про батарейки спасибо, я вроде поиск нашел, но не додумался так батарейки поискать :)
но это не совсем то, чего хотелось - мне нужно поставить допустим на макетку блок питания +12v, никак не соображу, как это может называться по-англицки
а про кнопки, разве у меня они не так подключены?
Вот на этой схеме правильно, а по верхней так одна кнопка для красоты воткнута.
Кнопку лучше на землю замыкать, а резистор наоборот на +5в. Будет более устойчиво от помех. Это связанном с ассиметричностью логических уровней относительно шин питания
блру питания по англитски power supply, хотя я не проверял есть он там или нет. Насколько помню в fritzing кроме схематичных в виде рисунка схем есть и классические схемы с символами, там источник питания можно обозначить разъёмом и надписями
не пойму, почему вы так считаете?
вот я сделал микс на картинке, чтобы нагляднее объяснить
на основной картинке я кликнул на левый контакт, подсветилась вся группа, которая в соединении. т.е., через резистор на +5 (как посоветовал axill). Теперь кликаем на правые контакты (сделал вставку в черном прямоугольнике)- высвечивается линия GND. Обе кнопки стоят правыми контактами на +5, левыми на земле. В блоке "инстпектор" видно, что при нормальном расположении элемента на макетке два левых контакта соеденины, и два правых. Т.е. перемыкание контактов происходит между "право" и "лево", так?
Или я тогда вообще не понимаю, как на этой макетке чего выткается :)
Кнопку лучше на землю замыкать, а резистор наоборот на +5в. Будет более устойчиво от помех. Это связанном с ассиметричностью логических уровней относительно шин питания
Но ничего, я разберусь :)
axill, а включение мосфета и реле я правильно сделал?
У вас просто реле или релейный шилд?
На схеме в fritzing я пытался разобраться, как увязывать мосфет и реле. А вообще думал шилд использовать.
Например такой http://amperka.ru/product/troyka-relay
Через него я думал включать скваженый насос. У него мощность 1кВт и максимальный ток 4,6А
Стоит ли добавить мосфет перед этим шилдом или в принципе имеющейся на шилде обвязки хватит?
А вот через это http://amperka.ru/product/troyka-mosfet думал уже включать электро-привод трехходового клапана. У него 1А и 12 постоянного тока. При подаче напряжения вентиль открывается, заряжаются кондеры. Когда напряжение снимается, за счет кондеров вентиль закрывается обратно.
Кстати, если есть другие шилды для таких задач, буду признателен ссылке
У меня в физической наличности пока только леонардо (ну и насосы с вентилем :)
Остальное буду заказывать, как определюсь со схемой.
Максимальный ток = ток.рабочий/cos фи так что максимальный у вас скорее 7,7А. А включать через шилдовые реле киловаттные реактивные нагрузки, искать себе неприятностей. Быстрее уж управлять контактором, а с него насосом.
Релейный модуль по вашей ссылке имеет транзистор, поэтому его можно напрямую к ардуино цеплять. Правда стоит что то дорого, посмотрите для альтернативы chipster.ru
Выше уже писал, скважинный насос лучше через цепочку реле-шилд -> контактор запускать.
Мосфет я вам рекомендовал вместо реле для трехходового вентиля, но и реле нормально
кажется немного проясняется, пойду писать блок-схему логики управления
Даа, за плату размером 2*2см просят аж целых 250р :) остальное как раз 40р оставшиеся в рознице стоит.
А по сути вопроса - контактор можно и такой использовать, а шилд релейный возьмите лучше на 2 реле - меньше проводов будет. Или на 2 симистора.
И я бы не советовал все-таки пренебрегать опторазвязкой. Вы ведь не машинку на радиоуправлении делаете. Тем более PC817 + резистор на 1к будет стоить не намного дороже того что предлагают наворотить из диода + резистора + конденсатора.
зы. сравните 2 позиции - одна с опторазвязкой, другая чисто релейная, разница в цене 8р:
http://chipster.ru/catalog/arduino-and-modules/relay-modules/2289.html
http://chipster.ru/catalog/arduino-and-modules/relay-modules/3800.html
да я, честно говоря, начитавшись описания траблов при подключении силовой нагрузки, тоже склоняюсь к опторазвязке. У меня все равно будет блок питания для трехходового вентиля вкелючен постоянно. Он на 12,5в и 1А, за глаза.
И я так понимаю, землю ардуинки ни в коем случае не соединять с землей остальных плат? (я не имею ввиду шилды)
Почему нельзя? Из-за того что опторазвязка будет нарушена? Может я и не прав, но у меня все питает один БП, соответственно земля общая.
По контакторам смотрите какой ток они обеспечивают для нагрузки типа AC3 - это индуктивная нагрузка типа моторов. На сайте ИЭК для каждой серии контакторов есть таблички. Вот эти компактные как у вас на фото AC3 тянут с большим дисконтом, насколько помню. Могу ошибаться, смотрел несколько месяцев назад
мосфет больше прослужит, но не хочется вам советовать пайку на начальной стадии освоения ардуины. Выше вы его не правильно подключили, но это сейчас и не важно, начните с релейного шилда
ОК, axill, начну с шилда. Возьму шилд на две релюшки. Одно на контактор 220в, другое на вентиль 12в
про контактор тоже понял, посмотрю детали
RC фильтр на питании должен быть, а лучше еще диодами двумя защитить до стабилизатора.
Вы ведь не 12В будете в контроллер подавать, а 5В я так думаю. Зачем грузить встроенный стабилизатор?
Да, конечно, я буду подавать 5в. Речь шла о помехах и наводках. И если я правильно понял рекбус, то вы имеете ввиду, что от блока питания 5в на провод перед тем, как втыкать его в ардуинку, надо поставить RC фильтр. И вы сказали еще про два диода... Куда? Как? Вместе с RC? Если это отдельный блок питания, зачем на него такие навороты?
Диоды ставятся до преобразователя 12В -> 5В. Один защищает от переполюсовки, другой от импульсов. Можно поставить еще элемент замыкающий цепь при высоком напряжении (варистор кажется). Меня схема защиты уже раз спасла. Пришлось только поменять один конденсатор который стоял до защиты.
Диоды ставятся так: один в разрыв цепи на плюсе. Второй ставится перед первым от минуса к плюсу (так чтобы цепь замыкалась при обратном импульсе, правда в этом случае при переполюсовке можно перегрузить БП на 12В).
может глупость спрошу - а почему не использовать блок питания для ардуинки сразу на 5в? отдельный
Так, ну вот я сделал первый прикид по логике. Посмотрите, пожалуйста, может где что не увидел. Картинка (на облаке мыл.ру) + файлик в Pencil (там же).
И вот описалово текстовое.
похоже, схема сильно сложная, чтобы вникать?
или все так плохо, что даже и сказать нечего?
Состояния 2 и 3 можно объединить. Налив воды инициируется по замкнутому только нижнему датчику (состояние 5) и анализ среднего датчика нужно только для определения полемкости, непосредственно в чистом виде средний датчик не анализируется. Соответственно 4 состояние анализируется по замыканию верхнего датчика (нижний и средний не обязательно анализировать - а вдруг они отвалились и спровоцируется аварийная ситуация на ровном месте).
И не нужно при включении нажимать форс. Убегаетесь к пульту. Система должна сработать по событию. Включение и нет замкнутых/замкнут А1 и не авария - запускаем дренаж, наливаем емкость до А3. Кстати А3 советую перелить секунд 10 хотяб чтобы можно было определить точно работоспособность датчиков.
Схему если честно не осилил - глаза от нее в кучку. Слишком много пересекающихся линий. По описанию.
спасибо огромное, вечером внимательнее прочитаю ваше предложение
про схему - да, она действительно сложная к просмотру. А какие варианты (в смысле в чем и как планирвоать такую схему)?
Для удобства я достал Lazarus сделал эмулятор систмы, чтобы проверить работоспособность и правльность логики.
Снова всем добрый день. Как говорится, скоро сказка сказывается.
Потихоньку приходят мои посылочки с Китаю. Правда основная посылка с макетками, дисплейчиком и еще некоторыми мелочами где-то зависло у веселых мадьяр.
Пока суть да дело - запустил вчера водоснабжение в "ручном" режиме. Иду в котельную, ручками включаю трех-ходовой, жду, потом отключаю его, наполняю бочку. Практически все работает (немного подтекает резьба фильтра, но надеюсь сегодня пофиксю).
Разобрался со сдвиговым регистром и оптроном. Вроде запускаются, диодики мигают. Стал дальше продвигаться в моделировании схемы - и застрял. Короче вопрос такой:
Вот так все работает. А именно - кнопочку нажал, диодик загорелся и горит, пока второй раз не нажму. Теперь хочу вынести всю кухню в функцию.
Не работает :(
По выводу в порт вижу, что кнопки неверно распознаются. Первая распознается, вторая определяется, как первая. Третья вообще не определяется.
Я что-то не пойму... ХЕлп.
55-57 строка наверно номер 2 должно стоять
И не только :)
Действительно, обшибся, как это бывает: смотришь в упор и не видишь. Но кроме этого функция указывала директивно
ну и LOW соответственно.
Корче слегка причесал, теперь вот так. Все работает.
Теперь хочу запустить все это хозяйство через сдвиговый регистр 74HC595, чтоб на будущее не париться в добавках +led
Так, кажется заработало.
Я пробовал обойтись только switchState, но тогда глючило. Когда добавил проверку и установку flagS - стало работать. Почему - не вижу... Но по ощущению - это избыточно, но как сократить - не понимаю :(
Может еще что-то лишнее или слишком длинно?
Сам с обой веду беседу :)
Короче немного расширил код
Добавил для последнего диода мигание без использования delay. Для унификации решил в led_switching по любому устанавливать флаги "мигания".
Ну и потом уже жестко определяю, что это только для 4 диодика.
Все работает, но от кода ощущение какой-то коряватости...
Так, вот немного подумал и оптимизировал тему
Возникла странная ситуация - если загружаю скетч из Arduino IDE - то скетч работает криво (диоды не загораются, но в порт все пишется). Если выключить плату из USB и включить снова (или нажать reset) то скетч работает нормально. Шо це такэ?
P.S.
Сейчас вспомнил, после чего это могло произойти. Мне пришел китайский клон Arduino NANO, ну он конечно IDE-шкой не определялся. Закачал дрова специальные для него, установил - все пучком. NANO определяется и все в нее заливается. Но вот видимо что-то эти дрова добавили "необратимого", чего до этого не было...
и при этом еще странность заливаю скетч, открываю порт - в порт выводится все правильно (т.е. обработка нажатия кнопок), а вот диоды не загораются после перезагрузки - все ОК и то и другое работает...
Странно. теперь снова все работает после заливки скетча без перезагрузки :)
короче, вот что сейчас в наличии
Не нашел нормального шилда LCD с кнопками. Так что просто подписал подключение двух пинов шилда. Понятное дело, что эти монстрообразные кнопки представляют собой поплавковые выключатели. Первая кнопка специально инвертирована (по сравнению с остальными 3-мя)
Код написал, работает. Хочу немного причесать и вечерком выложу
шшшш.... сссс...пппп..ррррр..ууууу..ыыыыыыыыы короче я не знаю, что случилось - на скетч был непонятным образом удален с компа (понятно что как-то моими собственными руками), причем все архивные варианты тоже... :(
ну, зато лучше узнаю С++
Так и есть.... очень хорошо, что ты его удалил. Так писать нельзя.
Ты в каждом цикле опрашиваешь переключатели и выводишь в сдвиговый регистр. Реализация чтения переключателей это просто жесть: цикл от 2 до 5, что бы прочитать выводы 2-5. Теряюсь в догадках, как бы ты реализовал будь ноги не по порядку. На переключатели нужен антидребезг, опрашивать их достаточно раз в 50 миллисекунд, чаще нет смысла. Назначение сдвигового регистра для светодиодов мне не понятно, ног что ли не хватает? В регистр достаточно выводить только при изменении индикации, иначе у тебя светодиоды моргают с частотой десятки кГц. Есть осциллограф? Посмотри любопытства ради.
:)
жестко, но хорошо :)
а в чем ужас чтения выводов циклом? абстрактное "если бы" тут не катит, у меня же конкретный случай. если не так, то как?
очень помогло, если бы вы на конкретных примерах советовали. у меня уровень не такой высокий, чтобы намеки понимать
про частоту услышал, и правда что - часто - поправил (как мог)
регистр - да, ног не хватает, если посмотрите на картинку выше - подключил через регистр LCD и релешу - еле еле вобщем-то
ужосный код восстановил (почти) на всяк случай сохраню тут
Не знаю чем не устроило просто 4 чтения digitalRead() с каждой ноги. Объяви массив входов и по нему бегай. Например так:
не проще так:
ну и чисто так, для протокола спрошу, а в чем разница по сути?
и
в том, что выглядит аккуратнее? ведь в остальном по смыслу это одно и то же действие, только плюс еще один массив, так ведь?
у меня вот такой шилд