Симистор+arduino

antoshka12016

✩✩✩✩✩✩✩
15 Июн 2023
6
0
Добрый день. Собрал схему:
dimmer.jpg
Код:
#define ZERO_PIN 2    // пин детектора нуля
#define INT_NUM 0     // соответствующий ему номер прерывания
#define DIMMER_PIN 3  // управляющий пин симистора
#include <GyverTimers.h>  // библиотека таймера
#include <GyverNTC.h>
#include <GyverDimmer.h>

GyverNTC therm(2, 9700, 3950);

int dimmer=9300;               // переменная диммера
void setup() {
  pinMode(ZERO_PIN, INPUT_PULLUP);
  pinMode(DIMMER_PIN, OUTPUT);
  attachInterrupt(INT_NUM, isr, FALLING);  // для самодельной схемы ставь FALLING
  //Timer2.enableISR();
  Serial.begin(2000000);
}
void loop() {
  // задаём значение 500-9300, где 500 максимум мощности, 9300 минимум!!!
  // и 500-7600 для 60 Гц в сети
  //dimmer = map(1022, 0, 1024, 500, 9300);
  //delay(100); // в реальном коде задержек быть не должно

  Serial.print("Temperature ");
  Serial.print(therm.getTempAverage());
  Serial.println(" *C");
}
// прерывание детектора нуля
void isr() {
 static int lastDim;
  digitalWrite(DIMMER_PIN, LOW);  // выключаем симистор
  // если значение изменилось, устанавливаем новый период
  // если нет, то просто перезапускаем со старым
  if (lastDim != dimmer) Timer2.setPeriod(lastDim = dimmer);
  else Timer2.restart();
}

// прерывание таймера
ISR(TIMER2_A) {
  digitalWrite(DIMMER_PIN, HIGH);  // включаем симистор
  Timer2.stop();                // останавливаем таймер
}
Поблема: при любом значении dimmer питание идет на полную.
Симистор и оптопару менял.
Кто может подсказать?
Спасибо)
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,433
985
59
Марий-Эл
Осцилографом на выходе оптрона нужно посмотреть есть ли сигнал.
Или убрать оптрон, поставить симистор MOC3041 - 3043. У них встроенный детектор нуля.
И убрать из кода работу с оптроном.
 
  • Лойс +1
Реакции: antoshka12016

antoshka12016

✩✩✩✩✩✩✩
15 Июн 2023
6
0
Осциллографа к сожалению нет, но если мерять мультиметром то на выходе оптрона 186 В. Хотя на входе с ардуины 0. Пробовал их (оптронов) несколько.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,433
985
59
Марий-Эл
Мультиметром там не померяешь. Разве что поставить его на измерение переменки. Да и то это не поможет. Точной картины не даст.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,433
985
59
Марий-Эл
Раз 186 вольт, значит фигню показывает. Скорее наводки на цепь.
Если дальше продолжать заниматься электроникой, без осцилографа никак.
Хотя бы простенький, USB, но желательно с изолированным выходом.
 

poty

★★★★★★✩
19 Фев 2020
3,379
969

@antoshka12016, тут может быть всё, что угодно, от неправильно собранной схемы до скетча.
Вот, например, на схеме оптрон подключен к D4, а в программе - DIMMER_PIN = 3.
Прерывания таймера не инициализированы, а обработчик - есть.
 

antoshka12016

✩✩✩✩✩✩✩
15 Июн 2023
6
0
@poty, Согласен, собрано то правильно, на D3 и таймер инициализирован. *пробовал разные варианты всего
 

Forgetweb

★✩✩✩✩✩✩
8 Май 2022
61
20
attachInterrupt(INT_NUM, isr, FALLING); // для самодельной схемы ставь FALLING
Тут нужен нарастающий фронт.
А вообще надо сначала проверить матчасть. Обычный блинк залить, выход на светодиод = выход на оптосимистор. На выход лампочку. Должна замигать. Это сразу покажет работоспособность и симистора и moc.
 

bort707

★★★★★★✩
21 Сен 2020
3,110
919
Зачем все эта трахомудия с оптроном, если "моська" (драйвер симистора) с детектором нуля стоит ровно столько же, сколько без него?
 

Forgetweb

★✩✩✩✩✩✩
8 Май 2022
61
20
@bort707,
Наверно потому, что человеку диммер нужен. Если детектор нуля встроен, то включить симистор можно только на полный полупериод. А автор темы хочет регулировать фазу.
 
  • Лойс +1
Реакции: bort707

poty

★★★★★★✩
19 Фев 2020
3,379
969

@antoshka12016, вот я тогда не понимаю: в первоначальном запросе ни схема, ни скетч, не соответствуют реальности. Как в таком случае что-то подсказать?
 

poty

★★★★★★✩
19 Фев 2020
3,379
969

@Forgetweb, оптрон инвертирует "сигнал", т.е., в начале синусоиды, когда тока начинаем хватать для того, чтобы зажечь светодиод оптрона, на входе МК появляется срез импульса. От него отсчитывается 500-9300мкс (напомню, что полупериод 50Гц - это 10000мкс) и включается оптрон симистора.
Выключается симистор при достижении нуля синусоиды, а при следующем срезе "детектора нуля" снимается напряжение управления им. В этом тоже может быть проблема, поскольку если симистор детектора нуля открывается поздно (настроен на неправильный ток), то симистор будет открываться до среза "детектора нуля" и снятие напряжения управления уже бесполезно. Поэтому @Эдуард Анисимов и говорил про осциллограф.
 
Изменено:

Forgetweb

★✩✩✩✩✩✩
8 Май 2022
61
20
Избыточное цитирование, см. Правила. Отредактируй или сообщение будет удалено

@Forgetweb, оптрон инвертирует "сигнал", т.е., в начале синусоиды, когда тока начинаем хватать для того, чтобы зажечь светодиод оптрона, на входе МК появляется срез импульса.
...
то симистор будет открываться до среза "детектора нуля" и снятие напряжения управления уже бесполезно.
Если ловить нарастающий фронт, то этой проблемы не будет. Вообще не нужно держать светодиод оптосимистора под током. Но тут держат до конца полупериода. Точнее до начала следующего. И вот именно - может открыться раньше, чем снимется сигнал. Так как оптрон инвертирует сигнал, то именно поэтому и надо ловить нарастающий фронт - это конец полупериода. И все задержки отсчитываем от него.
 
  • Лойс +1
Реакции: poty

poty

★★★★★★✩
19 Фев 2020
3,379
969
@Forgetweb, это всё издержки "оптимизации". Сейчас не буду о схеме говорить - отдельная песня, но в коде можно было бы адаптироваться к факту, что уровень детектирования этим "детектором нуля" меняется от кучи внешних параметров и, соответственно, будет меняться мощность в нагрузке.
 

antoshka12016

✩✩✩✩✩✩✩
15 Июн 2023
6
0
Это сигнал на входе ардуины с детектора 0. Я так понимаю осциллограф нельзя подключать к 220?

Но вот, на выходе ардуинки всегда 0. Хотя даже если отключить ее, то все равно всегда работает нагрузка
 

Вложения

poty

★★★★★★✩
19 Фев 2020
3,379
969
это уже неплохо. Теряем около 5% в начале синусоиды, это достаточно хороший результат.
даже если отключить ее, то все равно всегда работает нагрузка
Это тревожный симптом. Попробуйте разорвать цепь управляющего электрода (отпаять, допустим, один конец R1). Если это ни к чему не приведёт - проблема в силовом симисторе. Если в нагрузке будет 0В после разрыва цепи управляющего электрода, то нужно смотреть, почему управляющий оптосимистор постоянно открыт (пробита выходная цепь, есть напряжение на входной цепи...).
 

Forgetweb

★✩✩✩✩✩✩
8 Май 2022
61
20
@antoshka12016, Зашейте стандартный блинк. Выход на светодиод переназначьте на выход к оптосимистору. Нагрузка - лампа накаливания. Должна мигать. Пока этого не будет в коде разбираться тупо нет смысла. И еще момент - в даташитах не просто так RC цепи параллельно симисторам ставят. Причем обоим - moc тоже шунтируется. Впрочем едва ли причина в этом.
 

Forgetweb

★✩✩✩✩✩✩
8 Май 2022
61
20
это уже неплохо. Теряем около 5% в начале синусоиды, это достаточно хороший результат.
Если ловить нарастающий фронт то вообще ничего не теряется. Кто там коммент в коде про спадающий написал загадка. Но этот человек точно плохо представлял себе как работают симисторы.
 

antoshka12016

✩✩✩✩✩✩✩
15 Июн 2023
6
0
R1 отпаял. Проблема осталась. Т.е. проблема в симисторе. Сейчас заменю симистор и отпишусь...

С другим симистором нагрузка не работает. Получается один вопрос остался, Почему ардуина не дает выход для управления симистором, если входной сигнал есть?
 

poty

★★★★★★✩
19 Фев 2020
3,379
969
Это уже вопросы к тому, какой скетч Вы применяете. Исходя из скетча, приведённого в самом начале, с закомментированными инициализациями таймера, он и не должен работать.
Плюс я бы прислушался к @Forgetweb, а ещё лучше - ловил бы оба события (и фронт, и срез) и рассчитывал угол исходя из этого, а не приблизительными способами. Заодно можно снимать управляющий сигнал до обратного перехода в ноль, что исключит проблемы с ранней подачей управляющего сигнала, если он не выключился в предыдущем цикле.
 

Forgetweb

★✩✩✩✩✩✩
8 Май 2022
61
20
Да зашейте блинк уже. Из примеров Ардуины. Минута всего. И узнаем работает ли железо. Изменить надо только вывод на светодиод в исходнике и все. Замигает лампочка в нагрузке - все хорошо. Пока лампочка на выходе не замигает толку копать код нет.
 
  • Лойс +1
Реакции: te238s и PiratFox

vick_lo

✩✩✩✩✩✩✩
22 Июл 2023
1
0
Если ловить нарастающий фронт то вообще ничего не теряется. Кто там коммент в коде про спадающий написал загадка. Но этот человек точно плохо представлял себе как работают симисторы.
Это Гайвер и написал. Его код и проект.