Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.12.2010, 23:15
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Сообщение от mr_smit
|
Прошиваю проц и запускаю макетку. Вот и вся отладка.
|
С такой "отладкой" далеко не уедите. Это просто проверка, работает - не работает.
|
|
|
|
07.12.2010, 10:49
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Еще может быть наложение 50 Гц сети из синхронизации на примерно такие же периоды обработки прерывания и прпочее , то есть где-то есть что-то типа "биений" времен выполнения проги с сетевыми синхронизациями - лечение в тщательном отлове времен выполнения кусков прог - где в проге такие промежутки формируются и исключение этого , или ввод еще больше привязки прерываний проги к синхронизации из сети .
__________________
Короче асма кода нет !
|
|
|
|
07.12.2010, 10:57
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Еще может быть наложение 50 Гц сети из синхронизации на примерно такие же периоды обработки прерывания и прпочее , то есть где-то есть что-то типа "биений" времен выполнения проги с сетевыми синхронизациями - лечение в тщательном отлове времен выполнения кусков прог - где в проге такие промежутки формируются и исключение этого , или ввод еще больше привязки прерываний проги к синхронизации из сети .
__________________
Короче асма кода нет !
|
|
|
|
07.12.2010, 11:02
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Это биение между 50 Гц сети и прерываниями в некоторые моменты когда это совпадает , или кусков проги в моменты синхро из сети - лечение - либо все еще больше засинхронизировать , либо найти где эти куски проги и изменить времена их выполнения
__________________
Короче асма кода нет !
|
|
|
|
07.12.2010, 15:43
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Сообщение от mr_smit
|
Прошиваю проц и запускаю макетку. Вот и вся отладка.
|
Это трудно отладкой назвать, просто получается проверка работает - не работает.
Сообщение от mr_smit
|
Стабилитрона пока в наличии нет. Поэтому схему не изменял.
|
У вас, в схеме, R6 практически не работает.
Вместо него поставьте два резистора и со средней точки подавайте на проц. Подобрав их сопротивления так, чтобы на средней точке было меньше 4.5 вольт, стабилитрон будет ненужен.
|
|
|
|
07.12.2010, 15:44
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Сообщение от mr_smit
|
Прошиваю проц и запускаю макетку. Вот и вся отладка.
|
Это трудно отладкой назвать, просто получается проверка работает - не работает.
Сообщение от mr_smit
|
Стабилитрона пока в наличии нет. Поэтому схему не изменял.
|
У вас, в схеме, R6 практически не работает.
Вместо него поставьте два резистора и со средней точки, через R5 подавайте на проц. Подобрав их сопротивления так, чтобы на средней точке было меньше 4.5 вольт, стабилитрон будет ненужен.
|
|
|
|
14.03.2011, 16:47
|
|
Временная регистрация
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Вновь взываю к помощи. Все попытки на протяжении этих 3 месяцев закончились неудачно. Так и не удалось добиться плавного включения. Проскакивают непонятные моргания ![Расстроен](images/smilies/icon_sad.gif) На текущей яркости горит без проблем. Моргает только при плавном изменении. Причем даже когда кнопка на пульте давным давно отпущена...
Переделал схему. Придал ей законченный вид. Синхронизация с сетью через резистивный делитель после трансформатора (как и было), после которого на прерывание идет "синусойда" с амплитудой 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; // вернулись в режим ожидания
} |
Вот снял видео:
Может "биения" прерываний от пульта с сетью 50 Гц, но как от этого избавиться не знаю. В общем уже всю голову себе сломал.
|
|
|
|
14.03.2011, 16:54
|
|
Временная регистрация
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
На соседнем форуме предложили отключать иногда прерывание от INT0.
Код:
|
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
TCNT1 = 0; // сбросили таймер
GICR = (0‹‹INT0); // запретили прерывание INT0.
}
// 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 = (0‹‹INTF0); // сбросили флаг прерывания
GICR = (1‹‹INT0); // разрешаем прерывание INT0.
} |
А так же использовать компаратор для детекции ноля. Придумал схему (во вложении). Насколько она правильна? Просто ноль на вывод подавать нельзя наверное? Компаратор не будет в таком случае работать? 0,05-0,1 вольт наверное надо, но где их взять? На выходе трансформатора 17 вольт.
Код:
|
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
TCNT1 = 0; // сбросили таймер
GICR = (0‹‹INT0); // запретили прерывание INT0.
} |
Последний раз редактировалось mr_smit; 14.03.2011 в 16:56.
|
|
|
|
14.03.2011, 17:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
Имхо, Вы слишком смело в основном цикле оперируете OCR1A, OCR1B.
Представьте, что в момент изменения, ну скажем, обнулили или перенесли эти значения, происходит прерывание таймера - что тогда будет?
Я бы на вашем месте добавил 2 дополнительных переменных и менял бы их - а перенос в реальные регистры из них в OCR1A, OCR1B - по факту срабатывания прерывания - ну, скажем, в момент перехода через 0.
Так, не вчитываясь в текст - совет.
|
|
|
|
14.03.2011, 20:07
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Задержки при плавной регулировке. Диммер с ДУ
У вас много подводных камней, например, прерывание от сети происходит с задержкой от точки перехода синусоиды через ноль и если задержка таймера не успеет отключить открытие тиристора, то он откроется на следующей полу волне и лампа моргнет на всю яркость.
Может помешать вовремя закрыть тиристор и внешнее прерывание от помехи на фотоприемник.
Попробуйте запретить внешнее прерывание, на время плавного изменения яркости.
Код:
|
void soft_off () {
// запретите прерывание от фотоприемника
TCCR1B=0x02;
while (status›0) {
status--;
OCR1A = nagruzka[status];
OCR1B = nagruzka[status]+100;
delay_ms(delay_);
sprintf(cnt,"%u",status); // преобразование "яркости" в строку
put_string(20, 40,cnt, 0x07E0, 3); // выводим на экран
}
status = 0;
TCCR1B=0x00;
TRIAC_PIN = 1; // полностью выключили
// сбросить флаг внешнего прерывания, чтобы откиныть помеху
//разрешить прерывание от фотоприемника
} |
Мои комментарии замените на код ![Идея!](images/smilies/icon_idea.gif)
Тоже и в
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:04.
|
|