Ви не увійшли.
Усім привіт. Маю arduino nano, де в проекті першими рядками йде код
void setup() {
pinMode(D4, INPUT_PULLUP);
rele_level_kam = digitalRead(D4);
// тобто rele_level_kam на старті HIGH
pinMode(D8, OUTPUT);
digitalWrite(D8, rele_level_kam);
і маю реле на 5в, звичайне ардуіновське, синя плата. Пробував реле і без оптрона та з оптроном. Реле активується низьким рівнем (LOW)
Живлення на arduino подаю через окремий DC-DC перетворювач mini-360 на вход VIN
Живлення на VCC реле подаю від окремого DC-DC перетворювача mini-360 (тому що боюсь що D-вихід не витримає навантаження на реле по струму), GND загальний.
При роботі самої програми проблем немає ніяких.
Проблема в тому що при подачі живлення або при знятті живлення на всю схему реле короткочасно спрацьовує на долю секунди. Як можно обійти цю проблему? Замінити реле на таке що спрацьовує від HIGH рівня чи є інші варианти?
Остання редакція Shaman2 (2024-01-14 21:17:29)
Неактивний
Живлення на arduino подаю через окремий DC-DC перетворювач mini-360 на вход VIN
Живлення на VCC реле подаю від окремого DC-DC перетворювача mini-360 (тому що боюсь що D-вихід не витримає навантаження на реле по струму), GND загальний.
Взагалі-то в модулі реле обмотка живиться від джерела живлення через транзисторний ключ, а не з керуючого входу. Струму в порт (до 40 мА) має вистачити як для вмикання оптопари, так і для вмикання транзисторного ключа напряму, якщо без оптопари.
Покажіть схему підключення.
Джампер VCC - JD-VCC на модулі реле знято?
При неправильно спроектованій схемі з двома джерелами живлення, коли одне з них вимкнене, або при деяких інших умовах, струм з іншого може пролазити в "не свою" частину через захисні діоди.
Здається, два джерела живлення там зайві, можна обійтись одним.
Проблема в тому що при подачі живлення або при знятті живлення на всю схему реле короткочасно спрацьовує на долю секунди. Як можно обійти цю проблему?
Спробуйте підтягнути керуючий сигнал зовнішнім резистором в 1-10 кОм до живлення. Але краще покажіть схему. Якщо спрацьовує і при знятті живлення, то це явно не програмна проблема, а глітчі по живленню.
Неактивний
Взагалі-то в модулі реле обмотка живиться від джерела живлення через транзисторний ключ, а не з керуючого входу. Струму в порт (до 40 мА) має вистачити як для вмикання оптопари, так і для вмикання транзисторного ключа напряму, якщо без оптопари.
Так як я роблю це людині, то я вирішив перестрахуватись. Звісно для оптопари досить, а для самого реле мабуть ні, а іноді бувають два-три реле
Покажіть схему підключення.
Ось одна з схем, вибачте я незнаю як її по іншому намалювати крім фотошопа наприклад
Спробуйте підтягнути керуючий сигнал зовнішнім резистором в 1-10 кОм до живлення. Але краще покажіть схему. Якщо спрацьовує і при знятті живлення, то це явно не програмна проблема, а глітчі по живленню.
Підтягувати не вариант, прошивка зроблена так щоб можно було підєднувати будь яке реле, якщо замкнути D4 на масу то прошивка інвертує сигнал для реле які працюють по HIGH замість LOW, але в мене проблема саме з LOW реле зараз
Неактивний
Пробував ось це реле на 5в, підключення таке саме, перемичку на JDVCC не прибирав
https://arduino.ua/prod201-2-h-kanalnii … razvyazkoi
Воно стабільно короткочасно щелкає при подачі живлення, обома реле
Тільки що спробував ось це реле на 12в, прибрав верхній DC-DC, прибрав з реле перемичку на JDVCC і підключив на JDVCC живлення 12в, все інше так само.
https://arduino.ua/prod2223-2-h-kanalni … razvyazkoi
Це реле не щелкає, працює як потрібно.
Що я роблю не так?
Неактивний
Так як я роблю це людині, то я вирішив перестрахуватись. Звісно для оптопари досить, а для самого реле мабуть ні, а іноді бувають два-три реле
Обмотка реле живиться з піна VCC. IN іде в базу транзистора через резистор, який обмежує струм до одиниць мілліампер. У Atmega328P обмеження на один вивод - 40 мА, одним виводом можна керувати десятком таких модулів. А на весь мікроконтроллер - 200 мА, хоч до кожного піна по реле підключайте.
Якщо ви хвилюєтесь, що не вистачить потужності одного модуля живлення, то струм обмотки реле не більше 100 мА, а Mini-360 видає 1 А запросто. Крім того, на один із модулів живлення навантажено тільки ардуіно, яке в активному режимі споживає максимум пару десятків мілліампер. При такому невеликому споживанні коефіцієнт корисної дії DC-DC суттєво зменшується.
Якщо ж при вмиканні таки виникатиме істотна просадка напруги (що малоймовірно), то поставте по живленню електролітичний конденсатор мікрофарад так на 47-100.
Ось одна з схем, вибачте я незнаю як її по іншому намалювати крім фотошопа наприклад
Нормально, все видно.
В коді у вас піни D4 і D7, на схемі підключено до D8?
Підтягувати не вариант
Коли мікроконтроллер в ресеті, або коли виконується бутлоадер, виводи знаходяться в високоімпедансному стані. Формально логічний стан вивода невизначений, реле "має право" перемикатись як заманеться. На практиці, якщо ключ на біполярному транзисторі, то у вивод в стані INPUT струм не втікатиме і транзистор відкриватись не повинен. Але припустимо, блок що живить реле, набирає напругу трохи швидше того, що живить ардуіно. Струм через транзистор тече в ардуіно і через захистний діод в землю, транзистор відкривається, реле вмикається. При вимиканні можливе те ж саме: конденсатор блока живлення ардуіно розряджається швидше (бо ардуіно споживає струм), а блок живлення реле нічим не навантажений. Із блока живлення реле струм через захисний діод тече в землю, реле вмикається.
Не наполягаю, що у вас відбувається саме так, але такий варіант не виключений.
прошивка зроблена так щоб можно було підєднувати будь яке реле, якщо замкнути D4 на масу то прошивка інвертує сигнал для реле які працюють по HIGH замість LOW, але в мене проблема саме з LOW реле зараз
Ви маєте на увазі цей код?
pinMode(D4, INPUT_PULLUP);
rele_level_kam = digitalRead(D4);
pinMode(D7, OUTPUT);
digitalWrite(D7, rele_level_kam);
Тип модуля реле конфігурується замиканням D4 на землю? Я мав на увазі підтягувати керуючий вивод D7, щоб сигнал мав визначений стан, коли пін ще/вже у високоімпедансному стані (High-Z).
Доречі, не факт, що відразу після вмикання INPUT_PULLUP напруга на D4 встигає встановитись до належного рівня. digitalRead() відразу може і не повернути HIGH.
Також при rele_level_kam=HIGH послідовність 'pinMode(D7, OUTPUT); digitalWrite(D7, HIGH);' виставляє D7 в нуль на короткий час (менше мікросекунди). Сумніваюсь, що цього достатньо для увімкнення реле, але теж слизьке місце.
Пробував ось це реле на 5в, підключення таке саме, перемичку на JDVCC не прибирав
З перемичкою обидва блоки живлення працюють просто в паралель. Тоді дивніше. Може і в логіці програми є помилки, по чотирьом рядкам важко діагностувати.
Для початку спробуйте модуль без оптопотари, заживіть все від одного модуля живлення. Для експеримента модифікуйте прошивку щоб видавала постійну фіксовану полярність (active low) незалежно від стану піна конфігурації. Щоб уникнути глітча при перемиканні піна в OUTPUT HIGH, перемкніть його спочатку в INPUT_PULLUP:
pinMode(D7, INPUT_PULLUP);
pinMode(D7, OUTPUT);
Доречі, а якщо ардуіно примусово утримувати в постійному ресеті, клацає реле при подачі/знятті живлення?
І чи не залишаєте підʼєднаним UART, коли перевіряєте?
Остання редакція dimich (2024-01-14 20:12:26)
Неактивний
А, ще питання. При подачі живлення реле вмикається на короткий час і відразу ж вимикається? Чи вмикається і залишається увімкненим, поки є живлення, а при знятті живлення вимикається?
Неактивний
А, ще питання. При подачі живлення реле вмикається на короткий час і відразу ж вимикається? Чи вмикається і залишається увімкненим, поки є живлення, а при знятті живлення вимикається?
Короткочасно. По звуку десь приблизно на 0,2секунди, таке собі щелк-щелк.
Якшо нажати Reset, то не щелкає
Неактивний
Якшо нажати Reset, то не щелкає
А якщо:
1. Нажати Reset.
2. Подати живлення.
3. Відпустити Reset.
4. Нажати Reset знову.
5. Зняти живлення.
На яких із етапів щелкає?
Неактивний
Shaman2 пише:Якшо нажати Reset, то не щелкає
А якщо:
1. Нажати Reset.
2. Подати живлення.
3. Відпустити Reset.
4. Нажати Reset знову.
5. Зняти живлення.На яких із етапів щелкає?
Завтра зберу тестовий стенд якщо в мене реле залишилось, і перевірю
Неактивний