24 февраля 2022 года в 5 утра, без объявления войны, россия напала на Украину.

Они пришли "освобождать народ от нацистов и националистов".
С этого момента наша жизнь изменилась на "до" и "после".
Нас освобождают от наших домов, от наших любимых, от наших родителей и от наших детей....
Тут я не буду никого агитировать или переубеждать, разумный человек найдёт всю информацию
в интернете, а для зомби никакие доводы и факты не послужат аргументом.

Я не умею много писать, да и без мата тут сложно что-то написать.
Поэтому выражу все мои чувства одним фото.

«Спасибо дедушка путин за счастливое детство и мое освобождение». ©

Дополню словами уважаемого человека, широко известного в узких кругах:
тут путин не виноват, не он нажал на кнопку сброса,
- виноват пилот, который нажал на кнопку сброса, мог промахнуться. виноваты жена/мать/брат/друг пилота, которые не позвонили ему, и не сказали "нет войне",
- виноват тот, кто отдал приказ, и виноваты его жена/мать/брат/друг,
- виноват тот, кто цеплял бомбу, потому что он мог её обезвредить, "ну бывает, не сработала",
- виноват кладовщик, виноват водитель, который перевозил эту бомбу. виноваты жена...и т.д., потому что не позвонили и не сказали "нет войне, не вези бомбы",
- виноваты все журналисты оркостана, потому что они врут,
- виноваты недограждане, потому что не сказали журналистам "не врите",
- виноваты все... все 160 миллионов,
- а те 2, 3, 5 тысяч, которые вышли, и которых запаковали, это даже не десятая процента, это погрешность... случайно оказавшиеся в мордоре люди. ©

PS: За несколько часов до вторжения был атакован и взломан крупный интернет хостинг в Киеве, где и размещался мой сайт. Только 16 марта отважным админам удалось частично восстановить работу хостинга. Далеко не все сайты выжили, т.к. были повреждены даже бэкапы.
Нет, нет, я не жалуюсь, нет. В цифровом мире нет ничего ценного, материального...


Due to periodic DDoS attacks, the forum may not be available.

Контроллер насоса. Прошу помощи!

Здесь только проекты на ATmega
Post Reply
astron
Частенько бываю
Posts: 32
Joined: 10 Apr 2017 00:22

Контроллер насоса. Прошу помощи!

Post by astron »

Доброго времени суток всем!
Однажды мне уже помогли отзывчивые люди на этом форуме, вынужден снова обратиться с просьбой о помощи( Имеется простой контроллер работы насоса на участке, собранный мной на дискретной рассыпухе, но в силу его невысокой надежности, хотелось бы перенести его функционал на МК. На паре других форумов мою просьбу помочь проигнорили, либо написали что-то из серии "напиши сам", но к сожалению в программировании не силён. Чуть-чуть знаю только ассемблер для АВР "со словарём" и имею общее представление о архитектуре этих МК. Ниже постараюсь как можно подробнее и доступнее написать что мне хотелось бы увидеть. И да, готов сделать автору прошивки материальное пожертвование в разумных пределах, на халяву не рассчитываю)

Небольшая преамбула: что, почему и зачем. Если не интересно, этот абзац можно пропустить)

Имеется приусадебный участок на болотистой почве. Ранее воду для полива брали в протекающем по границе ручье, но пару лет назад его перекрыли выше по течению, и пришлось задумываться о бурении скважины. Так как в силу расположения, загнать на участок тяжёлую технику нереально, пришлось бурить скважину вручную, самостоятельно. Вдвоём с товарищем смогли забуриться всего на 5 метров, ниже идёт зыбун, который без обсадной трубы и спец. оборудования мы пробить не смогли. В итоге скважина получилась хорошо отдающей воду, но мелкой. Как следствие, опущенный в неё насос "выхлёбывает" воду до дна минут за 10, после чего необходимо подождать ещё 5-10 минут чтобы она вновь наполнилась. Для нормального водоснабжения участка, сварил и поставил ёмкость для воды на две тонны, из которой уже самотёком идёт питание всего участка. Но дёргать туда-сюда насос при каждом наливе бочки несколько напрягает, поэтому мной на рассыпухе был собран контроллер для управления насосом, который и обеспечивал необходимый режим работы с выдерживанием пауз и обратной связью для контроля налива. Сперва всё было замечательно, но спустя полтора сезона контроллер начал ерундить, а потом и вовсе вышел из строя. Расследование показало, что из-за колебаний температуры и влажности "плывут" параметры временнЫх пауз (они у меня реализованы на 555таймерах), кроме того, возникает коррозия на подвижных элементах, таких как контакты кнопок и потенциометры. Покрытие платы лаком не помогло решить проблему полностью. Если кнопки ещё можно сделать герметично, то движки переменных резисторов загерметизировать в бытовых условиях довольно сложно. Так возникла мысль перевести весь контроллер с рассыпухи на МК, по идее для алгоритма его работы какой-нибудь Меги8 должно хватить за глаза, плюс можно будет добавить несколько фишек, повышающих удобство пользования.

Собственно об устройстве и периферии.

Для управления и контроля используются следующие линии:
Сигнал от поплавкового датчика уровня воды. 1 - бак заполнен под завязку, 0 - можно лить ещё.
Сигнал от датчика потока воды. Меандр, с частотой, пропорциональной скорости потока жидкости в трубе. А ля компьютерный кулер с тремя проводами. Меандр есть - вода течёт. Меандра нет или он ниже некоего порогового значения - в трубе сухо.
Сигналы от кнопок "Старт/стоп", "Уст. времени", + и - для управления самим контроллером.
Выходы на два семисегментных индикатора для отображения времени паузы между запусками насоса в минутах, редактирования этой паузы и т. п.
Выход на реле, включающее насос. 1 - включаем мотор, 0 - выключаем
Выходы на индикаторные светодиоды "Работа", "Ошибка" и "Бак полон".

Алгоритм работы. Ниже приложу свое кривое творение в редакторе блок схем. Да, знаю что не по госту и выглядит страшно, но нарисовал как умел, просьба понять и простить) Плюс программа кривовата, прямо скажем. На рисунке забыл добавить одно условие для проверки, ниже об этом напишу.
алгоритм2.jpg
Сперва коротко и простыми словами. При попытке запустить насос проверяем, не заполнен ли бак, и если нет, то пробуем стартовать. Если после старта выясняется, что воды в скважине нет, пробуем ещё два раза через некоторое время, после чего прекращаем попытки и выдаём ошибку. Если вода есть, качаем её, пока она не закончится, затем делаем паузу, после паузы пытаемся качать снова и так по кругу до тех пор, пока либо бак не заполнится, либо вода в скважине не кончится совсем (или что-то сломается), либо юзер не отдаст принудительный приказ "Отставить!")

Теперь более развёрнуто и нудно) После подачи питания инициализируем периферию, обнуляем всё что нужно и уходим в бесконечный цикл. В цикле опрашиваем поплавковый датчик и кнопки "Старт/стоп" и "Уст. времени". Если от датчика приходит единица, зажигаем светодиод "Бак полон", если ноль - этот светодиод гасим.
Если была нажата кнопка "Уст. времени", переходим в режим задания продолжительности паузы между включениями насоса. Забираем из eeprom прошлое значение (если есть) и выводим на семисегментный индикатор в виде мигающего двухзначного числа. Пауза задается в целых числах минут от 5 до 30 с шагом в 1 минуту. При отсутствии нажатий кнопок в течение 5 секунд или повторном нажатии кнопки "Уст. времени", контроллер возвращается в режим ожидания, при этом новое значение паузы записывается в eeprom. Перейти в режим установки времени если насос уже запущен в автоматическом режиме нельзя.
Если была нажата кнопка "Старт/стоп", пытаемся перейти в режим автоматической работы. Проверяем условие заполненности бака, если он полон (с датчика приходит единица), то вылетаем обратно в режим ожидания, если не полон идём дальше. В алгоритме предусмотрена индикация ошибки работы контроллера при большом количестве неудачных запусков и прерывание его работы. Для этого вводится программный счётчик неудачных запусков, который обнуляется сразу после "запускающего" нажатия кнопки "Старт/стоп". Также здесь же обнуляется флаг "Ошибка". Перед включением насоса проверяем этот счётчик на переполнение больше трёх, и если таковое имеется, зажигаем светодиод "Ошибка" и вываливаемся в режим ожидания. Если же счётчик не переполнен, включаем насос одновременно зажигая светодиод "Работа", выдерживаем паузу около трех секунд для того, чтобы насос раскрутился и вода (если она есть) достигла турбинки датчика потока воды. Далее проверяем, имеется ли меандр на датчике потока воды. Если его нет или частота слишком низкая, значит либо в скважине нет воды, либо есть повреждение какого-то из узлов системы. *Тут надо отметить, что я пока не могу сказать какая именно частота импульсов появляется на выходе датчика при нормальной работе насоса, так как в старом контроллере я контролировал наличие потока аналоговым способом: ставил РЦ-цепочку на выход датчика, а с неё заводил получившийся аналоговый сигнал на вход компаратора с гистерезисом и регулировкой порога срабатывания, соответственно выставляя оптимальный порог на глаз. На выходе получался логический сигнал "есть вода - нет воды" Надо будет собрать стенд и измерить точную частоту осциллографом. Хотя не проблема прикрутить такую же схемку к обычному входу МК для упрощения программы* Эта ситуация определяется как неудачный запуск. Выключаем насос, одновременно погасив светодиод "Работа", инкрементируем счётчик неудачных запусков и выжидаем паузу, продолжительность которой мы выставили в разделе установки времени. При этом на сегментном индикаторе показываются убывающие цифры минут. По достижению нуля возвращаемся в точку перед проверкой счётчика неудачных запусков. Для наглядности см. картинку с алгоритмом.
Если же запуск прошёл удачно, т. е. на выходе датчика потока воды появляется меандр нужной частоты, начинаем крутиться в цикле, одновременно отслеживая три условия: 1) Не нажата ли кнопка "Старт/стоп", т. е. нет ли попытки остановить программу автоматического налива принудительно. Если да, то вырубаем насос и светодиод "Работа" и уходим в режим ожидания. 2) Не поступил ли сигнал единицы с датчика переполнения бака. Если поступил, также вырубаем насос и уходим в режим ожидания. 3) Не снизилась ли частота меандра с датчика потока воды ниже порогового значения, т. е не осушили ли мы скважину в процессе работы насоса. Если да, то вырубаем насос и выжидаем паузу, как это описано в предыдущем абзаце. Затем возвращаемся в точку программы перед проверкой счётчика неудачных запусков. Конечно в алгоритме не описаны разные мелочи вроде программного антидребезга кнопок и датчиков и т. п. На самом деле болтовни здесь больше, чем непосредственно алгоритма работы)
Вот такая "портянка" получилась) Прошу прощения за много букв. Буду очень благодарен, если кто-то из форумчан поможет мне с реализацией кода для МК. Думаю, данный контроллер насоса мог бы пригодиться не только мне, но и другим людям, оказавшимся в сходной ситуации. Спасибо, что прочитали)
propell_ant
Живу тут
Posts: 490
Joined: 03 Jun 2014 09:22

Re: Контроллер насоса. Прошу помощи!

Post by propell_ant »

Если заменить кнопки на емкостной сенсор, а переменный резистор померить и заменить на постоянный, то остается только проблема с "уплывающим" временем задержки. И с этой проблемой тоже можно побороться, но понадобится ваша схема на 555 с номиналами.
Я использую емкостные сенсоры на контроллере TTP223 - на односторонней плате делается прямоугольник в пару кв сантиметров, контроллер при прикосновении к плате выдает логическую 1. Очень удобно. Плату ставлю внутри пластмассового корпуса, а она реагирует на прикосновения снаружи.
astron
Частенько бываю
Posts: 32
Joined: 10 Apr 2017 00:22

Re: Контроллер насоса. Прошу помощи!

Post by astron »

Переменный резистор заменить на постоянный не выйдет, у нас довольно сильно скачет уровень грунтовых вод, поэтому каждый сезон приходится выставлять интервалы иногда по нескольку раз. Возможность удобной регулировки в любой момент должна сохраняться
propell_ant
Живу тут
Posts: 490
Joined: 03 Jun 2014 09:22

Re: Контроллер насоса. Прошу помощи!

Post by propell_ant »

Получается два сигнала на входе -
1. меандр или напряжение пропорциональное частоте меандра. И то и другое показывает скорость потока в попугаях.
2. сигнал от датчика переполнения бака

кнопка стоп на самом деле может располагаться на одной линии с датчиком переполнения - для контроллера это одинаковая команда безусловного прекращения работы насоса.

Если требуется всего два входа, то можно взять за основу термостат хардлока на меге8 с кварцем.
Настройки параметров в термостате уже есть и работают хорошо, это добрая половина вашей блок-схемы.
Аналоговый сигнал от датчика потока можно измерить мегой и сравнить с пороговым значением. Порог настраиваемый, с гистерезисом - этим решается вопрос с попугаями, но придется выводить на дисплей измеряемое значение, видимо в десятых долях вольта.
Как вам такой вариант?
Сразу предупреждаю у меня времени на такой проект еще долго не появится.
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

Re: Контроллер насоса. Прошу помощи!

Post by IYra »

propell_ant wrote:Получается два сигнала на входе -
1. меандр или напряжение пропорциональное частоте меандра. И то и другое показывает скорость потока в попугаях.
2. сигнал от датчика переполнения бака

кнопка стоп на самом деле может располагаться на одной линии с датчиком переполнения - для контроллера это одинаковая команда безусловного прекращения работы насоса.

Если требуется всего два входа, то можно взять за основу термостат хардлока на меге8 с кварцем.
Могу заняться
astron
Частенько бываю
Posts: 32
Joined: 10 Apr 2017 00:22

Re: Контроллер насоса. Прошу помощи!

Post by astron »

propell_ant, IYra, было бы здорово попробовать. До начала сезона не смогу проверить прибор в боевых условиях по понятным причинам, но обкатать его на макетке с помощью кнопок и генератора импульсов на той же 555й можно запросто)

Добавлено спустя 11 минут 22 секунды:
propell_ant wrote:кнопка стоп на самом деле может располагаться на одной линии с датчиком переполнения - для контроллера это одинаковая команда безусловного прекращения работы насоса.
Можно конечно, но по задумке кнопка "Старт/стоп" одна, т. е. она же запускает насос и она же останавливает. Имхо, так проще, да и входы экономятся. Поплавковый датчик это уже своеобразный "ручник", если он в активном состоянии, то любые попытки нажатия "Старт/стоп" просто игнорируются.
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

Re: Контроллер насоса. Прошу помощи!

Post by IYra »

astron wrote:было бы здорово попробовать. До начала сезона не смогу проверить прибор в боевых условиях по понятным причинам, но обкатать его на макетке с помощью кнопок и генератора импульсов на той же 555й можно запросто)
Вот набросал в первом приближении. Напор воды отслеживается по напряжению(0-5в / 0-1023).
#define LEVEL 500 - то есть если напряжение на входе < 2.5v -воды нет
В Протеусе вроде все понятно по выводам
Attachments
Motor.rar
(30.39 KiB) Downloaded 188 times
astron
Частенько бываю
Posts: 32
Joined: 10 Apr 2017 00:22

Re: Контроллер насоса. Прошу помощи!

Post by astron »

Скачал, проверил в симуляторе. Есть пара моментов, требующих исправления. Причем это я сам недоглядел, когда составлял алгоритм.
Хотелось бы, чтобы во время отсчёта паузы была возможность принудительно выйти в режим ожидания нажатием клавиши "Старт/стоп", не дожидаясь пока таймер дотикает до нуля.
Сейчас реакция на её нажатие в этот период работы программы весьма странная: то таймер опять начинает отсчёт с начала, то просто отсутствует реакция на нажатие кнопки. Кстати, с кнопкой "Уст. времени" при отсчёте времени паузы та же история. То нет реакции на нажатие, а то вдруг включается режим редактирования времени, хотя когда контроллер находится не в режиме ожидания (два прочерка) а в режиме налива, зайти в редактирование времени по идее не должно быть возможности. Скорее всего, всё вышеперечисленное есть глюк протеуса. На днях постараюсь собрать схему на стенде и погонять на реальном железе.
Также во время отсчёта паузы отсутствует реакция на показания поплавкового датчика. То есть светодиод "бак полон" зажигается конечно, но отсчёт идёт дальше как ни в чём ни бывало. Ситуация нештатная, но вдруг в бак дольют воду вручную до полной, пока там таймер тикает, и во включении насоса отпадёт необходимость. Желательно добавить выход в режим ожидания при появлении сигнала "бак полон".
Всё-таки хотелось бы иметь отдельный светодиод "Ошибка". Возможно, на него повешу пищалку с генератором или какой-нибудь другой исполнительный механизм. У нас ведь остались ещё свободные ноги PC2-PC5, может на какую-то из них повесить этот светодиод?
В остальном вся программа работает отлично!
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

Re: Контроллер насоса. Прошу помощи!

Post by IYra »

astron wrote: 1.
Хотелось бы, чтобы во время отсчёта паузы была возможность принудительно выйти в режим ожидания нажатием клавиши "Старт/стоп", не дожидаясь пока таймер дотикает до нуля.
2.
Желательно добавить выход в режим ожидания при появлении сигнала "бак полон".
3.
Всё-таки хотелось бы иметь отдельный светодиод "Ошибка". Возможно, на него повешу пищалку с генератором или какой-нибудь другой исполнительный механизм. У нас ведь остались ещё свободные ноги PC2-PC5, может на какую-то из них повесить этот светодиод?
Поправил.
В Протеусе используется модель Mega8 в TQFP корпусе (32 вывода) Частота 8 Мгц внутренний генератор (без кварца)
Это так для уточнения
Attachments
Motor1.rar
(30.71 KiB) Downloaded 186 times
propell_ant
Живу тут
Posts: 490
Joined: 03 Jun 2014 09:22

Re: Контроллер насоса. Прошу помощи!

Post by propell_ant »

astron wrote:Ситуация нештатная, но вдруг в бак дольют воду вручную до полной, пока там таймер тикает
Я всё ждал подобного замечания, если бы я делал такую систему себе на дачу, то сигнал с датчика переполнения я бы продублировал на реле насоса - чтобы насос при переполненном баке вообще не смог включиться. Контроллер штука темная, бывает и зависает, поди знай, в каком состоянии будут управляющие выходы.
astron
Частенько бываю
Posts: 32
Joined: 10 Apr 2017 00:22

Re: Контроллер насоса. Прошу помощи!

Post by astron »

IYra спасибо, вечером проверю!
propell_ant ну да, такая система защиты была в прошлой версии контроллера. Любые условия, останавливающие мотор, принудительно просаживали в ноль логическую линию управления реле запуска.
astron
Частенько бываю
Posts: 32
Joined: 10 Apr 2017 00:22

Re: Контроллер насоса. Прошу помощи!

Post by astron »

Уважаемый IYra, я пару дней назад отправил Вам личное сообщение по поводу вознаграждения за помощь, ответа пока так и не получил :oops:
"Воплощать в металле" пока не начал - свободного времени мало. Через полмесяца отпуск, скорее всего тогда и займусь. Как сделаю, выложу сюда фото/видеоматериалы
Post Reply