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

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

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

Сообщение demonlibra »

Силовым элементом твердотельного реле является симистор (TRIAC).

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

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

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

Твердотельное реле может позволить плавно регулировать мощность нагрузки, если в её роли выступает нагревательный элемент (грелка).
В случае с твердотельным реле 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.
  • Димер осуществляет питание грелки и выдает сигнал перехода напряжения питания через ноль.
Платы
Показать
Принцип работы:
Сигнал ШИМ с платы управления (в моём случае Lerdge-K) поступает через плату опторазвязки на вход Arduino, которая вычисляет длительность импульсов включения.
Димер подаёт на Arduino сигналы перехода синусоиды напряжения через 0. От этих временных меток определяется момент подачи сигнала для открытия симистора. Таким образом достигается синхронизация сигнала ШИМ от платы управления с синусоидальным напряжением питания.
Sketch - Версия 1
Показать
!!! Только для ознакомления. Не используйте этот вариант в реальном устройстве.
Последний актуальный рабочий вариант можно найти здесь: https://github.com/demonlibra/uni/blob/master/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.
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

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

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

Сообщение demonlibra »

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

Изображение Изображение
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

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

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

Сообщение demonlibra »

Внёс изменения в sketch:
  1. Изначально время включения соответствовало длительности импульсов ШИМ с платы управления, что некорректно так как зависимость не линейная. Для корректного расчета времени включения пришлось вспомнить синусы и косинусы.
  2. Добавил ограничение мощности.
  3. Добавил задание частоты сигнала ШИМ от платы управления. Актуально для прошивки Marlin.
  4. Добавил в код комментарии.
Ссылка на файлы проекта: https://github.com/demonlibra/uni/tree/master/smart_ssr
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

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

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

Сообщение demonlibra »

Варианты схем:
Изображение Изображение Изображение
  1. Вариант с опторазвязкой.
  2. Вариант без опторазвязки.
  3. Вариант без опторазвязки и преобразователя (+5В берем с платы управления).
Данная схема позволяет обеспечить следующее:
  1. Более точное поддержание температуры. Не знаю, принципиально это или нет.
  2. Возможность ограничения мощности. Может быть актуально для мощных грелок, если стол ведёт от быстрого нагрева.
  3. Все элементы на виду. В китайской коробочке залитой компаундом и надписью 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
Вариант от 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: viewtopic.php?p=3219#p3219
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

Евгений Шаврин
Сообщения: 5
Зарегистрирован: 27 июл 2020, 17:17

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

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

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

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

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

Сообщение demonlibra »

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

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

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

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

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

Если у Вас есть грамотное объяснение правильности одного из вариантов или какой-то свой вариант лучше, буду только рад.
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 1248
Зарегистрирован: 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 из терминала?
Показать
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

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

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

Сообщение demonlibra »

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

Изображение
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

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

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

Сообщение demonlibra »

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

Изображение Изображение
Ссылки
Показать
https://github.com/demonlibra/uni/tree/master/smart_ssr

Димер с выводом сигнала перехода напряжения через ноль
https://aliexpress.ru/item/32802025086.html

Arduino Nano в комплекте с Shield`ом
https://aliexpress.ru/item/1871410817.html
Не бойся поломать. Бойся не починить ))
Мои файлы на github`е
Изображение

Евгений Шаврин
Сообщения: 5
Зарегистрирован: 27 июл 2020, 17:17

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

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

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

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

Ответить

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