Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 14.03.2011, 21:44  
cnc10
Прописка
 
Регистрация: 04.01.2007
Сообщений: 233
Сказал спасибо: 22
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
cnc10 на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

А на рике кто-нить,что-нить подобное делал.Сейчас занимаюсь зтой проблемой.
Реклама:
cnc10 вне форума  
Непрочитано 14.03.2011, 21:55  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

народ может мне кто подскажет с моим кодом, делаю подобное (проше без пульта ИК), не могу заставить чтобы код кнопки понимал! тема по соседству!
Вложения:
Тип файла: rar шим.rar (70.7 Кб, 163 просмотров)
neid_nnov вне форума  
Непрочитано 14.03.2011, 22:11  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
Вопрос Re: Задержки при плавной регулировке. Диммер с ДУ

Фантастика... ЗАРАБОТАЛО!!!

urry, CodeNameHawk большое спасибо!!!
Код:
// 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
      }
Сейчас регулировка работает идеально 0 - 100% !!!

P.S. Осталась малюсенькая проблема: при плавном старте с нуля (предопределенная кнопка или удержание "+") в самом начале проскакивает кратковременное СЛАБОЕ моргание. Нить чуть накаляется, тухнет и дальше нормально регулируется. Ничего страшного, практически не заметно. Но всё равно интересно. Мне кажется что это как то связано с запуском таймера TCCR1B=0x02. По идее как только его запустили -› OCR1A = nagruzka[0]; т.к. status = 0 т.е. 1% нагрузки. Может слишком близко к нулю? Но тогда почему при выключении такого нет.

Кнопка "+" :
Код:
if (cmd == 0b11111000) {                 // кнопка "Display" - увеличение яркости
          TCCR1B=0x02;
	  status++;
          if (status › 97) {
            TCCR1B=0x00;
	    status = 98;   
            TRIAC_PIN = 0;                      // полностью включили
            sprintf(cnt,"%u",status);           // преобразование "яркости" в строку
            put_string(20, 40,cnt, 0x07E0, 3);  // выводим на экран
			}
          else {
            sprintf(cnt,"%u",status);           // преобразование "яркости" в строку
            put_string(20, 40,cnt, 0x07E0, 3);  // выводим на экран
	    delay_ms(delay_);
            }
		 }
Плавный пуск:
Код:
void soft_on () {
 TCCR1B=0x02;                                           
 while (status‹98) {
  status++;            
  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;    // открыли симистор
  }
Только почему оно не правильное?
mr_smit вне форума  
Непрочитано 15.03.2011, 01:41  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от mr_smit Посмотреть сообщение
// 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 }
Вы словами опишите как ваш код тут будет правильно работать.
Я тут вижу, что пока тиристор не закроется вы просто решили пропускать очередные полу волны, зачем?
Опишите словами логику работы вашей программы и сами найдете ошибки в программе.

Типа так:
засек переход через ноль, (INT0)
установил задержки таймера 1, сбросил его значение на ноль, далее
разрешил его работу.
interrupt [TIM1_COMPА] открыл тиристор, закроется он сам при переходе полу волны через ноль.
После того как сработало interrupt [TIM1_COMPB], прекратил открывать тиристор, остановил таймер.
ну и так далее

Последний раз редактировалось CodeNameHawk; 15.03.2011 в 01:47.
CodeNameHawk вне форума  
Непрочитано 15.03.2011, 10:05  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

И чуть-чуть по аппаратной части. На входе моста постоянный потенциал в 1/2 Uвыпр., промодулированный переменкой 50Гц. Нуля там может никогда и не случиться.
Вот схема детектора перехода через "ноль", которую и настраивать-то не нужно, главное обеспечить безопасное напряжение на R2. R1 и R3 могут иметь разные номиналы - это не важно. Он будет "оквадрачивать" сетевое напряжение.
Нажмите на изображение для увеличения
Название: Detector.jpg
Просмотров: 118
Размер:	151.1 Кб
ID:	19760
Номиналы элементов - какие получились. U1 - компаратор(можно и ОУ). Это принцип.

Последний раз редактировалось omercury; 15.03.2011 в 10:12.
omercury вне форума  
Непрочитано 15.03.2011, 16:40  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

С минимальными переделками я бы попробовал так :
R6 со схемы выкинуть
Нажмите на изображение для увеличения
Название: shema.JPG
Просмотров: 33
Размер:	17.5 Кб
ID:	19778

Прерывание ловить по спаду импульса.
(Прерывание случится чуть раньше начала полу волны, но
это как раз позволит достичь почти 100% регулировки яркости)
CodeNameHawk вне форума  
Непрочитано 15.03.2011, 17:14  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от CodeNameHawk Посмотреть сообщение
Я тут вижу, что пока тиристор не закроется вы просто решили пропускать очередные полу волны, зачем?
От ноля до конца импульса открытия симистора нам зачем прерывания?????? Не нужны! Фильтрация помех!!!!!!!!!!!! До импульса проходит меньше 0,01 сек. (полупериод), поэтому следующий ноль мы гарантированно не пропустим!!! Если вдруг проскочит помеха из сети в этот промежуток мы её не засчитаем как ноль!!!
Код:
// 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
  }
А после импульса вернули прерывания назад. Вот и всё
mr_smit вне форума  
Непрочитано 15.03.2011, 18:13  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от mr_smit Посмотреть сообщение
До импульса проходит меньше 0,01 сек. (полупериод), поэтому следующий ноль мы гарантированно не пропустим!!!
Какая длина открывающего тиристор импульса?
И что происходит при 5% яркости, я так понимаю вы подаете открывающий импульс по истечении 0.0095 сек и если длина открывающего импульса больше 0.0005 (0.01-0.0095) будет пропуск.
CodeNameHawk вне форума  
Непрочитано 15.03.2011, 20:04  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от CodeNameHawk Посмотреть сообщение
И что происходит при 5% яркости, я так понимаю вы подаете открывающий импульс по истечении 0.0095 сек и если длина открывающего импульса больше 0.0005 (0.01-0.0095) будет пропуск.
Это ещё не всё. Кто нибудь регулирует по отрицательной полуволне? Ведь от неё нет прерывания. (а может и есть - кто знает?)...
Код:
 if (b_cnt ‹ 9) addr_1 = (addr_1 ‹‹ 1) + 1;   //первый байт - прямой адрес
и
Код:
if (b_cnt ›= 9 && b_cnt ‹ 17) addr_0 = (addr_0 ‹‹ 1) + 1;    //второй байт - инверсный адрес
и так далее...
Сможете объяснить, зачем второй раз проверять счётчик, что он больше или равен 9-ти? То, что меньше Вы уже отсекли первым условием. Память программ резиновая? У МК лишнее время?
Убирайте шелуху и обновите то, что выложили.
omercury вне форума  
Непрочитано 16.03.2011, 01:56  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Задержки при плавной регулировке. Диммер с ДУ

Сообщение от omercury Посмотреть сообщение
Это ещё не всё. Кто нибудь регулирует по отрицательной полуволне? Ведь от неё нет прерывания. (а может и есть - кто знает?)...
Если схема не менялась, должна ловиться. Диодный мост положительную и отрицательную полу волну 50 Hz заменяет на две положительные с частотой 100 Hz.

Последний раз редактировалось CodeNameHawk; 16.03.2011 в 02:02.
CodeNameHawk вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Нужна схема автоматического закрывания дверей автомобиля при движении Aviasined Электроника средств транспорта 17 28.09.2010 06:14


Часовой пояс GMT +4, время: 20:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot