Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил.)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил.)

Сообщение 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
}
Нельзя всё знать, достаточно понимать.
Аватара пользователя
anatol378
Мудрый кот
Сообщения: 1833
Зарегистрирован: Вс окт 04, 2009 13:23:12
Откуда: н. новгород

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение anatol378 »

Микросхема не только оптоизолятор, но и оптосимистор. отключи схему управления (порт). Если лампа не горит, то идет "мусор" по управлению. На последней осциллограмме видно что симистор открыт.
Лучше умному тупить, чем тупому умничать
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение ARV »

вы не могли бы картинки внедрять прямо в форум? с вашего радикала у меня нифига не открывается половина...

поэтому попробую угадать: вы говорите "выключить напряжение", но ведь симистор не может ВЫКЛЮЧИТЬ, он может только ВКЛЮЧИТЬ, а выключится само в нуле... то есть нет ли у вас ошибки в алгоритме? импульс на симистор надо подавать в момент, когда его надо открыть, а не убирать импульс, когда надо закрыть...

и второе: детектор нуля хреновый у вас. выкиньте R2, а R1 посчитайте так, чтобы через него текло не более 1 мА. кстати, мост тоже можно выкинуть, если он больше ни для чего не нужен.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
anatol378
Мудрый кот
Сообщения: 1833
Зарегистрирован: Вс окт 04, 2009 13:23:12
Откуда: н. новгород

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение anatol378 »

ARV вы правы. Чел тупо закрывает симистор. В программе четко указано. А я мельком посмотрел и не заметил сразу. Что сделаешь - новое поколение. Вот "чернобыли" и появляются.
Лучше умному тупить, чем тупому умничать
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

anatol378 писал(а):... отключи схему управления (порт). Если лампа не горит, то идет "мусор" по управлению.

Отключал. Не горит. Подключаешь - горит.

Всё, дошло.
1) Надо отступить от нуля 5 мс (50% мощности)
2) Подать импульс на оптопару (длительность не важна...)
3) Симистор сам закроется в нуле.

ARV писал(а):вы не могли бы картинки внедрять прямо в форум? с вашего радикала у меня нифига не открывается половина...

Просто он сегодня тормозит, надо чуть подождать.

Уже поздно, завтра переделаю. Отпишусь. Спасибо ARV!!! Спасибо anatol378!!!

ARV писал(а):и второе: детектор нуля хреновый у вас. выкиньте R2, а R1 посчитайте так, чтобы через него текло не более 1 мА. кстати, мост тоже можно выкинуть, если он больше ни для чего не нужен.


С трансформатора 9 вольт идет. МК выдержит? Без делителя? И как тогда ловить ноль если убрать мост? INT0 на что настроить??? Any change?
Нельзя всё знать, достаточно понимать.
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение 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? Как лучше сделать?
Нельзя всё знать, достаточно понимать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение ARV »

я вам сказал уже, как уменьшить разницу срабатывания вашего датчика - выкинуть его нафиг и сделать, как я посоветовал. я подаю синхронизацию прямо от 220 вольт через резистор 1,2 мегаома. у вас всего лишь 9 вольт, надо взять резистор 10 килоом и подавать на вход синхронизации. не знаю, на какой подаете вы, но лучше всего подавать на вход, который может генерировать прерывание по изменению уровня - тогда будет ловиться практически точный момент перехода через 0. если у вас нет ограничений по потребляемогму току, то нет смысла давать короткий импульс: просто в нужный момент зажигайте оптрон, а по срабатыванию вашего датчика нуля - гасите :) тогда и задержки в прерывании не потребуется.

но лично я делаю все по таймеру: завожу флаг, который будет означать, что идет импульс. в момент перехода через 0 запускаю таймер на 5 мс. по прерыванию таймера смотрю на флаг: если он 0, то включаю выходной сигнал на оптрон, снова запускаю таймер, но на 200 мкс и при этом делаю флаг = 1. если флаг уже 1, то снимаю сигнал с оптрона и выключаю таймер. вот как-то так...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

ARV писал(а):...надо взять резистор 10 килоом и подавать на вход синхронизации. не знаю, на какой подаете вы, но лучше всего подавать на вход, который может генерировать прерывание по изменению уровня - тогда будет ловиться практически точный момент перехода через 0...


Я и подаю на вход INT0 меги8. Настройка такая будет:
qwer.jpg
(57.09 КБ) 830 скачиваний

Правильно?

И ещё я не понимаю, если мы уберем диодный мост, то как подключить сигнал синхронизации к МК??? С трансформатора получаем 2 выхода с переменным током, т.е. нет ни "+" ни "-".
Нельзя всё знать, достаточно понимать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение ARV »

убираете диодный мост, один вывод обмотки трансформатора соединяете с общим проводом, а второй вывод через резистор на вход МК для синхронизации. можно и сохранить мост, если он нужен еще для чего-то или вам просто боязно без него - тогда просто удалите R2 и измените R1, как я уже говорил.

на счет настроек скажу так: я с вашими CodeVision-скими штучками не знаком, а настраивать прерывание надо на режим ПО ИЗМЕНЕНИЮ УРОВНЯ - сами разберитесь, как оно там задается в ваших визардах.

для понимания сути процесса синхронизации советую нарисовать кусочек схемы с учетом ВСТРОЕННЫХ В МК ЗАЩИТНЫХ ДИОДОВ и проанализировать, что будет на пине при подаче на него через резистор переменного напряжения. не забывайте: ток через резистор не должен быть больше 1 мА ни при каких условиях! уж лучше меньше, чем больше.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

Вот как я хочу сделать в итоге:
Диммер.jpg
(129.02 КБ) 958 скачиваний

Нормально?
Нельзя всё знать, достаточно понимать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение ARV »

сойдет.
если будут проблемы - можно использовать оба входа встроенного компаратора и тогда подавать на них прямо со вторички через резисторы, а прерывание уже использовать от компаратора. этот вариант так же отлично работает и для синхронизации по вторичке транса даже предпочтительнее.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

Вечером сделаю так как нарисовал. Выложу осциллограммы.
Нельзя всё знать, достаточно понимать.
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение 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);

и т.д.

Как то криво... да и плавность тут хромает...
Нельзя всё знать, достаточно понимать.
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение Murav »

mr_smit писал(а):Как это сделать красиво в коде?

Сделать переменную коэффициент заполнения на основе которой рассчитывать значение OCR1A(все нормальные компиляторы умеют работать с двухбайтными регистрами). Так же при желании можно сделать расчёт коэффициента заполнения из % мощность(зависимость мощность-коэффициент - это синусоида).
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

Да это всё понятно! Я думал может кто кодом поделится. Ладно, сам напишу.

Массив. В него записать заранее просчитанные значения таймера для каждого уровня мощности. И подсовывать в OCR1A. Сделаю - отпишусь.
Нельзя всё знать, достаточно понимать.
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение Murav »

Могу поделиться массивом из 64 значений четверти синуса.
Вложения
Sine.c
(2.73 КБ) 342 скачивания
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

Набросал в Word, чтобы красиво было :)
формулы.jpg
(105.61 КБ) 909 скачиваний


И табличка с графиком:
Таблица, график.jpg
(190.67 КБ) 900 скачиваний


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

Идем дальше :) Пульт ДУ. Замучаю я вас своими вопросами. :)
Нельзя всё знать, достаточно понимать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение ARV »

забодай меня комар! :) вы решили сделать дистанционно-управляемый диммер? да еще, небось, по командам от любого ИК-пульта? я совсем недавно делал такое на тини13...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение mr_smit »

Да, дистанционно управляемый диммер. Для МОЕГО пульта от тв. тюнера (NEC кодировка). И добавить DS1307 чтобы сделать таймер пробуждения. Т.е. часиков с 6:30 до 7:00 утра свет плавно разгорается до 50% мощности (свет это два боковых настенных светильника). В грядущие темные утренние зимние часы это особенно актуально. Плюс к этому добавлю релюшку для того чтобы включать основное освещение ("энергосберегайки").

P.S. Кстати по поводу любого пульта. Я так понимаю надо ставить тогда 2 приемника: TSOP1736 и TSOP1738 правильно? Под RC-5 и под NEC.
Нельзя всё знать, достаточно понимать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Диммер, чертовщина на выходе MOC (имеется 2-х кан. осцил

Сообщение ARV »

это уже будет не диммер с ДУ, а часы с ДУ и будильником-диммером :) вам еще и индикатор придется лепить для часов :)

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

Мой уютный бложик... заходите!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»