Реле шалит

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Salk, 9 июн 2015.

  1. Salk

    Salk Гик

    Реле подключен по такой схеме через транзистор к arduino.
    Без нагрузки отщелкивает на ура, при коммутации сети ~220 V, Arduino перезагружается. В лучшем случае 1 из 10 раз включит сразу, в среднем со второй, бывает череда из четырёх попыток.
    Нагрузка ест около 3 А, возможно большой пусковой ток, конденсаторы по питанию в БП стоят на 16800 мкФ. Я вот думаю, как же избавится от такого досадного недостатка, достаточно ли будет поставить опторазвязку ? Или собрать что-то по серьезнее: "вроде плавного пуска БП" ?
     
  2. Deniss

    Deniss Гик

    Все из за качества реле, они обычно сильно китайские и проскакивает большая искра - а это помеха. Можно попробовать как можно дальше отдалить реле от ардуины, попробовать с другим реле может у него контакты более подогнаны друг к другу, использовать твердотельное реле, попробовать экранировать ардуину или реле. Опторазвязка возможно то же поможет от электромагнитных помех.
     
  3. Unixon

    Unixon Оракул Модератор

    С чего вы взяли, что путь помехи пролегает через катушку реле, а не через БП ардуины?
     
  4. Vad33

    Vad33 Капитан-оригинал

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

    Salk Гик

    Питания для Arduino реализовано отдельное на отдельном трансформаторе и Arduino работает всегда от сети, как бы в дежурном режиме и ждет сигнала с пульта ДУ, чтобы включить то самое реле, которое уже включает основной БП / основную нагрузку, и вот тут уже начинается игра в рулетку. Но так или иначе земли все равно все общие.
    Просадок напряжения нет, сейчас для очистки совести проверил, напряжение не проседает в момент перезагрузки, держит 8.92-9 В на Vin.
    Электролиты по питанию стоят, по мимо штатных ещё на 470 мкФ + 0.1 мкФ.
    Arduino от реле стоит довольно далеко чуть более 60 см.
    Проблема возникает только при коммутации ~220 V, без сети никаких сбоев, так что же это?
    Достаточно ли будет опторазвязки в данном случае, разумеется с полностью независимыми +5 В для катушки реле?
     
    Последнее редактирование: 9 июн 2015
  6. Deniss

    Deniss Гик

    1. Проблема проявляется только с нагрузкой и только с китайскими реле.

    Достаточно просто вставить хорошее реле а еще лучше взять твердотельное.
    Опторазвязка возможно не поможет, т.к. питание и управление отделить на 100% не получится.
     
  7. Radius

    Radius Гик

    Я думаю, что необходимо +5В отвязать от платы. Скорее всего по +5В что то проскакивает когда на реле подается ~220в. Установите оптрон и подавайте напряжение на катушку реле от отдельного источника.
     
  8. Deniss

    Deniss Гик

    Не канает оптрон в таком варианте, это 100%. У меня реле изначально шли с оптронами...
     
  9. Unixon

    Unixon Оракул Модератор

    Просто запитайте нагрузку от того же самого места через обычный выключатель, без реле, и посмотрите, что будет с ардуиной. Если сбросится - добавляйте фильтры по питанию или меняйте БП.
     
  10. Vad33

    Vad33 Капитан-оригинал

    Лучше попробуйте запитать Ардуину отдельно от аккумулятора или батарейки
    (только не от кроны, быстро дохнет). А потом и блок реле. И сразу будет видно где
    собака зарыта.
     
  11. Salk

    Salk Гик

    Да, так и сделал, отключил БП Arduino и запитал её от USB компа и ... она по прежнему перезагружается. Т.е. Deniss прав, опторазвязка не поможет. Хотя все же не мешало её поставить на всякий.
    И вот, что я ещё заметил: когда конденсаторы по питанию основного БП (16800 мкФ) разряжены, т.е. при первом включении основного БП, шанс перезагрузить Arduino равен около 90%, но если после включения БП выключить и сразу же включить, то шанс перезагрузки стремится к 0%, при этом нагрузка всегда подключена к БП, без нагрузки arduino не капризничает. Если дать конденсаторам разрядится и снова попытаться включить, то все по новой.
    Всё таки склоняюсь к
    Вот только помехи идут на Arduino не от реле по 5В линии, а через темброблок, т.к. именно на этой плате у меня соединены аналоговая и цифровая земли, если полностью разорвать аналоговую землю от цифровой, то никаких помех и перезагрузок. Но разделение земель не допустимо.
    Значит, скачки при первом включении питания, большой пусковой ток?
    Может схема плавного пуска, на подобии такой поможет?
    Твердотельное реле не очень хочется ставить, т.к. дорогое и габариты не маленькие.
    А вот, как отличить "хорошее" реле от "китайского" ?
     
    Последнее редактирование: 9 июн 2015
  12. Unixon

    Unixon Оракул Модератор

    У вас проблема не в реле, а в неправильной организации питания.
     
  13. Salk

    Salk Гик

    Эх.. это Вы верно подметили. Накидал все в одну кучу, теперь разобраться толком не могу.
    Поможете? :)
    БП:
    Цифровая часть+БП.jpg
    И виновник всей трагедии - цифрой темброблок, а точнее цифровые потенциометры (внизу сдвиговые регистры для Led Ring):
    ЦП+LED_RING.jpg
    Почему виновники, да потому что, "помеха", которая не даёт жить Arduino - назовем это так, приходит как раз со стороны цифровых потенциометров. Дело в том, что потенциометры запитаны, как раз от основного БП, через стабилизаторы ±15 В. AD7376 .
    Когда включается основой БП возникает "помеха", которая через потенциометры проникает в Arduino, по линиям SPI (CS, SDI, CLK), которые управляют ими, и +5 В для RS и SHDN.
    Опытным путем проверил: стоит отсоединить темброблок от Arduino (CS, SDI, CLK и 5 В), как все хорошо, включение БП ни как не сказывается на её здоровье. Так же проверял раздельно, т.е. оставлял только CS, SDI, CLK (SPI) и Gnd (без 5 В), и только 5 В и Gnd (без SPI), в обоих случаях были перезагрузки. Но чаще с CS, SDI и CLK. Конечно пины SPI настроены на Output, а к ним в гости лезет незваный гость, "помеха", я бы тоже возмутился.
    Структурно на данный момент это выглядит примерно так:
    Структурная схема (old).jpg
    Я подумал, может сделать так ? :
    Структурная схема (new).jpg
    Чтобы оградить темброблок с потенциометрами от "помехи" основного БП, кстати усилители и вызывают эту "помеху" при включении, т.к. они являются главной нагрузкой, если просто подключить один темброблок, то arduino чувствует себя хорошо.
    Понадобится два реле, одно сначала включит основной БП с усилителем, а через некоторое время второе реле подключит и сам темброблок, тем самым дать усилителю время "устаканится", за одним удастся избавиться от начальных хлопков в динамиках, некая такая задержка звука при включении.

    Я просто не знаю, что ещё придумать? Ставил снаббер (цепь RC) параллельно контактам реле, С = 0.1 мкФ и R = 100 Ом, значимых улучшений не дало.
    И ещё, у меня изначально аналоговая и цифровая земли были соединены, т.е. накоротко прозванивались, я думал это обязательно нужно для FM приемника (на TEA5767), чтобы передавать радио на темброблок, оказалось, что звук от радио идет спокойно и без, напрямую, соединенных земель ... Сейчас земли раздельны. Цифровые отказы (перезагрузки Arduino) стали намного реже. Сейчас при первом включении шанс перезагрузки равен около 30% (около 3 из 10 раз), при этом даже если Ardunino не перезагрузится, то бывает нервно моргнет всеми своими светодиодами. Т.е. помеха все таки лезет.
    Простите за столь не техничный язык, описал своими словами, как сам понимаю ситуацию.
    Что же предпринять?

    Фото агрегата полу разобранного ("вечно в доделках"):

    [​IMG]
    [​IMG]
     
    Последнее редактирование: 14 июн 2015
  14. Unixon

    Unixon Оракул Модератор

    Опторазвязки поставьте на SPI, хотя бы в качестве временной меры.
     
  15. Unixon

    Unixon Оракул Модератор

    Осциллограф имеется? Хорошо бы посмотреть, как себя ведут все шины питания и интерфейсные сигналы между модулями.
     
  16. Salk

    Salk Гик

    К сожалению, нет такого зверя :(
    Хорошая мысль, схема примет такой вид: ?
    Опторазвязка SPI.jpg
    Не нужно усиливать сигналы с выхода оптопары?
    Конечно +5 В нужно уже брать не от Arduino, а от другого источника, им же запитать RS и SHDN потенциометров, для полной развязки ?
     
    Последнее редактирование: 11 июн 2015
  17. Unixon

    Unixon Оракул Модератор

    За что вы хотите спалить оптопары? Вместо замыкания эмиттеров на землю нужно стягивающие резисторы поставить.
     
    Salk нравится это.
  18. Salk

    Salk Гик

    :D
    Я ж сначала делаю, а потом думаю, что наделал.
    С оптопарами раньше дел не имел, но принцип работы понимаю. Тогда так: ?
    Опторазвязка SPI.jpg
    Где-то в интернете видел, что ставят ещё резистор на вход оптопары, для защиты фотодиода.
    Стягивающие на 1 кОм подойдут?
    Если эксперимент удастся, то можно и не делать отдельный БП для темброблока, обойтись оптронами, и реле ими обвесить, и можно жить дальше. Оптроны как раз сейчас передо мной. Если схема правильная, то сейчас на макетке и проверю.
     
  19. Unixon

    Unixon Оракул Модератор

    10-50 кОм в самый раз.
     
  20. Salk

    Salk Гик

    Что-то не хотят потенциометры нормально работать через оптопары, но я их подключил верно, и даже на линии SPI повесил светодиоды для наглядности работы, и их поведение похоже на правду. Но увы и ах...
    Звук то проходит через потенциометры, но управлять ими не получается, не реагируют на посылаемые им данные.
    Я использовал оптопары PC817, в шите на них сказано, что время отклика может максимум составлять 18 мкс.
    Ну я начал задержки вставлять в разные места кода перед CLK, CS:
    PHP:
    // Шлём данные одного потенциометра
    void sendPotData(byte data)
    {
      for (int i = D_POT_BITS; i > 0; --i)
      {
        digitalWrite(D_POT_SCK, LOW);
    // delay(1);
        digitalWrite(D_POT_MOSI, bitRead(data, i));

        digitalWrite(D_POT_SCK, HIGH);
    delay(1);
      }
    }

    // Обновляем показания всех потенциометров
    void dPotUpdate()
    {
      digitalWrite(D_POT_CS, LOW);

      for (int i = 0; i < D_POT_COUNT; ++i)
        sendPotData(dPotValues[i]);

      digitalWrite(D_POT_CS, HIGH);
    delay(1);
    }
    Потенциометры стали хоть как-то реагировать, при регулировке громкостей, звук начал "рваться", иногда можно было добиться незначительное увеличение громкости или НЧ. Видимо, не удается добиться синхронизации и не хватает быстродействия оптопар?
    Пока это все "успехи".
    [​IMG] [​IMG]
    [​IMG] [​IMG]
     
    Последнее редактирование: 11 июн 2015