Страница 4 из 4
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Вс дек 26, 2010 02:53:54
mr_smit
Это просто картинка.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Вс мар 13, 2011 20:46:07
mr_smit
Вновь взываю к помощи. Все попытки на протяжении этих 3 месяцев закончились неудачно. Так и не удалось добиться плавного включения. Проскакивают непонятные моргания

На текущей яркости горит без проблем. Моргает только при плавном изменении.
Причем даже когда кнопка на пульте давным давно отпущена...
Переделал схему. Придал ей законченный вид. Синхронизация с сетью через резистивный делитель после трансформатора (как и было), после которого на прерывание идет "синусойда" с амплитудой 3,3 В.
Функция плавного включения:
Код: Выделить всё
void soft_on () {
TCCR1B=0x02;
while (status<=98) {
status++;
OCR1A = nagruzka[status];
OCR1B = nagruzka[status]+100;
delay_ms(delay_);
sprintf(cnt,"%u",status); // преобразование "яркости" в строку
put_string(20, 40,cnt, 0x07E0, 3); // выводим на экран
};
status = 98;
TCCR1B=0x00;
TRIAC_PIN = 0; // полностью включили
}
Задержек в прерывании нет:
Код: Выделить всё
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TRIAC_PIN = 0; // открыли симистор
}
// Timer 1 output compare B interrupt service routine
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
{
TRIAC_PIN = 1; // вернулись в режим ожидания
}
Вот снял видео:
http://www.youtube.com/watch?v=50_hR24FwnI
Может какие то "биения" с сетью 50 Гц и прерываниями от пульта, но как от этого избавиться не знаю. В общем уже всю голову себе сломал.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн мар 14, 2011 09:45:00
mr_smit
Собственно с трансформатора приходит синусойда, 17 вольт. Дальше по схеме. На вывод МК через делитель идут полуволны с частотой 100 Гц. Учитывая что для МК ноль начинается ниже 1,7 вольта, я внес поправки. Я именно:
Подключил 2-х канальный осциллограф. Один щуп на "сеть" второй на вывод который управляет оптопарой. Изменил прошивку так чтобы при детекции ноля МК выдавал импульс ны вывод оптопары:
Т.е. МК детектирует ноль на 800 мкс раньше ноля реального! На основании этого внес поправки в интервал таймера Т1. Который и считает время до открытия симистора. Т.е. просто +800 мкс. Поэтому считаю что детекция нуля идеальная. Но может я не прав??? Потому что рывки при включении... не знаю уже прям...
Есть у меня последних 2 идеи:
1.Использовать последний 3-й таймер ATMega8. Им отсчитывать интервал 0,01 сек. (полупериод) +/- 20%. Если предывание попадает в этот интервал, по открываем симистор, нет - это помеха. Хотя какая к черту помеха если на постоянной яркости горит
СТАБИЛЬНО!!!!!
2. Отключать прерывания от TSOP в момент плавного старта. Но как тогда быть при удержании кнопки??? При этом тоже моргания проскакивают.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн мар 14, 2011 09:51:58
ARV
для детекции нуля у вас не совсем кошерная схема. рекомендую от делителя отказаться, подав переменку через резистор 20 килоом прямо на вывод МК. в этом случае вы будете иметь на пине не синусоиду, а прямоугольный импульс с довольно крутым фронтом. лучше всего для такой синхронизации подходит вход встроенного компаратора, но и с INTx результат удовлетворительный.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн мар 14, 2011 10:15:50
mr_smit
Спасибо за совет. Это как то повлияет на проблемы со случайным морганием? Причем иногда моргает, иногда нет.
P.S. И ещё, простите конечно, но опять же я не понимаю... Почему все говорят про плохую детекцию нуля???? Вновь подчеркну что при постоянной яркости, например 30% или 50%, лампа горит без сбоев!!! Какого она тогда это делает???? Т.е. проблем с синхронизацией с сетью вроде бы нет. Тронешь пульт - начинаются проблемы. Не трогаешь - прекрасно горит на установленной яркости. Т.е. явно перекрытие по "прерываниям". Но где именно и в какой момент какое то из них отключить... мозгов не хватает.
P.S. Простите что гну свою линию. Буду рад любой помощи
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Вт мар 15, 2011 08:31:55
mr_smit
Заработало!!! Спасибо
urry с форума
kazus.ru и
Goodefine с
forum.cxem.net
Код: Выделить всё
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
OCR1A = nagruzka[status];
OCR1B = nagruzka[status]+200;
TCNT1 = 0; // сбросили таймер
//GICR| = 0x80; // запретили прерывание INT0 // GIFR = 0x10000000
GICR&=~(1<<6); // запретили прерывание INT0 // GIFR = 0x10000000
}
...
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TRIAC_PIN = 0; // открыли симистор
}
// Timer 1 output compare B interrupt service routine
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
{
TRIAC_PIN = 1; // вернулись в режим ожидания
GIFR|=(1<<6); // сбросили флаг прерывания - Флаг сбрасывается ЕДИНИЦЕЙ
GICR|=(1<<6); // разрешаем прерывание INT0.
}
...
if (cmd == 0b11011000) { // кнопка "TV" - вкл/выкл диммера
GICR&=~(1<<7); // запретили прерывание INT1 (от TSOP) // GIFR = 0x01000000
if (status == 0) {
soft_on (); // 100% мощности
}
else {
soft_off(); // плавно выключаем
};
GIFR|=(1<<7); // сбросили флаг прерывания - Флаг сбрасывается ЕДИНИЦЕЙ
GICR|=(1<<7); // разрешаем прерывание INT1
}
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пт апр 01, 2011 10:03:14
Roma4ka
Уважаемые коты, помогите разобраться с теорией управления нагрузкой через симистор, у меня проект на ПИКе 12ф675 .....
я получаю через вход INT0 проход через ноль. дальше у меня открытия и закрытия симистора
примерно так это что бы получиться 50% мощности
Код: Выделить всё
// ОБРАБОТКА ПРЕРЫВАНИЙ
void interrupt()
{
if(INTCON.INTF){
counter++;
if (counter>0) {Delay_us(925);GP4_bit=1;counter=0;Delay_us(500); GP4_bit=0;}
OPTION_REG.INTEDG =~ OPTION_REG.INTEDG;
INTCON.INTF = 0;
}
}
выглядит это в Proteus таким образам
помогите пожалуйста с режимами 20% нагрузки 40%,60%, 80% и 100%...
заранее спасибо