Я вам уже ответил что сделать.А зачем предлагать какое-то решение, если это решение не правильное и не подходит? Вопрос то был достаточно конкретный, почему так работает детектор.
а на вопрос "Почему" читайте учебники и документацию на оптроны.
Я вам уже ответил что сделать.А зачем предлагать какое-то решение, если это решение не правильное и не подходит? Вопрос то был достаточно конкретный, почему так работает детектор.
Не ЗЫ, а стремно читать эту хрень.вот отслеживал работу OK1
ЗЫ: последовательный порт стремно подключать, так как ESP запитана от 220 в, можно сжечь материнскую плату. Можно попробовать подключить к ноуту, запитанному от батареи
минимальный рабочий ток входаА если не сложно, подскажите, в чем разница между PC817 и 4N35? Я считал что они аналоги. Правда у PC817 коэффициент передачи по току выше
А относительно 4N35 такой прием не сработает? При уменьшении выходного тока - уменьшится ли входной?кроме того выше я вам показал картинку из документации для PC817 из которой следует что требование по входному току можно уменьшить если уменьшить ток по выходу.
Поэтому я Вам рекомендовал увеличить резистор R15 с 1 к хотя бы до 4.7к.
относительно 4N35 тоже сработаетА относительно 4N35 такой прием не сработает? При уменьшении выходного тока - уменьшится ли входной?
Вечером попробую, если успею, заменить R15 на 4,7к. мне правда на работе, коллега, советует поставить шунтирующий резистор параллельно светодиоду оптопары где-то 10к
Добрый день! GPIO0 использовать не самое удачное решение. Данный пин используется при загрузке, как и TX. Нашел в интернете занятную табличкуНадо задействовать GPIO0 вместо него.
а то я не знаю что используется для загрузки.Добрый день! GPIO0 использовать не самое удачное решение. Данный пин используется при загрузке, как и TX. Нашел в интернете занятную табличку
И там указывается что низкий уровень на TX при загрузке может к сбою.ESP8266 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials
The ESP8266 comes with 33 GPIOs with multiple functions. This article is a simple and easy to follow reference guide for the ESP8266 NodeMCU GPIOs.randomnerdtutorials.com
А GPIO0 вообще не рекомендуют использовать как вход, так как он используется для выбора режима загрузки.
Я сначала использовал GPIO0, но из 10 включений ESP, удачными были 3. из-за того, что детектор был на GPIO0
#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
}
//==================================================================
И как это вдруг осциллограмма развернулась на 180 градусов относительно поста номер 5.Вот посмотрел осциллограммы детектора нуля с подтяжкой к 3,3В на 10 к