| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Контролер насоса на Attini13 https://radiokot.ru/forum/viewtopic.php?f=57&t=171331 |
Страница 1 из 2 |
| Автор: | brusel2 [ Вт июн 16, 2020 08:38:33 ] | ||
| Заголовок сообщения: | Контролер насоса на Attini13 | ||
Здраствуйте. Для включения насоса (откачка канализации) по двум датчикам (нижний и высокий уровень) сделал управление на микроконтролере по такой программе: СпойлерКод: #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 startPomp() { //функция запуск помпи digitalWrite(OUT, HIGH); digitalWrite(LED, HIGH); } void stopPomp() { //функция остановки помпи digitalWrite(OUT, LOW); digitalWrite(LED, LOW); } void setup() { pinMode(butLOW, INPUT_PULLUP); pinMode(butHIGH, INPUT_PULLUP); pinMode(butUSER, INPUT_PULLUP); pinMode(OUT, OUTPUT); pinMode(LED, OUTPUT); } 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 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> unsigned char timer1 = 20; //установка времени ТМ/4 5 секунд //unsigned char motor=0; volatile unsigned char temp=0; // Оброботчик прерывания по таймеру TIMER0 ISR(TIM0_OVF_vect){ temp++; } int main(void) { // Датчики DDRB &= ~((1<<butLOW)|(1<<butHIGH)|(1<<butUSER)); // входы PORTB |= (1<<butLOW)|(1<<butHIGH)|(1<<butUSER); // подтянуты // Выход DDRB |= (1<<OUT)|(1<<LED); // выход PORTB &= ~(1<<OUT)|~(1<<LED); // выключен // Настраиваем таймер TIMSK0 = (1<<TOIE0); // Включаем таймер TIMER0 TCCR0B = (1<<CS02) | (1<<CS00); // Пределитель таймера на 1/1024 // Задаем режим сна MCUCR &= ~(1<<SM1); // idle mode MCUCR &= ~(1<<SM0); // idle mode MCUCR |= (1<<SE); sei(); while (1) { // Засываем до прерывания по таймеру asm("sleep"); // Таймер сработал TIMSK0 &= ~ (1<<TOIE0); // Останавливаем TIMER0 if( temp >= timer1 ) { if ( (PINB & (1<<butLOW)) && (PINB & (1<<butHIGH)) ) // если сработали нижний и верхний датчики (високий уровень) { PORTB |= (1<<OUT); // ПУСК насоса } temp=0; } if (!(PINB & (1<<butLOW))) // если сработал нижний датчик { PORTB &= ~(1<<OUT); // СТОП насоса } TIMSK0 = (1<<TOIE0); // Включаем таймер TIMER0 sei(); } return 0; } Заранее спасибо!
|
|||
| Автор: | Ivanoff-iv [ Вт июн 16, 2020 09:25:18 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
ууу...каналья....тысяча червей! а как сделаны сами контакты? на КНС делали всяко - датчики мрут от ядовитости среды, собрали поплавок из огнетушителя и длинный шток туда, где меньше испарений, там магнит и герконы.... (это хоть както работало...) для воды делал уровнемеры на тини13 с ёмкостным измерением, а от наводок хорошо помогает перепроверка (проверил несколько раз, если всё 0, значит уровень точно низкий, если всё 1, значит высокий, а если и те и те, то такой замер игнорируем) сами замеры раз в секунду, если мотор проработает секунд на 5-10 дольше положенного, то ничего страшного... ограничение времени работы мотора тоже делается элементарно - пока мотор работает => считает счётчик... а там или отключение или сигнализация |
|
| Автор: | Wladimir_TS [ Вт июн 16, 2020 11:10:00 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Герконы и магнит надо заливать в брусочки из эпоксидки.... Поплавок лучше полиэтилен - он самый стойкий. Емкостные датчики хорошо работают только по чистой воде. По грязной поплавок, причем поворотный с узлом поворота выше максимального уровня или дистанционный - ультразвуковой при больших перепадах уровня. |
|
| Автор: | BOB51 [ Вт июн 16, 2020 11:13:31 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Скорее проблемы с самими датчиками... Как оные реализованы? |
|
| Автор: | Demiurg [ Вт июн 16, 2020 12:11:09 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Угу, МК по кмоп технологии без опторазвязки. Конечно будут сбои от любой наводки, любой помехи. |
|
| Автор: | NStorm [ Вт июн 16, 2020 12:31:25 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Если именно наводки, аналогичные дребезгу контактов - то и решайте их как антидребезг программный делается. Вы же проверяете хоть и раз в 5 минут, а всё-равно только один раз. Где гарантия, что не словите наводку за этот один раз? Надо в течение определенного времени следить за состоянием пина. Вас вообще устроит, что насос может откачать всё, и еще будет 5 минут и более работать (из-за того же "дребезга") пока МК спит? Предусмотрите внештатные ситуации. Что делать, например, если верхний датчик сработал, а нижний как бы нет (отвалился)? По хорошему надо сигнализировать неисправность и наверное кратковременно включать насос до пропадания сигнала с верхнего датчика или по таймеру. Так во всяком случае переполнения резервуара избежите. |
|
| Автор: | Самсусамыч [ Вт июн 16, 2020 19:21:00 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Здраствуйте. Для включения насоса (откачка канализации) по двум датчикам (нижний и высокий уровень) сделал управление на микроконтролере Насколько надёжны Ваши датчики уровня? Если датчики срабатывают без замечаний, то надёжный алгоритм работы насоса написать не сложно (могу предложить свой вариант алгоритма). |
|
| Автор: | brusel2 [ Ср июн 17, 2020 08:28:47 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Wladimir_TS писал(а): Как оные реализованы? датчики геркон, герметичные (мадеинКитая). Выход МК идет на оптопару, так как делал управление на симисторе. Симистор долго не выдержал, моЩных долго ждать), заменил на транзистор + реле и пускатель. Так как длина шлейфа датчиков около 10 м, на входах МК поставил конденсатор 103 и стабилитрон 4,7В. Пока без наводок. Блок питания на 5 В от зарядки. Demiurg писал(а): Вас вообще устроит, что насос может откачать всё, и еще будет 5 минут и более работать (из-за того же "дребезга") пока МК спит? По коду, если работает насос МК не спит. На крайняк насос с поплавком, отключится. Добавлено after 1 hour 16 minutes 7 seconds: NStorm писал(а): Что делать, например, если верхний датчик сработал, а нижний как бы нет (отвалился)? По хорошему надо сигнализировать неисправность и наверное кратковременно включать насос до пропадания сигнала с верхнего датчика или по таймеру. Так во всяком случае переполнения резервуара избежите. Тут Вы правы, не предусмотрел |
|
| Автор: | Самсусамыч [ Ср июн 17, 2020 08:49:17 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Ваше устройство я бы предложил сделать по такой схеме: Спойлер![]() |
|
| Автор: | BOB51 [ Ср июн 17, 2020 09:14:43 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Одно замечание... Удаленные контактные датчики (независимо механика или электронный ключ) предпочтительно кормить от источника тока... К примеру... СпойлерО сработке... Собственно там не в герконе (или ином датчике магнитного поля) вопрос, а в корректности (и стабильности) движения поплавка при имеющейся механической конструкции. Для простого водяного бака в древни времена было еще вот такое чудейко: Спойлерно... оное чудо контактное, и работало на долив водички (при размещении не далее 2 метров от датчиков)... |
|
| Автор: | Самсусамыч [ Ср июн 17, 2020 09:36:42 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Одно замечание... Удаленные контактные датчики (независимо механика или электронный ключ) предпочтительно кормить от источника тока... Это заблуждение. Все дискретные сигналы организованы так как я нарисовал. |
|
| Автор: | BOB51 [ Ср июн 17, 2020 11:08:57 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
20-мА токовая петля... Такое подключение снимает вопрос подбора балластного резистора в зависимости от длины линии связи и снижает требования к источнику питания. Если решение удачно для линий связи, то почему бы и не использовать в относительно "медленном" режиме? Тем более, что затраты минимальны - LM317 да резистор 68 ом. |
|
| Автор: | Самсусамыч [ Ср июн 17, 2020 12:43:08 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Унифицированный сигнал 4 – 20 мА, 0 – 20 мА, используется для передачи аналоговых сигналов, а не дискретных. Для входных цепей дискретных сигналов как правило используют оптопары. Это и гальваническая развязка и некая помехоустойчивость. Так как оптопара работает в широком диапазоне токов, то нет никакой необходимости использовать источник тока. Даже при удалении дискретного датчика на 1000 м и при среднем сопротивлении провода 1 Ом/м, то дополнительное сопротивление в 1 кОм никак не повлияет на работоспособность входной схемы. |
|
| Автор: | Demiurg [ Ср июн 17, 2020 14:05:38 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
ТС. Напиши здесь что-то вроде ТЗ. Как должен работать насос. О программе ни слова. Ты хочешь готовый продукт. Вот и пиши, как он должен работать. Датчики, насос, кнопки, светодиоды. |
|
| Автор: | BOB51 [ Ср июн 17, 2020 15:30:48 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Застращали топикстартера... |
|
| Автор: | Самсусамыч [ Чт июн 18, 2020 21:09:21 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Вот немного загрустил… и чтобы развлечься написал алгоритм управления насосом для выше предложенной мной схемы: https://radiokot.ru/forum/viewtopic.php ... 1#p3856201 Традиционно, МК тактируется на заводских установках (1,2 МГц), прошивать фьюзы не нужно. Вложение: Pump.hex Краткое описание алгоритма: Насос работает по датчикам уровня. При замыкании верхнего уровня включается насос на откачку. Если контакт нижнего уровня разомкнут, то устройство считает это как неисправность датчика нижнего уровня и продолжительность работы насоса составит 5 минут. Если датчик нижнего уровня был замкнут, то насос будет работать пока контакты нижнего уровня не разомкнутся. При остановке насоса по любой причине, повторный запуск осуществится только после 5 минутного отдыха. При ручном управлении включения насоса от кнопки (кратковременно нажать кнопку), включается ручной режим. Насос в данном режиме будет работать до повторного нажатия на кнопку. Повторное нажатие отключает насос и снимает ручной режим. При ручном режиме состояние датчиков не контролируется. Светодиод: Сигнализирует о включении или отключении насоса. Если светодиод мигает, то насос работает по таймеру. |
|
| Автор: | dgrett [ Пт июн 19, 2020 10:48:59 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Датчики лучше включать как НЗ контакты. Что будет, если отгниёт провод верхнего датчика? Потоп. Датчиков надо 3 штуки, один аварийный. |
|
| Автор: | brusel2 [ Пт июн 19, 2020 12:31:34 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Самсусамыч, код можете выложить? В будущем переделаю подключение датчиков по Вашей схеме. Сейчас пока работает. Еще вопрос: блок питания для МК и реле лучше сделать на трансформаторе или оставить импульсное? |
|
| Автор: | Самсусамыч [ Пт июн 19, 2020 14:45:12 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Датчики лучше включать как НЗ контакты. Чем лучше? dgrett писал(а): Что будет, если отгниёт провод верхнего датчика? Потоп. Датчиков надо 3 штуки, один аварийный. Что будет если отгниёт аварийный датчик? Потоп. Добавлено after 2 minutes 59 seconds: блок питания для МК и реле лучше сделать на трансформаторе или оставить импульсное? Если оба БП выполнены по Феншую, то необходимо отталкиваться от качества питающего напряжения. Если и в данном случае всё нормуль, то без разницы какой использовать БП. Цитата: код можете выложить? Легко… исходник на АВ (Algorithm Builder): Вложение: brusel2.zip
|
|
| Автор: | dgrett [ Пт июн 19, 2020 18:55:14 ] |
| Заголовок сообщения: | Re: Контролер насоса на Attini13 |
Если отгниёт какой угодно датчик с норм замкнутыми контактами - это авария. Сирена, сигнализация, фейерверк и тд. что угодно. Встречались мне разработчики, спроектировавшие аварийный стоп (красный гриб) с Н.О. контактами. Можешь хоть всю кнопку спи...ть - хрена ты остановишь станок. Заставил переделывать. Подумай сам(сусамыч). Из того же геркона с НО делается датчик с НЗ. То есть понадобится реально 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, последовательно с герконом резюк и параллельно резюк. Возле контроллера обвешиваем кондами, придавливаем к земле и подаём на вход АЦП. Резисторы рассчитать так, чтоб определить перечисленные выше состояния. Резисторы непосредственно у датчика. |
|
| Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|




Все дискретные сигналы организованы так как я нарисовал.