При диммировании = 128 напряжение внезапно возрастает до 240 вольт, а затем снова падает до 0 вольт.

При использовании схемы диммера с esp8266, при диммировании = 128, напряжение внезапно возрастает до 240 вольт, а затем возвращается к 0 вольт. На выходе подключена индуктивная нагрузка, как у НАСТОЛЬНОГО ВЕНТИЛЯТОРА. У него нет какого-либо адаптера, он работает от сети переменного тока.

Где диапазон затемнения составляет 0-128. 0=ВКЛ (без ограничения мощности) означает, что нагрузка должна быть ВКЛ. 128=OFF означает, что нагрузка должна быть отключена.

  1. Происходит ли это обычно в схеме диммера при подключенной нагрузке [НАСТОЛЬНЫЙ ВЕНТИЛЯТОР] или я что-то делаю неправильно?

  2. Кроме того, можем ли мы использовать это значение (128) для переключения? -- Это означает, что всякий раз, когда мы устанавливаем диммирование=128, нагрузка будет оставаться выключенной, а потребление энергии в сторону нагрузки прекратится, поскольку переключатель работает.

Я новичок и впервые пробую диммер esp8266.

Здесь напряжение в сети составляет 230-240 вольт переменного тока, частота электропитания 50 Гц.

Я ссылаюсь на эту схему как есть, вместе с кодом, только изменением является значение яркости, полученное с помощью последовательного интерфейса

Здесь я использую индуктивную нагрузку (НАСТОЛЬНЫЙ ВЕНТИЛЯТОР).

это схема, предназначенная для диммера

`

  const int interruptPin = 14;
int AC_LOAD = 4;    // Выход на вывод оптосимистора
int dimming = 128;  // Уровень затемнения (0-128) 0 = ВКЛ, 128 = ВЫКЛ

void setup()
{
  Serial.begin(115200);
  pinMode(AC_LOAD, OUTPUT);// Установить вывод нагрузки переменного тока как выход
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), zero_crosss_int, RISING);  // Выберите номер прерывания по нулевому пересечению из таблицы выше
}

//функция прерывания не должна принимать параметров и ничего не возвращать
void zero_crosss_int()  //функция, которая будет запущена при пересечении нуля, чтобы уменьшить яркость света
{
  // Расчет угла зажигания: 1 полная волна 50 Гц = 1/50 = 20 мс
  // Каждое пересечение нуля таким образом: (50 Гц)-> 10 мс (1/2 цикла)
  // 10 мс=10000 мкс
  // (10000 мкс - 10 мкс) / 128 = 75 (приблизительно)

  int dimtime = (75 * dimming);  // Для 60 Гц =>65
  delayMicroseconds(dimtime);    // Ждать срабатывания симистора
  digitalWrite(AC_LOAD, HIGH);   // Запустить симистор
  delayMicroseconds(10);         // задержка распространения сигнала симистора
  // (для 60 Гц используйте 8,33) Некоторым симисторам требуется более длительный период
  digitalWrite(AC_LOAD, LOW);    // Больше не запускает TRIAC (следующее пересечение нуля выключит его) TRIAC
}


void loop()  {

   dimming = Serial.read(); // значение затемнения берется из последовательного порта
                               dimming the load


}`

, 👍1