Страница 1 из 4
Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил.)
Добавлено: Пн окт 11, 2010 20:46:59
mr_smit
Помогите пожалуйста разобраться с диммером. Итак:
Детекция ноля (на контроллер идет 5 вольт):

Подключение:

Только использую МОС 3052 и
светодиод зажигаю 1 (единицей), а не нулем (как на схеме).
У нас в сети 50 Гц. Т.е. период равен 20 мс. Половина мощности будет если выключить напряжение через 5 мс после прохождения нуля.


Нижняя осциллограмма это детектор нуля. Верхняя это выход контроллера который управляет MOC.
Видно что МОС открывается раньше т.к. при 1,7 В МК думает что уже ноль. Т.е. разница примерно 0,8 - 1 мс.
При этом лампа горит в полный накал.Дальше уменьшаю интервал до 2 мс:

Т.е. лампа должна еле светиться.
При этом лампа горит в полный накал.Увеличиваю интервал до 9 мс:
При этом лампа горит в полный накал.Дальше. Одноканальный режим. Один щуп к выводу 4 МОС, другой щуп к выводу 6 .

Где я ошибся?
P.S. С прошивкой всё просто:
Код: Выделить всё
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTC.5 = 1; // установили 1
TCNT1 = 0; // сбросили таймер
}
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
PORTC.5 = 0; // установили 0
}
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн окт 11, 2010 21:01:56
anatol378
Микросхема не только оптоизолятор, но и оптосимистор. отключи схему управления (порт). Если лампа не горит, то идет "мусор" по управлению. На последней осциллограмме видно что симистор открыт.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн окт 11, 2010 21:12:22
ARV
вы не могли бы картинки внедрять прямо в форум? с вашего радикала у меня нифига не открывается половина...
поэтому попробую угадать: вы говорите "выключить напряжение", но ведь симистор не может ВЫКЛЮЧИТЬ, он может только ВКЛЮЧИТЬ, а выключится само в нуле... то есть нет ли у вас ошибки в алгоритме? импульс на симистор надо подавать в момент, когда его надо открыть, а не убирать импульс, когда надо закрыть...
и второе: детектор нуля хреновый у вас. выкиньте R2, а R1 посчитайте так, чтобы через него текло не более 1 мА. кстати, мост тоже можно выкинуть, если он больше ни для чего не нужен.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн окт 11, 2010 21:19:52
anatol378
ARV вы правы. Чел тупо закрывает симистор. В программе четко указано. А я мельком посмотрел и не заметил сразу. Что сделаешь - новое поколение. Вот "чернобыли" и появляются.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пн окт 11, 2010 22:24:47
mr_smit
anatol378 писал(а):... отключи схему управления (порт). Если лампа не горит, то идет "мусор" по управлению.
Отключал. Не горит. Подключаешь - горит.
Всё, дошло.
1) Надо отступить от нуля 5 мс (50% мощности)
2) Подать импульс на оптопару (длительность не важна...)
3) Симистор сам
закроется в нуле.
ARV писал(а):вы не могли бы картинки внедрять прямо в форум? с вашего радикала у меня нифига не открывается половина...
Просто он сегодня тормозит, надо чуть подождать.
Уже поздно, завтра переделаю. Отпишусь. Спасибо
ARV!!! Спасибо
anatol378!!!
ARV писал(а):и второе: детектор нуля хреновый у вас. выкиньте R2, а R1 посчитайте так, чтобы через него текло не более 1 мА. кстати, мост тоже можно выкинуть, если он больше ни для чего не нужен.
С трансформатора 9 вольт идет. МК выдержит? Без делителя? И как тогда ловить ноль если убрать мост? INT0 на что настроить??? Any change?
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Вт окт 12, 2010 19:21:23
mr_smit
Датчик нуля не переделывал. Отступаем 7 мс от нуля и подаём импульс 200 мкс на оптрон.


Код: Выделить всё
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// <- тут надо подождать 800 мкс; delay_us(800) ???
TCNT1 = 0; // сбросили таймер
}
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
PORTC.5 = 1; // открыли симистор
delay_us(200); // импульс 200 мкс
PORTC.5 = 0; // вернулись в режим "ожидания"
}
Два вопроса у меня:
1. Разница между срабатыванием "датчика" и настоящим нулём = 800 мкс. Датчик срабатывает раньше. Как учесть эту разницу? delay_us(800) ???
2. Как подать кратковременный импульс на оптрон? Опять же delay_us(200) ???.
Нужно ли уйти от этих delay_us? Как лучше сделать?
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Вт окт 12, 2010 19:47:16
ARV
я вам сказал уже, как уменьшить разницу срабатывания вашего датчика - выкинуть его нафиг и сделать, как я посоветовал. я подаю синхронизацию прямо от 220 вольт через резистор 1,2 мегаома. у вас всего лишь 9 вольт, надо взять резистор 10 килоом и подавать на вход синхронизации. не знаю, на какой подаете вы, но лучше всего подавать на вход, который может генерировать прерывание по изменению уровня - тогда будет ловиться практически точный момент перехода через 0. если у вас нет ограничений по потребляемогму току, то нет смысла давать короткий импульс: просто в нужный момент зажигайте оптрон, а по срабатыванию вашего датчика нуля - гасите

тогда и задержки в прерывании не потребуется.
но лично я делаю все по таймеру: завожу флаг, который будет означать, что идет импульс. в момент перехода через 0 запускаю таймер на 5 мс. по прерыванию таймера смотрю на флаг: если он 0, то включаю выходной сигнал на оптрон, снова запускаю таймер, но на 200 мкс и при этом делаю флаг = 1. если флаг уже 1, то снимаю сигнал с оптрона и выключаю таймер. вот как-то так...
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Вт окт 12, 2010 22:39:41
mr_smit
ARV писал(а):...надо взять резистор 10 килоом и подавать на вход синхронизации. не знаю, на какой подаете вы, но лучше всего подавать на вход, который может генерировать прерывание по изменению уровня - тогда будет ловиться практически точный момент перехода через 0...
Я и подаю на вход
INT0 меги8. Настройка такая будет:
Правильно?
И ещё я не понимаю, если мы уберем диодный мост, то как подключить сигнал синхронизации к МК??? С трансформатора получаем 2 выхода с переменным током, т.е. нет ни "+" ни "-".
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Ср окт 13, 2010 07:37:51
ARV
убираете диодный мост, один вывод обмотки трансформатора соединяете с общим проводом, а второй вывод через резистор на вход МК для синхронизации. можно и сохранить мост, если он нужен еще для чего-то или вам просто боязно без него - тогда просто удалите R2 и измените R1, как я уже говорил.
на счет настроек скажу так: я с вашими CodeVision-скими штучками не знаком, а настраивать прерывание надо на режим ПО ИЗМЕНЕНИЮ УРОВНЯ - сами разберитесь, как оно там задается в ваших визардах.
для понимания сути процесса синхронизации советую нарисовать кусочек схемы с учетом ВСТРОЕННЫХ В МК ЗАЩИТНЫХ ДИОДОВ и проанализировать, что будет на пине при подаче на него через резистор переменного напряжения. не забывайте: ток через резистор не должен быть больше 1 мА ни при каких условиях! уж лучше меньше, чем больше.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Ср окт 13, 2010 07:59:41
mr_smit
Вот как я хочу сделать в итоге:
Нормально?
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Ср окт 13, 2010 08:15:03
ARV
сойдет.
если будут проблемы - можно использовать оба входа встроенного компаратора и тогда подавать на них прямо со вторички через резисторы, а прерывание уже использовать от компаратора. этот вариант так же отлично работает и для синхронизации по вторичке транса даже предпочтительнее.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Ср окт 13, 2010 08:21:47
mr_smit
Вечером сделаю так как нарисовал. Выложу осциллограммы.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Ср окт 13, 2010 21:40:35
mr_smit
Итак, собрал я схему (ту что выше указал). И вот что увидел на входе
INT0:
- 1.jpg
- (143.12 КБ) 632 скачивания
Напряжение не опускается ниже 2,1 вольта.

Т.е. ни о каком нуле и речи не идет.
Пришлось подтянуть вход контроллера к земле через резистор 10 кОм:
- 2.jpg
- (93.58 КБ) 543 скачивания
И сразу всё встало на свои места:
- 3.jpg
- (151.59 КБ) 835 скачиваний
Чтобы посмотреть разницу между реальным нулем и моментом срабатывания датчика написал тестовую прошивку ( 3 строчки изменил

).Оптрон загорается в момент срабатывания. Разница составила 800 мкс или 0,8 мс.
- 4.jpg
- (141.56 КБ) 572 скачивания
Т.е. опять же при 1,4 вольта контроллер думает что уже ноль. Это пустяк. Зато всё понятно, всё логично, всё работает.
Идем дальше. Теперь меня интересует такой вопрос:
плавное включение. Понятно что нужно отступить, к примеру, сначала 10 мс от ноля, потом 9 мс, потом 8 мс и т.д. до полного включения.
Как это сделать красиво в коде?Менять значения:
Код: Выделить всё
OCR1AH=0x27; // для //или 2710 в регистр сравнения
OCR1AL=0x10; //10 мс
delay_ms(500);
OCR1AH=0x46; // для //или 4650 в регистр сравнения
OCR1AL=0x50; //9 мс
delay_ms(500);
и т.д.
Как то криво... да и плавность тут хромает...
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Чт окт 14, 2010 17:59:18
Murav
mr_smit писал(а):Как это сделать красиво в коде?
Сделать переменную коэффициент заполнения на основе которой рассчитывать значение OCR1A(все нормальные компиляторы умеют работать с двухбайтными регистрами). Так же при желании можно сделать расчёт коэффициента заполнения из % мощность(зависимость мощность-коэффициент - это синусоида).
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Чт окт 14, 2010 21:03:49
mr_smit
Да это всё понятно! Я думал может кто кодом поделится. Ладно, сам напишу.
Массив. В него записать заранее просчитанные значения таймера для каждого уровня мощности. И подсовывать в OCR1A. Сделаю - отпишусь.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Чт окт 14, 2010 22:58:10
Murav
Могу поделиться массивом из 64 значений четверти синуса.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пт окт 15, 2010 11:34:56
mr_smit
Набросал в Word, чтобы красиво было

И табличка с графиком:
Я думаю нет смысла делать регулировку с шагом 1%. Сделать 20 точек т.е. шаг 5% и нормально будет. Прошивку подправлю - проверю в железе.
Идем дальше

Пульт ДУ. Замучаю я вас своими вопросами.

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пт окт 15, 2010 12:01:42
ARV
забодай меня комар!

вы решили сделать дистанционно-управляемый диммер? да еще, небось, по командам от любого ИК-пульта? я совсем недавно делал такое на тини13...
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пт окт 15, 2010 13:26:30
mr_smit
Да, дистанционно управляемый диммер. Для МОЕГО пульта от тв. тюнера (NEC кодировка). И добавить DS1307 чтобы сделать таймер пробуждения. Т.е. часиков с 6:30 до 7:00 утра свет плавно разгорается до 50% мощности (свет это два боковых настенных светильника). В грядущие темные утренние зимние часы это особенно актуально. Плюс к этому добавлю релюшку для того чтобы включать основное освещение ("энергосберегайки").
P.S. Кстати по поводу любого пульта. Я так понимаю надо ставить тогда 2 приемника: TSOP1736 и TSOP1738 правильно? Под RC-5 и под NEC.
Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил
Добавлено: Пт окт 15, 2010 13:29:55
ARV
это уже будет не диммер с ДУ, а часы с ДУ и будильником-диммером

вам еще и индикатор придется лепить для часов

P.S. NEC от RC5 и от остальных отличается в первую очередь ПРОТОКОЛОМ, а частота несущей - это мелочи, т.к. любой TSOP примет частоту на 2-3 килогерца больше-меньше своей родной, просто дальность приема уменьшится раза в 2.