• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Диммер на ESP-01

nikolz

Well-known member
А зачем предлагать какое-то решение, если это решение не правильное и не подходит? Вопрос то был достаточно конкретный, почему так работает детектор.
Я вам уже ответил что сделать.
а на вопрос "Почему" читайте учебники и документацию на оптроны.
 

CodeNameHawk

Moderator
Команда форума
Отключите В1.
От регулируемого источника, через резистор пропустите ток через диод оптотранзистора, от нуля до 20 ма.
Так вы сможете проверить открывается ли ОК2.
И ради любопытства, ОК1 работает?
Почему ОК2 не такой же как ОК1?
 

Melandr

Member
вот отслеживал работу OK1
SDS00002.jpg
Это включение выключателя
SDS00003.jpg
Это отключение выключателя
2020-11-15_234028.jpg
Это аптайм с сайта
2020-11-15_234513.jpg
правда чего то выключатель не меняется, вчера менялся.
ЗЫ: последовательный порт стремно подключать, так как ESP запитана от 220 в, можно сжечь материнскую плату. Можно попробовать подключить к ноуту, запитанному от батареи
2020-11-15_234833.jpg
 

nikolz

Well-known member
вот отслеживал работу OK1
ЗЫ: последовательный порт стремно подключать, так как ESP запитана от 220 в, можно сжечь материнскую плату. Можно попробовать подключить к ноуту, запитанному от батареи
Не ЗЫ, а стремно читать эту хрень.

У Вас ЗЫ, компьютер тоже от 220 вольт запитан и ничего подключаете к нему устройства?

Вы бы документацию сначала прочитали на блок питания к которому подключен ESP.

Вот цитата:
4.Safety Characteristics:
4.1 Products designed to meet UL, CE safety certification requirements.
4.2 Safety and electromagnetic compatibility Designed with the input of 0.5A UL certified insurance; PCB board using double-sided copper clad plate production, material for the 94-V0 fire rating level; Safety standards: Compliance with UL1012, EN60950, UL60950
Insulation voltage: I / P-O / P: 2500VAC Insulation resistance :
I / PO / P> 100M Ohms / 500VDC 25 ℃ 70% RH Conduction and radiation :comply with EN55011, EN55022 (CISPR22) Electrostatic discharge :IEC / EN 61000-4-2 level 4 8kV / 15kV RF radiation Immunity: IEC / EN 61000-4-3 See Application

вот Вам и ЗЫ.
 

nikolz

Well-known member
еще раз повторю для Вас.
Решить вашу проблему можно следующим образом
1) заменить оптрон в OK2 на PC817
2) Увеличить резистор R15.

Для оптрона 4N35 предложил Вам увеличить резистор R15 до 4.7К (у вас есть такой номинал на схеме) и посмотреть картинку достаточно ли этого.

Как решить проблему Вы не знаете, но считаете знаете что то, а что не то.
Смешно.
 

Melandr

Member
А если не сложно, подскажите, в чем разница между PC817 и 4N35? Я считал что они аналоги. Правда у PC817 коэффициент передачи по току выше
 

nikolz

Well-known member
А если не сложно, подскажите, в чем разница между PC817 и 4N35? Я считал что они аналоги. Правда у PC817 коэффициент передачи по току выше
минимальный рабочий ток входа
для PC817 - 5 мА для 4N35 -10мА
Это может быть причиной вашей проблемы.
Я Вам выше посчитал что входные резисторы по 30 к позволяют получить ток на входе не выше 5 ма.
 

nikolz

Well-known member
кроме того выше я вам показал картинку из документации для PC817 из которой следует что требование по входному току можно уменьшить если уменьшить ток по выходу.
Поэтому я Вам рекомендовал увеличить резистор R15 с 1 к хотя бы до 4.7к.
 

Melandr

Member
кроме того выше я вам показал картинку из документации для PC817 из которой следует что требование по входному току можно уменьшить если уменьшить ток по выходу.
Поэтому я Вам рекомендовал увеличить резистор R15 с 1 к хотя бы до 4.7к.
А относительно 4N35 такой прием не сработает? При уменьшении выходного тока - уменьшится ли входной?
Вечером попробую, если успею, заменить R15 на 4,7к. мне правда на работе, коллега, советует поставить шунтирующий резистор параллельно светодиоду оптопары где-то 10к
 

nikolz

Well-known member
А относительно 4N35 такой прием не сработает? При уменьшении выходного тока - уменьшится ли входной?
Вечером попробую, если успею, заменить R15 на 4,7к. мне правда на работе, коллега, советует поставить шунтирующий резистор параллельно светодиоду оптопары где-то 10к
относительно 4N35 тоже сработает
Я Вам в самом начале сказал - покажите картинку с увеличенным сопротивлением R15.
Не понимаю в чем сложность вместо 1 к поставить любой резистор в диапазоне от 2.2 к до 20 к и показать картинку.
За время ля ля на форуме уже сто раз сделали бы и проблему решили бы если бы делали то что вам говорят а не ля ля про почему и что на работе говорят.
или Вам главное "А поговорить?"
 

nikolz

Well-known member
И еще
Вы можете освободить Tx для отладки если есть желание.
Надо задействовать GPIO0 вместо него.
и триаком управляете неудачно
А вместо OK1 Можно использовать OK2 или наоборот.
схему разрабатывал троешник или двоешник - списал из интернета несколько схем и склеил монстра.
 

Melandr

Member
Надо задействовать GPIO0 вместо него.
Добрый день! GPIO0 использовать не самое удачное решение. Данный пин используется при загрузке, как и TX. Нашел в интернете занятную табличку
И там указывается что низкий уровень на TX при загрузке может к сбою.
А GPIO0 вообще не рекомендуют использовать как вход, так как он используется для выбора режима загрузки.
Я сначала использовал GPIO0, но из 10 включений ESP, удачными были 3. из-за того, что детектор был на GPIO0
 

Melandr

Member
Вечером, если успею, сделаю осциллограммы детектора перехода через "0", с подтяжкой к питанию. Схема хорошо отрабатывала, но все время она находилась в низком уровне и ESP не стартовала.
Я хочу переделать низковольтную часть, чтобы подтяжка была к земле, и на пине ESP основную часть времени был бы высокий уровень, и только при переходе через 0, появлялся низкий.
 

nikolz

Well-known member
Добрый день! GPIO0 использовать не самое удачное решение. Данный пин используется при загрузке, как и TX. Нашел в интернете занятную табличку
И там указывается что низкий уровень на TX при загрузке может к сбою.
А GPIO0 вообще не рекомендуют использовать как вход, так как он используется для выбора режима загрузки.
Я сначала использовал GPIO0, но из 10 включений ESP, удачными были 3. из-за того, что детектор был на GPIO0
а то я не знаю что используется для загрузки.
Поэтому и предлагаю Вам еще один пин в работу - GPIo0
Про это в инете скорее всего не найдете, так как это дилетанты не знают.
 

nikolz

Well-known member
и еще
посмотрите в каком режиме у вас триак при включении питания, до того момента, как начнется исполняться программа.
 

Melandr

Member
Доброй ночи!
Вот посмотрел осциллограммы детектора нуля с подтяжкой к 3,3В на 10 к
SDS00001.png
SDS00002.png
По симистору состояние посмотреть забыл, но залил такой скетч, чтобы поморгать лампой каждые 10 сек
Код:
#define CAYENNE_PRINT Serial    // Comment this out to disable prints and save space
#include <CayenneMQTTESP8266.h>                                     // Include library file for MQTT

#define TRIAC_PIN     2         //GPIO2
#define ZC_PIN        1         //GPIO1 - TXD
#define BUTTON_PIN    3         //GPIO3 - RXD

void ICACHE_RAM_ATTR zero_crosss_int();

char ssid[] = "ASUS";                                               // Your WIFI Name  
char wifiPassword[] = "gCU8YNZs";                                    // Your WIFI password
char username[] = "ххх";           // Your MQTT cayenne username
char Password[] = "ххх";       // Your MQTT cayenne Password
char clientID[] = "ххх";           // Your MQTT cayenne clientID

int DIMMING_VALUES = 0;
int DIMMING_TIME = 0;
int BUTTON = 0;
int lightStatus = 0;

volatile unsigned long countZeroCross = 0;
unsigned long lastMillis = 0;

//=====================Basic Setup ============================

void setup(){
//   Serial.begin(115200);                                              // Setup Debug uart port if you want ?
   pinMode(TRIAC_PIN, OUTPUT);                                         // Set AC Load pin as output
   digitalWrite(TRIAC_PIN, LOW);
   pinMode(BUTTON_PIN, INPUT_PULLUP);
   pinMode(ZC_PIN, INPUT_PULLUP);
 
   attachInterrupt(digitalPinToInterrupt(ZC_PIN), zero_crosss_int, RISING);                     // Choose the zero cross interrupt egde selection
   Cayenne.begin(username, Password, clientID, ssid, wifiPassword); // Setup cayenne server for MQTT protocol

   // Настройте функцию, которая будет вызываться каждую секунду
//  timer.setInterval(1000L, sendUptime);
}

void loop()
  {
      Cayenne.loop();

      if(millis() - lastMillis > 10000){
        lastMillis = millis();
        digitalWrite(TRIAC_PIN, !digitalRead(TRIAC_PIN));
      }
      BUTTON = digitalRead(BUTTON_PIN);
  }

void ICACHE_RAM_ATTR zero_crosss_int()                   //function to be fired at the zero crossing to dim the light
{
  DIMMING_TIME = (75 * DIMMING_VALUES);  // For 60Hz =>65
  delayMicroseconds(DIMMING_TIME);       // Wait till firing the TRIAC
  digitalWrite(TRIAC_PIN, HIGH);            // Fire the TRIAC
  delayMicroseconds(10);                 // triac On propogation delay
                                         // (for 60Hz use 8.33) Some Triacs need a longer period
  digitalWrite(TRIAC_PIN, LOW);             // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
  countZeroCross += countZeroCross;
}

CAYENNE_OUT_DEFAULT()
{
  // Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
  Cayenne.virtualWrite(V0, millis());
//  Serial.println(millis());
  Cayenne.virtualWrite(V5, BUTTON);
//  Serial.println(BUTTON);
  Cayenne.virtualWrite(V6, countZeroCross);  
//  Serial.println(countZeroCross);
  // Some examples of other functions you can use to send data.
  //Cayenne.celsiusWrite(1, 22.0);
  //Cayenne.luxWrite(2, 700);
  //Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}

CAYENNE_IN(1)
{
  int Dimm_Val=getValue.asInt();
  DIMMING_VALUES = (120-Dimm_Val);
//  Serial.println(DIMMING_VALUES);
}

CAYENNE_IN(2)
{
  digitalWrite(TRIAC_PIN, !getValue.asInt());  // to get the value from the website
}
//==================================================================
Лампа моргает
Ниже осциллограммы на низкой стороне оптрона сисмистора
при включении и выключении симистора
SDS00003.png
SDS00004.png
Хочу переделать низкую часть детектора нуля, чтобы подтяжка была к земле, и TX был в низком состоянии при переходе через 0 напряжения сети.
 

Melandr

Member
Доброго утра!
Походу я при переделке детектора нуля с пина GPIO0 на TXD что-то накосячил, с перерезанием дорожек и сделал неправильно.
Также вспомнил, что при включении питания, лампа мигает на полсекунды. Но осциллограмму не посмотрел, что происходит с выводом управления симистором.
 

CodeNameHawk

Moderator
Команда форума
Вы одновременно используете сериал и коротите ногу Tх на землю.
Тут надо как в анекдоте про попа трусы и цепочку с крестом.
 

Melandr

Member
Но TX при загрузке шлет информацию в последовательный порт, от этого не уйдешь. Это то же самое, что товарищ, который сделал диммер на ESP, использовал для детектора 0 пин GPIO0. И на переднюю панель этого диммера вывел кнопку перезапуска. У него спрашивают, а зачем вам кнопка перезапуска на передней панели, а он отвечает, что ESP стартует не с первого раза и приходится перезапускать несколько раз для нормального старта.
 
Сверху Снизу