Здраствуйте. Для включения насоса (откачка канализации) по двум датчикам (нижний и высокий уровень) сделал управление на микроконтролере по такой программе: Спойлер
Код:
#define OUT PB1 // выход на помпу #define butHIGH PB3 //датчик HIGH #define butLOW PB4 //датчика LOW #define butUSER PB2 //кнопка ручного режима #define LED PB0 //индикатор ручного режима
boolean B_HIGH, B_LOW, B_USER, MOTOR = 0; //unsigned long timer;
void loop() { B_HIGH = !digitalRead(butHIGH); // считать текущее положение датчика HIGH B_LOW = !digitalRead(butLOW); // считать текущее положение датчика LOW B_USER = digitalRead(butUSER); // считать текущее положение датчика USER delay(100); if(B_USER == false){ startPomp(); } else if (B_HIGH == false & B_LOW == false) { digitalWrite(OUT, HIGH); } else if (B_HIGH == true & B_LOW == true) { stopPomp(); } }
Но, как показала практика, периодически микроконтролер ложно срабатывает из-за внешних наводок. Думаю нужно сделать чтоб по таймеру (раз в 5 мин) проверял состояние датчиков. Вот переделал код, в протеусе работает, подскажите на ошибки. И еще, помогите добавить кнопку для включения в ручном режиме (если датчики выйдут из строя) и функцию отключение выхода при ложном срабатывании (при долгом включении может сгореть обмотка пускателя): Спойлер
Код:
/* * Контролер фекального насоса. */
#define F_CPU 1200000UL #define OUT PB1 #define butHIGH PB3 #define butLOW PB4 #define butUSER PB2 #define LED PB0
ууу...каналья....тысяча червей! а как сделаны сами контакты? на КНС делали всяко - датчики мрут от ядовитости среды, собрали поплавок из огнетушителя и длинный шток туда, где меньше испарений, там магнит и герконы.... (это хоть както работало...) для воды делал уровнемеры на тини13 с ёмкостным измерением, а от наводок хорошо помогает перепроверка (проверил несколько раз, если всё 0, значит уровень точно низкий, если всё 1, значит высокий, а если и те и те, то такой замер игнорируем) сами замеры раз в секунду, если мотор проработает секунд на 5-10 дольше положенного, то ничего страшного... ограничение времени работы мотора тоже делается элементарно - пока мотор работает => считает счётчик... а там или отключение или сигнализация
_________________ Для тех, кто не учил магию мир полон физики Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Герконы и магнит надо заливать в брусочки из эпоксидки.... Поплавок лучше полиэтилен - он самый стойкий. Емкостные датчики хорошо работают только по чистой воде. По грязной поплавок, причем поворотный с узлом поворота выше максимального уровня или дистанционный - ультразвуковой при больших перепадах уровня.
Если именно наводки, аналогичные дребезгу контактов - то и решайте их как антидребезг программный делается. Вы же проверяете хоть и раз в 5 минут, а всё-равно только один раз. Где гарантия, что не словите наводку за этот один раз? Надо в течение определенного времени следить за состоянием пина. Вас вообще устроит, что насос может откачать всё, и еще будет 5 минут и более работать (из-за того же "дребезга") пока МК спит?
Предусмотрите внештатные ситуации. Что делать, например, если верхний датчик сработал, а нижний как бы нет (отвалился)? По хорошему надо сигнализировать неисправность и наверное кратковременно включать насос до пропадания сигнала с верхнего датчика или по таймеру. Так во всяком случае переполнения резервуара избежите.
Здраствуйте. Для включения насоса (откачка канализации) по двум датчикам (нижний и высокий уровень) сделал управление на микроконтролере
Насколько надёжны Ваши датчики уровня? Если датчики срабатывают без замечаний, то надёжный алгоритм работы насоса написать не сложно (могу предложить свой вариант алгоритма). Что из себя представляют датчики?
датчики геркон, герметичные (мадеинКитая). Выход МК идет на оптопару, так как делал управление на симисторе. Симистор долго не выдержал, моЩных долго ждать), заменил на транзистор + реле и пускатель. Так как длина шлейфа датчиков около 10 м, на входах МК поставил конденсатор 103 и стабилитрон 4,7В. Пока без наводок. Блок питания на 5 В от зарядки.
Demiurg писал(а):
Вас вообще устроит, что насос может откачать всё, и еще будет 5 минут и более работать (из-за того же "дребезга") пока МК спит?
По коду, если работает насос МК не спит. На крайняк насос с поплавком, отключится.
Добавлено after 1 hour 16 minutes 7 seconds:
NStorm писал(а):
Что делать, например, если верхний датчик сработал, а нижний как бы нет (отвалился)? По хорошему надо сигнализировать неисправность и наверное кратковременно включать насос до пропадания сигнала с верхнего датчика или по таймеру. Так во всяком случае переполнения резервуара избежите.
Одно замечание... Удаленные контактные датчики (независимо механика или электронный ключ) предпочтительно кормить от источника тока... К примеру... Спойлер О сработке... Собственно там не в герконе (или ином датчике магнитного поля) вопрос, а в корректности (и стабильности) движения поплавка при имеющейся механической конструкции.
Для простого водяного бака в древни времена было еще вот такое чудейко: Спойлер но... оное чудо контактное, и работало на долив водички (при размещении не далее 2 метров от датчиков)...
Одно замечание... Удаленные контактные датчики (независимо механика или электронный ключ) предпочтительно кормить от источника тока...
Это заблуждение. В промышленности я не встречал использование источников тока для дискретных сигналов. Все дискретные сигналы организованы так как я нарисовал.
20-мА токовая петля... Такое подключение снимает вопрос подбора балластного резистора в зависимости от длины линии связи и снижает требования к источнику питания. Если решение удачно для линий связи, то почему бы и не использовать в относительно "медленном" режиме? Тем более, что затраты минимальны - LM317 да резистор 68 ом.
Заголовок сообщения: Re: Контролер насоса на Attini13
Добавлено: Ср июн 17, 2020 12:43:08
Унифицированный сигнал 4 – 20 мА, 0 – 20 мА, используется для передачи аналоговых сигналов, а не дискретных. Для входных цепей дискретных сигналов как правило используют оптопары. Это и гальваническая развязка и некая помехоустойчивость. Так как оптопара работает в широком диапазоне токов, то нет никакой необходимости использовать источник тока. Даже при удалении дискретного датчика на 1000 м и при среднем сопротивлении провода 1 Ом/м, то дополнительное сопротивление в 1 кОм никак не повлияет на работоспособность входной схемы.
ТС. Напиши здесь что-то вроде ТЗ. Как должен работать насос. О программе ни слова. Ты хочешь готовый продукт. Вот и пиши, как он должен работать. Датчики, насос, кнопки, светодиоды.
Заголовок сообщения: Re: Контролер насоса на Attini13
Добавлено: Чт июн 18, 2020 21:09:21
Вот немного загрустил… и чтобы развлечься написал алгоритм управления насосом для выше предложенной мной схемы: https://radiokot.ru/forum/viewtopic.php ... 1#p3856201 Традиционно, МК тактируется на заводских установках (1,2 МГц), прошивать фьюзы не нужно.
Вложение:
Pump.hex
Краткое описание алгоритма: Насос работает по датчикам уровня. При замыкании верхнего уровня включается насос на откачку. Если контакт нижнего уровня разомкнут, то устройство считает это как неисправность датчика нижнего уровня и продолжительность работы насоса составит 5 минут. Если датчик нижнего уровня был замкнут, то насос будет работать пока контакты нижнего уровня не разомкнутся. При остановке насоса по любой причине, повторный запуск осуществится только после 5 минутного отдыха. При ручном управлении включения насоса от кнопки (кратковременно нажать кнопку), включается ручной режим. Насос в данном режиме будет работать до повторного нажатия на кнопку. Повторное нажатие отключает насос и снимает ручной режим. При ручном режиме состояние датчиков не контролируется. Светодиод: Сигнализирует о включении или отключении насоса. Если светодиод мигает, то насос работает по таймеру.
Самсусамыч, код можете выложить? В будущем переделаю подключение датчиков по Вашей схеме. Сейчас пока работает. Еще вопрос: блок питания для МК и реле лучше сделать на трансформаторе или оставить импульсное?
Что будет, если отгниёт провод верхнего датчика? Потоп. Датчиков надо 3 штуки, один аварийный.
Что будет если отгниёт аварийный датчик? Потоп. Так можно до бесконечности датчики дублировать… чтобы таких случаев не было, проводят периодически ревизию…
блок питания для МК и реле лучше сделать на трансформаторе или оставить импульсное?
Если оба БП выполнены по Феншую, то необходимо отталкиваться от качества питающего напряжения. Если и в данном случае всё нормуль, то без разницы какой использовать БП.
Если отгниёт какой угодно датчик с норм замкнутыми контактами - это авария. Сирена, сигнализация, фейерверк и тд. что угодно. Встречались мне разработчики, спроектировавшие аварийный стоп (красный гриб) с Н.О. контактами. Можешь хоть всю кнопку спи...ть - хрена ты остановишь станок. Заставил переделывать. Подумай сам(сусамыч). Из того же геркона с НО делается датчик с НЗ. То есть понадобится реально 3 датчика, а не 1 с тремя герконами и одним поплавком. Нижний датчик также должен размыкаться по достижении нижнего уровня. Геркон надо брать побольше(есть по 4-5 см длиной). Мелкие малонадёжные. Уже их туеву хучу поменял в охранных сигнализациях.
Добавлено after 16 minutes 31 second: А по нормальному ставить по 2 датчика на уровень. Тиня 13 столько ног не имеет, но можно извратиться с регистром. Тогда и 3х ног хватит. И анализ датчиков позволит решить, а не отвалился ли часом датчик. Трудно только на один уровень установить. Или герконы датчиков одного уровня соединить последовательно.
Добавлено after 35 minutes 19 seconds: Самсусамыч, в Вашей схеме надо бы подмять линию к земле резюком параллельно конду 100n. И питалово можно до 24В поднять. Резюк по минимуму наводок и потреблению (если важно). Я, правда, слаб в схемотехнике, но чисто интуитивно.
Добавлено after 1 hour 22 minutes 53 seconds: Я тут заикнулся про охранную сигнализацию. Так вот, централь знает, датчик в порядке, отвалился, закорочен, замкнут, разомкнут. Для этого убираем РС817, последовательно с герконом резюк и параллельно резюк. Возле контроллера обвешиваем кондами, придавливаем к земле и подаём на вход АЦП. Резисторы рассчитать так, чтоб определить перечисленные выше состояния. Резисторы непосредственно у датчика.
_________________ Я всё-всё узнAю и стану профессором.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения