Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.06.2020, 17:51   #971
macihe
Junior Member
 
Регистрация: 08.06.2020
Сообщений: 3
Вес репутации: 0
macihe is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Упрощенно димер работает так: он синхронизируется с сетью 220В на частоте 50Гц и отрезает лишнюю мощность в каждом полупериоде синусоиды
Минуточку...

Так работает с этим кодом

а с этим:
PHP код:
void halfcycle()  //прерывания таймера 
{  
  
tic++;  //счетчик   
  
if(Dimmer1 tic D4_High//управляем выходом 


Разве не так?

Последний раз редактировалось macihe; 08.06.2020 в 18:03.
macihe вне форума   Ответить с цитированием
Старый 08.06.2020, 22:53   #972
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

нет не так, должен работать именно так, как на приложенном мной изображении
Admin вне форума   Ответить с цитированием
Старый 09.06.2020, 09:25   #973
macihe
Junior Member
 
Регистрация: 08.06.2020
Сообщений: 3
Вес репутации: 0
macihe is an unknown quantity at this point
По умолчанию

Прошу прощения, но в этом коде я не вижу временное включение выхода на симистор.

Развернуть для просмотра

PHP код:
#include "CyberLib.h" //Библиотека от Cyber-Place.ru
volatile uint8_t ticDimmer1Dimmer2Dimmer3;
uint8_t data;

void setup() 

  
D4_OutD5_OutD6_Out//Настраиваем порты на выход
  
D4_LowD5_LowD6_Low//установить на выходах низкий уровень сигнала
  
D2_In//настраиваем порт на вход для отслеживания прохождения сигнала через ноль  
  
//CHANGE – прерывание вызывается при любом изменении значения на входе; 
//RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH) 
//FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low) 
    
attachInterrupt(0detect_upLOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
    
StartTimer1(halfcycle40); //время для одного разряда ШИМ
    
StopTimer1(); //остановить таймер
    
UART_Init(115200); //инициализация порта
}
//********************обработчики прерываний*******************************
void halfcycle()  //прерывания таймера

  
tic++;  //счетчик  
  
if(Dimmer1 tic D4_High//управляем выходом
  
if(Dimmer2 tic D5_High;  //управляем выходом
  
if(Dimmer3 tic D6_High;  //управляем выходом 
}

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
{  
 
tic=0;             //обнулить счетчик
 
ResumeTimer1();   //запустить таймер
 
attachInterrupt(0detect_downHIGH);  //перепрограммировать прерывание на другой обработчик
}  

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{   
 
StopTimer1(); //остановить таймер
 
D4_LowD5_LowD6_Low//логический ноль на выходы
 
tic=0;       //обнулить счетчик
 
attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик

//*************************************************************************
void loop() 
{
Start
  
if (UART_ReadByte(data)) Dimmer1=data;
  
   
Dimmer2=195//200=мин. 0=макс 
   
Dimmer3=0//200=мин. 0=макс 
End
[свернуть]

Вижу только, включение выхода через определенное время, и его выключение при переходе через ноль.

Может все таки так?:

Развернуть для просмотра

[свернуть]

Последний раз редактировалось macihe; 09.06.2020 в 09:34.
macihe вне форума   Ответить с цитированием
Старый 09.06.2020, 20:47   #974
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Открыть симистор
PHP код:
void halfcycle()  //прерывания таймера

  
tic++;  //счетчик  
  
if(Dimmer1 tic D4_High//управляем выходом

Лог 0 на выход, симистор при этом останется открытым до полного исчезновения тока в цепи
PHP код:
void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{   
 
StopTimer1(); //остановить таймер
 
D4_Low//логический ноль на выходы
 
tic=0;       //обнулить счетчик
 
attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик

Симистор если был открытым, то он остается в открытым состоянии при любом уровне на управляющем электроде до полного исчезновения тока в цепи
Для его открытия достаточно длительности импульса 20мкс
Поэтому импульсы открывания симистора будут примерно такими как я нарисовал

Вы нарисовали временные интервалы работы симистора, но не управляющих импульсов
Admin вне форума   Ответить с цитированием
Старый 10.06.2020, 17:29   #975
macihe
Junior Member
 
Регистрация: 08.06.2020
Сообщений: 3
Вес репутации: 0
macihe is an unknown quantity at this point
По умолчанию

Еще минуточку, пожалуйста )))

Устройство и принцип работы симистора я знаю.

Не понятно другое. Где этот импульс (~20мкс)?

Как я вижу:
Если выход (D4_Out) включился, то выключится он только при переходе через ноль .

Развернуть для просмотра

PHP код:
void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{   
 
StopTimer1(); //остановить таймер
 
D4_LowD5_LowD6_Low//логический ноль на выходы
 
tic=0;       //обнулить счетчик
 
attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик

[свернуть]


void detect_down() - отработает только в момент перехода через ноль.
И получается, что выход D4_Out после включения работает до перехода через ноль. Импульса не вижу на D4_Out (((



На осциллографе у Valery22, сигнал на управление нагрузкой весит постоянно до сигнала с детектора "0".
Цитата:
Сообщение от Valery22 Посмотреть сообщение
Желтым - сигнал с детектора "0", Голубым - сигнал на управление нагрузкой.


Если как то так сделать:
PHP код:
void halfcycle()  //прерывания таймера

  
tic++;  //счетчик  
  
if ((Dimmer1 tic1) and (tic1 < (Dimmer1 5))){     
    
digitalWrite(D4_HighHIGH);                         
    }                
  else {
    
digitalWrite(D4_HighLOW);}

то будет включение D4_Out и затем его отключение (импульс 5*40)....

Поправьте, пожалуйста, если что не так.
macihe вне форума   Ответить с цитированием
Старый 12.06.2020, 11:32   #976
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Извиняюсь, действительно так как Вы нарисовали. Я вспомнил, что упростил код пару лет назад.
Но в обоих случаях будет работать так как требуется
Admin вне форума   Ответить с цитированием
Старый 15.07.2020, 18:31   #977
SergeyZ
Junior Member
 
Регистрация: 15.07.2020
Сообщений: 1
Вес репутации: 0
SergeyZ is an unknown quantity at this point
По умолчанию

Добрый день. Приобрел два одноканальных диммера несколько лет назад (еще в предыдущей версии без радиаторов). Какое-то время на одном из них висели недиммируемые светодиодные точечные светильникаи (6 шт) в режиме 0-100%. Когда поставил диммируемые точечные светильники 4W, то при 100% есть пульсация (снижать даже не пробовал).

Погрешил на диммер и заказал обновленный двухканальный диммер с радиаторами. На новом диммере пульсация стала еще заметнее. В чем может быть проблема и как это можно исправить?
SergeyZ вне форума   Ответить с цитированием
Старый 15.07.2020, 21:18   #978
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Пульсации могут появляться при пограничном состоянии светодиода в оптроне. Снижайте максимум пока не добьетесь стабильной работы. Можно доработать скетч, что бы на максимуме отсечка не работала
Admin вне форума   Ответить с цитированием
Старый 17.10.2020, 17:01   #979
Tartuffe
Junior Member
 
Регистрация: 17.10.2020
Сообщений: 1
Вес репутации: 0
Tartuffe is an unknown quantity at this point
По умолчанию

Добрый день!

Как этим диммером можно управлять с NodeMCU? Библиотека "CyberLib.h" написана под Ардуино и при компиляции под ESP8266 выдает ошибку:
C:\Program Files (x86)\Arduino\libraries\CyberLib-master/CyberLib.h:11:27: fatal error: avr/interrupt.h: No such file or directory

#include <avr/interrupt.h>

Можно как-то решить эту проблему?
Tartuffe вне форума   Ответить с цитированием
Старый 18.12.2022, 16:16   #980
Михаил Лысков
Junior Member
 
Регистрация: 18.12.2022
Сообщений: 10
Вес репутации: 0
Михаил Лысков is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от ZombikPC Посмотреть сообщение
Я на это обратил внимание. Но ваш скетч не могу заставить работать без косяков ни на свей схеме ни на купленной. зависает в сетапе и нечего с этим не могу сделать. купленный модуль с ихней либой работает с лампой просто идиально. а вот мотор регулирует от 0 до 70 % примерно. как только свыше 70 % открываешь симистор мотор останавливается начинает гудеть и дергаться.
В чем может быть причина? в софте или в схемотехнике? может нужно на мотор какие-то РЦ цепи от помех ставить?
Добрый день. Столкнулся с той же проблемой. Если сначала запитать arduino, а потом подать 220 на детектор 0, то всё работает идеально. Если ардуину питать от блока питания, запитанного от того же источника 220, то после выключения и включения она зависает. Ни в сериал ничего не выдает, не реагирует никак.... Удалось решить проблему?

Детектор нуля на pc814 - сделано полностью как на схеме в шапке через два 43к резистора
Михаил Лысков вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 154 (пользователей: 0 , гостей: 154)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 18:45. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика