Наводки при коммутировании 220, relay shield, перегруз ардуино

mce
Offline
Зарегистрирован: 13.07.2015

Доброго времени суток)

У меня была  задачка крутить 4 двигателя ( 220 4.5w, 10r.p.m, кароче слабенький)

Была преобретена UNO + Relay Shield v.1.3 (4 канала)

Без нагрузки все 4 реле щёлкают отлично, а как подключаешь 220 (в основном при размыкании реле) в колонках проскакитвает наводка, и ардуинка виснет...

Пол часа гугления говорят что это перегруз по току на дискретных выводах, надо ставить фильтр...

Как? какой? поможет ли он? или как в таких случаях решаются проблемы перегрузки дескретных выводов?

gena
Offline
Зарегистрирован: 04.11.2012

  Вряд ли это перегрузка по току. Судя по фото, на плате есть микросхема, возможно ULN2003, которая занимается коммутацией реле. Помехи идут от реле. Попробуйте увеличить ёмкость конденсатора на шине питания этой платы, до нескольких тысяч микрофарад. И Вы ничего не написали о запитывании самой Ардуины! Там тоже возможно придётся применять электролитический конденсатор.

mce
Offline
Зарегистрирован: 13.07.2015

Питание арудинки и шилда пробовал в разных вариациях ( через USB, и отдельным БП, а шилде как вы видели тоже есть разъём питания) остановился на Шилд внешним +9в а ардуинка от USB3.0 ( через активный хаб, так что тока хватит)

Не очень понял куда ставить кондёр... паралельно в питание шилда реле?

наводки то идут судя по всему через 2 провода которые соединяют реле и ардуинку, тоесть GND и D7 в моём случае..

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

разделите питание на малоточное ( для ардуины ) и силовое для блок-реле
Пол часа гугления говорят что это перегруз по току на дискретных выводах, надо ставить фильтр...
нет , не перегруз , а ЭлНоводки по цепи питания.....
питайте ардуину через диод и огромадный электролит или через LC фильтр питания

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Не очень понял куда ставить кондёр... паралельно в питание шилда реле?
параллельно питанию МК , это может спасти его от просадок и наводок при сработке-отпускании реле

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

SU-27-16 пишет:

Пол часа гугления говорят что это перегруз по току на дискретных выводах, надо ставить фильтр...
нет , не перегруз , а ЭлНоводки по цепи питания.....

таки, шо это было?(с)

*вообще то это аппаратный баг AVR - импульсные помехи превращают контроллер в кирпич.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

у шилда придётся откусить некоторые ноги :(
...и распаять по понятиям

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Клапауций 999 пишет:

SU-27-16 пишет:

Пол часа гугления говорят что это перегруз по току на дискретных выводах, надо ставить фильтр...
нет , не перегруз , а ЭлНоводки по цепи питания.....

таки, шо это было?(с)

*вообще то это аппаратный баг AVR - импульсные помехи превращают контроллер в кирпич.

сам первый начал !!!!!!!!!!!!!!!! я ещё и Дохтура не позвал .....
.....помощь на крыльях с закрылками Уиткомба :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

не нано мне клеить ( шить ) гугление !!!!!
ты на не мой пост отвечаешь !!!!!!!!!!!!!

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

SU-27-16 пишет:

не нано мне клеить ( шить ) гугление !!!!!
ты на не мой пост отвечаешь !!!!!!!!!!!!!

шта?

mce
Offline
Зарегистрирован: 13.07.2015

Тоесть по USB питать его не получится... как там кондёр то поставить...

Вообщем воткнуть электролит, а шилд питать вообще от отдельного БП

А куда физически удобней воткнуть кондёр? прям на провод от БП?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Клапауций 999 пишет:

SU-27-16 пишет:

не нано мне клеить ( шить ) гугление !!!!!
ты на не мой пост отвечаешь !!!!!!!!!!!!!

шта?

ничё... всё норм.... тока правильно удаляй пару "/quote" и "quote=SU-27-16"
аха ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

прям на провод от БП?
прям на питание МК

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

mce пишет:

Тоесть по USB питать его не получится... как там кондёр то поставить...

Вообщем воткнуть электролит, а шилд питать вообще от отдельного БП

А куда физически удобней воткнуть кондёр? прям на провод от БП?

питание от USB это отладка ? конечное устроство будет питаться не от USB ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Вообщем воткнуть электролит, а шилд питать вообще от отдельного БП
по хорошему - ДА

mce
Offline
Зарегистрирован: 13.07.2015

В готовом устройстве будет ещё разбери

Именно к ней будет подключён USB

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

#12

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

раздельное питание малоточных ( МК ) , и разбери !!!!! - и силовых цепей - от разных источников питания !!!!
моя вышел !

mce
Offline
Зарегистрирован: 13.07.2015

ък

вот так сделал.... не помогло...

 

кондёр рабочий 3300uF 10V, если вырубить питание, ардуинка гаснет медленно)))

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а между релюшками и моторами длинный провод?

Artur1985
Offline
Зарегистрирован: 19.02.2013

Как-то давно столкнулся с чем-то подобным. 
Вдруг у Вас аналогичная ситуация.

Как-то делал я станочек в нем 5V (ардуино + реле), 24V (силовые реле + пневматика), 380V (компрессор). Вокруг него одни ТПА с двигателями 15-20KW и т.д.. Все в шкафу питается от 2 импульсных блоков питания (один исключительно ардуино, второй силовые реле и пневматика). Все распаяно, ни каких штекеров.

Падал при включение, отключении реле, без системы, то там, то тут. Чего я только не делал, конденсаторы, фильтры эми, экраны, экранированные провода, отдельные шкафы для ардуино и силовой электроники и все без толку. Дело оказалось в моем коде и понимания прерываний, на одном из прерываний стоял, ни чем не примечательный, переключатель Omron.

Он был просто подключен, как кнопка, через резистор. Но это оказалось не достаточно, был дребезг контакта. Напугавшись, просто убрал прерывание, написав код иначе. И все заработало, уже потом , убирал защиту из любопытства, в итоге все что наставил - конденсаторы, фильтры эми и т.д. были убраны.

К чему это я, к тому, что кроме фильтров и т.д. (которые без  сомнения полезны), внимательно посмотрите на свой код. Попробуйте закомментировать лишнее или вообще сделать простой loop со щёлканьем реле под нагрузкой.

Удачи.

 

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

jeka_tm спрашивал уже, но повторюсь:а между релюшками и мотором , и релюшками и ардуинкой проводки какой длины? Найди ферритовое кольцо и попробуй пропустить эти провода через это кольцо. Помагает от импульсных помех, возникающих при коммутации нагрузки.

mce
Offline
Зарегистрирован: 13.07.2015

Почти уверен дело не в коде, использую 7,6,5,4 пин, это дискретные выходы.

В цикле читаю данные из serial, ну там 2 цифры, 1я номер реле вторая состояние

да и без нагрузки всё щёлкает без проблем)

mce
Offline
Зарегистрирован: 13.07.2015

Провода не больше 10см до моторов

Реле шилд, тоесть в упор, хотя кидал отдельно было 2 котеньких куска витухи, но это никак не повлияло на мою проблему

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

писал в разных местах форума - проблема известная: AVR боится индуктивных помех по питанию.

http://arduino.ru/forum/programmirovanie/elektromagnitnye-navodki

картинко для привлечения внимания

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Картинку эту видел, когда столкнулся с подобной проблемой. У меня подобная плата , только с 16-ю реле на выходе. МК впадал в ступор или ресетился при переключении нагрузки 220 в. Ставил и конденсаторы , и дросели по питанию- помогало , но слабо. В моем случае помог феррит , надетый на провода, все провода , входящие на  блок управления и выходящие.

Чет картинко , сцуко , не грузится на сервер...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

mce пишет:

Провода не больше 10см до моторов

Реле шилд, тоесть в упор, хотя кидал отдельно было 2 котеньких куска витухи, но это никак не повлияло на мою проблему

попробуй ради интереса обмотать ардуину бумагой, а поверх фольгой. к фольге провод  и на землю. фольга тонкая, но для эксперимента может и хватит

если не поможет исправь код чтобы релюшки сами щелкали, без управления и также тест в фольге. любые выводы кроме для релюшек не должны выходить за пределы фольги

ардуину во время тестов питай от usb с хорошим кабелем

 

Artur1985
Offline
Зарегистрирован: 19.02.2013

mce пишет:

Почти уверен дело не в коде, использую 7,6,5,4 пин, это дискретные выходы.

В цикле читаю данные из serial, ну там 2 цифры, 1я номер реле вторая состояние

да и без нагрузки всё щёлкает без проблем)

У меня тоже, без нагрузки работало, как часы. 
​Поэтому и рассказывал. 

phoenixoid
Offline
Зарегистрирован: 14.07.2015

Такая же фигня. Частично помогло (Сократило примерно в 100 раз но не исключило полностью) припаивание электролита емкостью 1МкФ между землей и ресетом.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

phoenixoid, если вы не используте ресет, его можно посадить на плюс через резюк ом на 100 (можно и напрямую, но это менее безопасно), тогда помеха на ресет точно не прорвётся :) А питание на контроллер через добротный LC фильтр, причём фильтр прямо перед разъёмом питания ардуино, а не в 10 см от него. Эти простые требования обычно никто не соблюдает, в результате чего получают проблемы типа той, о чём пишет ТС.

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

после установки феррита сверху на картинке все заработало  без затыков и ресетов . С ноября прошлого года и по сей день работает круглосуточно .Ферриты справа и слева надел на провода для пущей уверенности. 

karl2233
Offline
Зарегистрирован: 05.07.2015

думаю дело вот в чём.

1. ардуино питается от импульсника, реле -  тож.

2. при коммутации хорошей нагрузки возникает не менее прекрасный импульс.

вот этот импульс, через ИИП даёт ардуине прос..ся.

как выход - запитать ардуину и плату реле от трансформаторного БП с линейным стабилизатором. либо сделать ИИП с подавлением помех.

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

ну и провода, идущие на комутацию нагрузки наградить ферритами, это если развязка по питанию не поможет.

з.ы. мой опыт работы с электроникой говорит что 50% проблем возникают из-за питания и связанных с этим разводок-проводов.

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Ну и как,MCE , есть подвижки в вашем деле? Какой -нибудь результат?

mce
Offline
Зарегистрирован: 13.07.2015

К сожалению мой вопрос так и не решён...

Частично кстати помогло - Подключение шилда через 2 провода, а в проводах сопротивление 410 Ом, шёлкает в течении 5-10 мин. но это не вариант)

Конденцатор на питании как я уже говорил не помог, думал повесить ферриты но решил что толку от них особо не будет..

Ну вот пока ковыряюсь методом научного тыка, пока безрезультатно...

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

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

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

mce пишет:

 думал повесить ферриты но решил что толку от них особо не будет..

Ну вот пока ковыряюсь методом научного тыка, пока безрезультатно...

А вот и зря

...Dimax опередил меня.Только ,по-моему ,эта помеха не только по цепям управления реле пролазит.Ну да это и не важно.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Посмотрите внимательно как у вас протекают большие токи.
Их трассу. Откуда вытекает, куда втекает и как коммутируется.
Они должны течь по своим проводникам и не иметь общих проводов с сигнальными и питающими проводниками Ардуины.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

trembo пишет:

Посмотрите внимательно как у вас протекают большие токи.
Их трассу. Откуда вытекает, куда втекает и как коммутируется.
Они должны течь по своим проводникам и не иметь общих проводов с сигнальными и питающими проводниками Ардуины.

бестолку. пока у ТС блоки питания гавно, питание цифровой и силовой части не разделено, на контакты реле не установлены шунтирующие конденсаторы - будет продолжать шапочки из фольги делать.

Maverik
Offline
Зарегистрирован: 12.09.2012

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

а может вообще ограничиться RC-фильтром ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Maverik, тут можно просвятится на тему фильтров питания для МК.

Maverik
Offline
Зарегистрирован: 12.09.2012

за ссылку, конечно, спасибо, но она не дает всех ответов.

что за вывод такой AVcc ?? разве в ардуинах есть отдельно вывод аналогового питания и отдельно цифрового ??

и еще - обратите внимание, что в предложенной схеме  LC-фильтра (рис 2.14), он фактически работает полноценно только для этого самого AVcc вывода.  Для вывода Vcc работает только емкостная часть, т.к. дроссель в схеме для вывода Vcc закорочен. В чем прикол ?

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

что за вывод такой AVcc ?? разве в ардуинах есть отдельно вывод аналогового питания и отдельно цифрового ??
у ардуины нет , а у МК есть
на плате ардуины всё питание в параллель разведено

Для вывода Vcc работает только емкостная часть, т.к. дроссель в схеме для вывода Vcc закорочен. В чем прикол ?
к питанию аналоговой части МК предъявляются более жёсткие требования

mce
Offline
Зарегистрирован: 13.07.2015

Поставил феррит, теперь ардуина виснет не сразу а через 2-3 минуты)))

 

 

Питание реализовал через : Комбинированный стабилизатор питания 5V, 3.3V для Arduino

Maverik
Offline
Зарегистрирован: 12.09.2012

посмотрел схему ардуины мини про, твоя правда.

у атмеги 328   5 пин = AGND,  18 пин = AVCC , но всё закорочено на цифровый GND  и VCC соответственно.

mce
Offline
Зарегистрирован: 13.07.2015

Artur1985 пишет:
Дело оказалось в моем коде

Я никак не мог поверить что наводки ловяться из -за кода!! но 

  digitalWrite(13, HIGH);
  digitalWrite(4, HIGH);  
  delay(1500);
  digitalWrite(13, LOW);
  digitalWrite(4, LOW);
  delay(1500);

Работает уже час, и ничего не виснет..

думаю надо передислоцироваться в програмную ветку...

мой старый код... (осторожно! говнокод!)

int R1 = 7;
int R2 = 6;
int R3 = 5;
int R4 = 4;
void setup() {
  pinMode(13, OUTPUT);   
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.begin(115200);
  
}

char incomingBytes[2]; 
void loop() {

  if (Serial.available() > 0)
   {
      Serial.readBytes(incomingBytes, 2);
      String incom_str = String(incomingBytes);
      //chahr relay_num_str=1;
      //int value = atoi(incomingBytes);
      //Serial.println(value);
      String relay_num_str =incom_str.substring(0,1);
      String relay_state_str =incom_str.substring(1,2);
      int relay_num=relay_num_str.toInt();
      int relay_state=relay_state_str.toInt();
      if(relay_state==0)
      {
        if(relay_num==1){digitalWrite(R1, LOW);}    
        if(relay_num==2){digitalWrite(R2, LOW);} 
        if(relay_num==3){digitalWrite(R3, LOW);}
        if(relay_num==4){digitalWrite(R4, LOW);}
      }
      if(relay_state==1)
      {
        if(relay_num==1){digitalWrite(R1, HIGH);}    
        if(relay_num==2){digitalWrite(R2, HIGH);} 
        if(relay_num==3){digitalWrite(R3, HIGH);}
        if(relay_num==4){digitalWrite(R4, HIGH);}
      }
      //Serial.println("relay "+String(relay_num)+" set state "+String(relay_state));
      
   }
}

Как понятно из кода, ардуинка берёт 2 числа  из порта, первое число это реле, второе его состояние...

у меня была проблема с разбивкой числа на цифры, поэтому у меня костыль с переводом типов...))

Maverik
Offline
Зарегистрирован: 12.09.2012

так это не наводки скорее всего.

думаю это как раз тот случай, когда нужно пересыпать код немного чем-то вроде delay(200) там где идет обращение к портам, напр. функции Serial. именно delay()  без всяких автоматов и многозадачности. Возможно просто буфер переполняется, а потом выплёвывает сразу кучу данных. И вообще, Вам точно нужна такая высокая скорость обмена с портом  ?

где-то что-то не успевает инициализироваться. 

А вот за такое поклонники языка С кидаются тапками :

if(relay_state==0)  

if(relay_state==1)  

(Serial.available() > 0)

оно вроде правильно, но режет глаз )) нужно вот так, каждая строка соответственно:

boolean relay_state;

if(!relay_state)  

if(relay_state)  

(Serial.available())

mce
Offline
Зарегистрирован: 13.07.2015

Тогда главный вопрос, если это не наводки а код, тогда почему без 220 всё работает?!!))

я вот чего понять не могу, у меня все 4 релюхи щёлкают с этим кодом, то как только включаю 220, всё виснет..

Да по поводу синтаксиса согласен, совсем говнокод, делался на скорую руку, и вроде работал...

скрость такая высокая чтобы порт небыл занят, 4 релюхами управляют 4 разных процесса, и все бьются в /dev/ttyACM0.

Демоны написанны на ПХП.

И их запускается 4 штуки, мб я всётаки не правильно начал реализовывать задачу, но по мне самы простой способ.

Всеже покажу код, чтоб было понятно что к чему: 

#!/usr/bin/php
<?php
$relay_num=intval($argv[1]);
$relay_dur=intval($argv[2]);
$relay_peri=intval($argv[3]);
$relay_count=intval($argv[4]);
$tty="ttyACM0";
echo "Start! Relay $relay_num, duration $relay_dur periodicity $relay_peri\n";

include 'php_serial.class.php';
$serial = new PhpSerial;
$serial->deviceSet("/dev/$tty");
$serial->confBaudRate(115200);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

$serial->deviceOpen();

if($relay_count==0)
        {
          while (1) 
          {
                $serial->sendMessage($relay_num."1");
                sleep($relay_dur);
                $serial->sendMessage($relay_num."0");
                sleep($relay_peri);
        }
}
?>
Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

вы свой мини тестовый код сделайте на все 4 реле. а то в оригинале 4 реле а в тесте 2...

как то не хорошо.

во вторых так как все висит на соплях. а реле имеют свойства дергаться. то не исключено когда они начинают все 4 раскачивать лодку становиться веселей. особенно одновременно. 

в общем можно долго гадать.

mce
Offline
Зарегистрирован: 13.07.2015

Да все 4 реле используются, этот скрипт запускаеться в 4х экземплярах.

А в цикле 2 вызова это включение и выключение, с определённой задержкой, которая передаётся в параметрах к скрипту

сопли уже были убраны, плата с реле воткнута напрямую в ардуинку

Maverik
Offline
Зарегистрирован: 12.09.2012

если есть тверодтельное реле, попробуй его вместо обычного.  

Maverik
Offline
Зарегистрирован: 12.09.2012

да, и еще. 

ваш проект висит в воздухе. во всех смыслах.

вот для сравнения один из проектов, с которым я сейчас работаю.  сравните и поверьте - в моём варианте удобнее и БЫСТРЕЕ, хотя на первый взгляд это может быть не очевидно. монтажный короб стоит около 18 рублей.  кусок текстолита между силовой и логической частями остался с предыдущего проекта - обмотан скотчем и двухсоронним скотчем приклеен к релюшке.

http://savepic.su/5852177.jpg