Умное твердотельное реле с анализом ШИМ

Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Умное твердотельное реле с анализом ШИМ

Сообщение demonlibra »

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

Основными элементами твердотельного реле для переменного тока являются симистор и драйвер.
Изображение Вырезка из документации на драйвер MOC3x6x-M

Изображение http://smart-chip.ru/upravlenie-nagruzk ... -bez-rele/

Симистор (TRIAC) выполняет роль ключа. В закрытом состоянии проводимость симистора отсутствует, нагрузка выключена.
Для отпирания симистора на его управляющий электрод подаётся напряжение. При этом между основными электродами симистора возникает проводимость, нагрузка оказывается включённой.

Особенностью симистора является то, что для его удержания в открытом состоянии нет необходимости постоянно подавать сигнал на управляющий электрод. Симистор остаётся открытым, пока протекающий через основные выводы ток превышает некоторую величину. Отсюда следует, что выключение нагрузки в цепи переменного тока происходит вблизи моментов времени, когда ток через основные электроды симистора меняет направление.
https://ru.wikipedia.org/wiki/Симистор

Для управления симистором применяется драйвер (PHOTOTRIAC DRIVER OPTOCOUPLER). В зависимости от типа драйвера, сигнал для открытия симистора может подаваться в произвольные моменты времени (левая осциллограмма ниже) или только в моменты смены полярности напряжения в сети (правая осциллограмма ниже). Соответственно и в зависимости от применяемого драйвера, твердотельное реле будет открываться в произвольные моменты времени (твердотельное реле Random-Phase) или при переходе напряжения через ноль (твердотельное реле Zero-Cross).
Изображение Изображение
https://www.youtube.com/watch?v=kRrBL9sri10

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

В случае с твердотельным реле Random-Phase необходимо подавать импульсы управления с задержкой относительно моментов перехода напряжения через 0. Чем больше задержка, тем меньшая часть полупериода напряжения будет пропущена, и тем меньше получится мощность на выходе.

В случае с твердотельным реле Zero-Cross придётся пропускать полупериоды напряжения целиком, но уменьшая количество этих полупериодов в единицу времени будет получена разная мощность на выходе. Например, при частоте питающего напряжения 50 Гц будет 100 полупериодов за одну секунду. Если за секунду пропустить только 30 из них, мы получим 30% мощности.

В обоих случаях для корректной регулировки мощности необходимо синхронизировать сигнал управления и моменты перехода питающего напряжения через ноль.
Без синхронизации твердотельное реле Random-Phase будет иметь на выходе плавающую мощность от 0 до максимального значения. Этот негативный эффект уменьшается при понижении частоты ШИМ сигнала управления.
Твердотельное реле Zero-Cross будет иметь три состояния: закрыто, открыто и открыто для полупериода (т.е. с половиной мощности), причем это будет хаотично. Твердотельное реле пропустит только те полупериоды синусоидального напряжения питания, начало которых совпадёт с импульсами сигнала ШИМ от платы управления.

Например, при частоте питающего напряжения равной частоте ШИМ сигнала управления, т.е. 50 Гц, и коэффициентом заполнения сигнала управления отличным от 1, можно говорить лишь о вероятности одного из трех состояний твердотельного реле.
  • Коэффициент заполнения = 1 - полная мощность
  • Коэффициент заполнения ≥ 0.5 - половина или полная мощность
  • Коэффициент заполнения < 0.5 - 0 или половина мощности
Изображение Изображение Изображение Изображение

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

Если же мощность Вашего нагревателя превышает необходимую в несколько раз, Вам может помочь решение описанное далее.
Для эксперимента собрал схему синхронизации ШИМ сигнала управления и напряжения питания сети из следующих компонентов:
  • Arduino Nano.
  • Плата опторазвязки обеспечивает изоляцию платы управления и Arduino.
  • Димер осуществляет питание грелки и выдает сигнал перехода напряжения питания через ноль.
Платы (экспериментальный вариант)
Указанные комплектующие использовались только на первоначальным этапе.
Далее в теме присутствует более оптимальный вариант.


Arduino: https://aliexpress.ru/item/32241691182.html
Изображение

Димер с определением перехода через 0: https://aliexpress.ru/item/32802025086.html
https://robotdyn.com/ac-light-dimmer-mo ... -110v.html
Изображение Изображение

Плата опторазвязки: https://aliexpress.ru/item/32798185851.html
Изображение
Принцип работы:
Сигнал ШИМ с платы управления (в моём случае Lerdge-K) поступает через плату опторазвязки на вход Arduino, которая вычисляет длительность импульсов включения.
Димер подаёт на Arduino сигналы перехода синусоиды напряжения через 0. От этих временных меток определяется момент подачи сигнала для открытия симистора. Таким образом достигается синхронизация сигнала ШИМ от платы управления с синусоидальным напряжением питания.
Sketch - Версия 1 (экспериментальный вариант)
!!! Только для ознакомления. Не используйте этот вариант в реальном устройстве.
Последний актуальный рабочий вариант можно найти здесь: https://github.com/demonlibra/smart_ssr

Код: Выделить всё

const byte pwm_in = 6;              // Вход для сигнала ШИМ от Lerdge
const byte ZC_in = 3;              // Вход контроля перехода синусоиды через ноль
const byte dimmer_out = 5;          // Выход управления димером

int duty = 0;
uint32_t timeStart = micros();
uint32_t timeEnd = micros();
uint32_t timer1 = millis();
uint32_t start = micros();

byte stateInNow = 1;
byte stateInBefore = 1;

void setup() {
  pinMode(pwm_in, INPUT_PULLUP);
  pinMode(ZC_in, INPUT_PULLUP);
  pinMode(dimmer_out, OUTPUT);
}

void loop() {

  stateInNow = digitalRead(pwm_in);
  
  if (!stateInNow && stateInBefore) {
    timeStart = micros();
  }
  
  if (stateInNow && !stateInBefore) {
    timeEnd = micros();
    duty = timeEnd - timeStart;
  }
  
  if (!stateInNow && (micros() - timeStart > 20000)) {
      duty = 20000;
  }
  if (stateInNow && (micros() - timeStart > 20000)) {
      duty = 0;
  }
  if (duty < 0 ) {
      duty = 0;
  }

  stateInBefore = stateInNow;

  if (digitalRead(ZC_in)) {
    digitalWrite(dimmer_out, LOW);
    start = micros();
  } else {
    if ((micros() - start) > (10000 - duty/2)) {
      digitalWrite(dimmer_out, HIGH);
    }
  }
 
}
Вот такую картину имеем в результате:
Изображение Изображение Изображение

Изображение Изображение Изображение
желтые графики - напряжение после димера
синие графики - ШИМ с платы управления (после платы согласования)

Практической цели эксперимент не имеет. Просто было интересно это реализовать и повозиться с Arduino.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Питание грелки без потери ШИМ

Сообщение demonlibra »

Ниже график нагрева до 85 градусов. Показания с термистора внутри грелки.
Отклонение от заданной температуры менее 0.5 градуса, что соответствует колебанию показаний в состоянии покоя.

Изображение Изображение
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Питание грелки без потери ШИМ

Сообщение demonlibra »

Внёс изменения в sketch:
  1. Изначально время включения соответствовало длительности импульсов ШИМ с платы управления, что некорректно так как зависимость не линейная. Для корректного расчета времени включения пришлось вспомнить синусы и косинусы.
  2. Добавил ограничение мощности.
  3. Добавил задание частоты сигнала ШИМ от платы управления. Актуально для прошивки Marlin.
  4. Добавил в код комментарии.
Ссылка на файлы проекта: https://github.com/demonlibra/smart_ssr
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение demonlibra »

Варианты схем:
Изображение Изображение Изображение
  1. Вариант с опторазвязкой.
  2. Вариант без опторазвязки.
  3. Вариант без опторазвязки и преобразователя (+5В берем с платы управления).
Данная схема позволяет следующее:
  1. Решить проблему неадекватной работы обычного твердотельного реле. Данная проблема проявляется не у всех.
  2. Обеспечить более точное поддержание температуры с грелками, мощность которых превышает необходимую в несколько раз.
  3. Задать ограничение мощности. Может быть актуально для мощных грелок, если стол ведёт от быстрого нагрева.
  4. Все элементы на виду. В китайской коробочке залитой компаундом и надписью SSR внутри может быть всё что угодно. На корпусе может быть указано 40А, при симисторе с максимальным током 12А внутри.
Важно: У большинства всё работает и без этого велосипеда. Не торопитесь реализовывать данную схему.
Комплектующие
Плата опторазвязки
В описании указано, что модуль предназначен для 12В и на входе установлен токоограничивающий резистор 470 Ом.
По факту 1 кОм, так что вполне можно использовать с 24В.
https://aliexpress.ru/item/32719957788.html
Требуется не во всех вариантах схем.

Shield для Arduino Nano
Упрощает соединение и установку Arduino.
https://aliexpress.ru/item/32241691182.html
https://aliexpress.ru/item/33035175004.html

Димер с выводом сигнала перехода напряжения через ноль (Zero Cross)
https://aliexpress.ru/item/32802025086.html
https://aliexpress.ru/item/1005001965951718.html - предпочтительный вариант
Такие решения нашёл только у RobotDyn.

Преобразователь напряжения
https://aliexpress.ru/item/32591388277.html
https://aliexpress.ru/item/32231002082.html
Мне нравится последний вариант из-за компактности, но можно использовать любой другой.
Общее потребление схемы менее 30 мА (нагрев радиатора на 20С относительно комнатной), так что линейный стабилизатор вполне подойдет.
!!! Прежде чем подключать Arduino, установите 5В на выходе преобразователе напряжения !!!
Можно обойтись без преобразователя, если взять +5В с платы управления принтером или подключив Arduino к USB.

Arduino Nano
https://aliexpress.ru/item/32241691182.html
https://aliexpress.ru/item/32664577152.html
Вариант с миниатюрной платой digispark.
Не бойся поломать. Бойся не починить ))
Изображение
Евгений Шаврин
Сообщения: 5
Зарегистрирован: 27 июл 2020, 17:17

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение Евгений Шаврин »

Есть несколько вопросов к способу:
1. Модуль если верить магазу - на 2А, рискованно такой ставить на стол больше 400ватт, хотя мб и норм будет работать.
2. У ардуинки порт vin (Voltage in) идёт на понижаку с 6.5-12 до 5 вольт и подключать туда 5 вольт нельзя, для этого на ней есть отдельный пин.
3. Оптрон перед ардуинкой, что и от чего он развязывает?
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение demonlibra »

1. Я пробовал на 600 Вт, но длительных тестов пока не проводил.
В любом случае я буду занижать мощность. Это одна из причин возникновения этого "велосипеда".

По datasheet`у у симистора BTA16-600B максимальный ток 16А. Конечно может быть ограничение связано с дорожками платы.
Нагрев стола на максимальной мощности будет длиться пару минут, потом ток для поддержания температуры будет в разы ниже.

Кстати, в некоторых дешевых китайских твердотельных реле, на которых пишут даже 40А внутри симисторы BTA12.

2. Согласен, поправил.

3. Развязать линии 24 и 5 В. У меня не достаточно знаний чтобы утверждать, что это необходимо или правильно.
Я уверен только в том, что с опторазвязкой хуже не будет.
Вариант схемы без опторазвязки проверял, тоже работает.

Если у Вас есть грамотное объяснение правильности одного из вариантов или какой-то свой вариант лучше, буду только рад.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение demonlibra »

Как залить Sketch в Arduino?
В сети очень много информации по Arduino. Мне помог следующий ресурс:
https://alexgyver.ru/arduino-first/
https://alexgyver.ru/lessons/

Подключаем Arduino к ПК через USB.
Устанавливаем драйвер конвертера CH34x, если устройство определилось как неизвестное: https://alexgyver.ru/arduino-first/#step-2

Скачиваем среду разработки Arduino IDE для своей операционной системы: https://www.arduino.cc/en/Main/Software
Запускаем Arduino IDE.

Во вкладке Tools открываем Board и выбираем Arduino Nano.
Во вкладке Tools открываем Processor и выбираем ATmega328P (Old Bootloader).
Во вкладке Tools открываем Port и выбираем порт, которому подключена плата Arduino.

Во вкладке File нажимаем Open, выбираем файл Sketch`а.
Во вкладке Sketch нажимаем Upload. Через пару секунд прошивка будет загружена в плату и микроконтроллер начнёт работу.
Как залить Sketch в Arduino подключенную к Raspberry Pi из терминала?
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение demonlibra »

Добавил модель для крепления всех элементов
https://github.com/demonlibra/uni/tree/master/smart_ssr

Изображение
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение demonlibra »

Вспомнил, что на плате управления уже есть свой преобразователь на 5В.
Например, +5В и GND можно взять с разъема датчика окончания филамента, который обычно не используется, или любого другого концевика. Повторюсь, что потребление схемы менее 30мА.

Изображение
Не бойся поломать. Бойся не починить ))
Изображение
Евгений Шаврин
Сообщения: 5
Зарегистрирован: 27 июл 2020, 17:17

Re: Умное твердотельное реле или Питание грелки без потери ШИМ

Сообщение Евгений Шаврин »

Кстати, я вспомнил, что существуют
Изображение Изображение
такие платки разве не было бы удобней и целесообразней применить их?
если что называются digispark и стоят в 2 раза дешевле, да и втыкаются сразу в юсб порт

По идее при смене платы даже ничего не придётся кроме номеров портов в скетче и добавления платы в менеджере

Вернуться в «Столы»