|
Регулятор яркости лампы накаливания, mega8, cvavr |
|
|
|
Jul 21 2009, 16:03
|

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(LexRoss @ Jul 21 2009, 17:31)  Переменка 3 вольта заведена на компаратор, он дает прерывание по каждому переходу через 0. В прерывании включаю ногу на несколько миллисекунд, затем отключаю. Так каждый полупериод. Нога подключена к управляющему выводу тиристора КУ202. В cvavr написал цикл с увеличением задержки. Вроде бы лампочка должна медленно загораться и гаснуть, а она просто моргает. Из-за чего? Может быть, тиристор не тот, и нужно поставить что-то типа BT137? Вот тиристор и включается в начале каждого полупериода, а выключается в конце, когда ток через него спадёт до нуля. Чтобы регулировать яркость, нужно подавать импульс включения с задержкой относительно перехода через ноль. Тогда, чем больше задержка - тем короче время включенного состояния и тем меньше яркость.
|
|
|
|
|
Jul 21 2009, 16:14
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202

|
DpInRock, все так и есть, как Вы сказали. Шаг 2 микросек, меняется от 0 до 10000 мкс примерно за 3 сек. Я думаю достаточно для плавности.  Вот такой код interrupt [ANA_COMP] void ana_comp_isr(void) { i++; k=i; PORTD.0 = 1; while (k>0) { k--; delay_us(2); } PORTD.0 = 0; if (i>500) { i = i-500; } } Может быть криво (первый раз пишу на си), но осциллограф на PD0 показывает, что все работает. BT137 симистор. Может напряжение маловато? Сейчас экспериментирую с лампочкой на 12В. Herz, т.е. так?
Сообщение отредактировал LexRoss - Jul 21 2009, 16:10
Прикрепленные изображения
|
|
|
|
|
Jul 21 2009, 16:14
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Во-первых, с помощью тиристора можно коммутировать только одну фазу переменки. Для коммутации переменки в обеих фазах нужно включить его через выпрямительный диодный мост. Для коммутации переменки применяются симмисторы (симметричные тиристоры, триаки), но для управления ими нужно подавать импульсы с полярностью, соответствующей фазе напряжения питания. Управлять симмистором прямо от пина МК несколько затруднительно. Поэтому для управления симмисторами обычно применяют оптоизоляторы или импульсные трансформаторы. Во-вторых, у тиристора есть такой параметр, как минимальный ток удержания. Если к концу управляющего импульса ток тиристора (и нагрузки) не достигнет величины минимального тока удержания, то тиристор закроется сразу после окончания управляющего импульса. Сравните минимальный ток удержания для используемого тиристора и ток нагрузки в конце вашего миллисекундного управляющего импульса. Рекомендую почитать "Тиристоры и симмисторы - десять золотых правил для успешного применения" в оригинале или в некотором переводе на русский.
|
|
|
|
|
Jul 22 2009, 07:05
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202

|
Не совсем понятно Цитата В прерывании компаратора нужно лишь установить новое значение для таймера, который аппаратно генерирует сигнал ШИМ, который в свою очередь управляет симмистором. Т.е. в прерывании компаратора нужно включить таймер, а потом по прерыванию таймера включить симистор?
|
|
|
|
|
Jul 22 2009, 15:29
|
Местный
  
Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154

|
Цитата(rezident @ Jul 22 2009, 21:11)  Тип МК в заголовке указан - mega8, т.е. ATmega8. Прошу прощения - между глаз попало..
|
|
|
|
|
Jul 22 2009, 17:05
|
Местный
  
Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154

|
Цитата(LexRoss @ Jul 22 2009, 22:26)  Придется разбираться с шим...  И еще, после этого хочу автоматизировать включение/выключение света, считая число вошедших/вышедших человек. Поставить на входе в комнату ик светодиод и 2 приемника. TSOP, наверно, будет излишне. Какие приемники попроще? Ну разбираться с ШИМ совсем не обязательно, просто с использованием ШИМ программа будет короче. Можно написать "программный" ШИМ, тоже будет работать. Так что Вам решать... Приемник "попроще" можно сделать на расыпухе - схем море, на любой вкус, однако для достижения конечного результата лучше взять готовую микросхему и не заморачиваться. Решение задачи счета вошедших/вышедших в настоящий момент обсуждается на Форуме в теме "ENCODER"(кажется так) - почитайте и поймете, что это по сущности то, что Вам нужно.
Сообщение отредактировал Vishv - Jul 22 2009, 17:17
|
|
|
|
|
Jul 23 2009, 15:18
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Цитата(Vishv @ Jul 22 2009, 21:05)  Ну разбираться с ШИМ совсем не обязательно, просто с использованием ШИМ программа будет короче. Можно написать "программный" ШИМ, тоже будет работать. Так что Вам решать... Приемник "попроще" можно сделать на расыпухе - схем море, на любой вкус, однако для достижения конечного результата лучше взять готовую микросхему и не заморачиваться. Решение задачи счета вошедших/вышедших в настоящий момент обсуждается на Форуме в теме "ENCODER"(кажется так) - почитайте и поймете, что это по сущности то, что Вам нужно. 1. Tаймер 0 или 2 делаете частотой 100 гц *1024 (максимально близко к этому) - Учтите, что вы будете программировать не частоту, а длительность между тогглами - поэтому расчитывайте на 200*1024 (Тогда частота будет как раз 100*1024). 2. Таймер 1 прогрммируете на ШИМ от 0 до 3FF. Ставите момент установки внешнего пина, который управляет симистором где-нибудь 3F0. Тогда в итоге вы получите последовтельность импульсов длиной 3FF - 3F0 с частотой примерно 100 герц. Без синхронизации от компаратора лампочка будет достаточно плавно менять яркость. (Зависит от точности 100 герц). Это полезно. Далеко не все переходы через 0 вы сможете засечь (помехи и пр.). Так что диммер некоторое время продержится и без синхронизации. ---- Забыл. Выход таймера 0 или 2 подаете на счетный вход таймера 1. Проводочком. 3. В прерывании от компаратора перезагружаем значение TCNT1. В зависимости от фазы. Таким образом, весь код который работает будет в пункте 3. Т.е. ровно одна сишная строчка.
Сообщение отредактировал DpInRock - Jul 23 2009, 15:19
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jul 23 2009, 16:13
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202

|
Цитата Выбрать период перезагрузки таймера чуть больше полупериода сетевой частоты (>10мс), а для синхронизации сбрасывать таймер в прерывании от компаратора. так и делал Цитата Выход таймера 0 или 2 подаете на счетный вход таймера 1. Проводочком. ноги жалко, еще много на них повесить хочу. Сейчас сделал так: в прерывании компаратора цикл, в котором включается таймер примерно на 10 микросекунд, цикл повторяется столько раз, сколько установлено кнопками - от 0 до 1000, т.е. задержка от 0 до 10 миллисекунд.
|
|
|
|
|
Jul 30 2009, 14:29
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581

|
Цитата(LexRoss @ Jul 26 2009, 15:57)  ... Нашел ИК приемник, подключил к входу звуковой карты (внизу то, что получилось). Протокол похож на nec, но стартовый бит только 4мс. ... Это nec-подобный протокол, встречался мне в пультах от Samsung-а:
Написал к нему декодер (Си). Кроме него распознает еще два nec-подобных протокола от JVC:
и msi(собственно, чистый nec):
скрины даны с автоповтором. В декодере программно реализован триггер-бит для распознавания удержания кнопки. Если актуально, могу привести код...
--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
|
|
|
|
|
Aug 1 2009, 06:07
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202

|
Goodefine, да, хотелось бы посмотреть. Хотя я уже сделал, но все равно, может, что-то поправлю.
И еще, вопрос совсем простой. Есть число X. Как его загрузить в TCNT1H, TCNT1L ? В хелпе cvavr нашел такую строку: TCNT1=0x1111; /* Write to TCNT1L & TCNT1H registers */ Пишет ошибку.
Все, разобрался. Что-то запутался с sfrw.
TCNT1 работает.
Сообщение отредактировал LexRoss - Aug 1 2009, 05:29
|
|
|
|
|
Aug 1 2009, 16:44
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581

|
Цитата(LexRoss @ Aug 1 2009, 09:07)  Goodefine, да, хотелось бы посмотреть. Хотя я уже сделал, но все равно, может, что-то поправлю. Выложил здесь.
--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
|
|
|
|
|
Aug 2 2009, 07:58
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202

|
Goodefine, спасибо. С оптроном не получается. Осцил показывает, что сигнал на INT0 проходит, однако ничего не работает. Посмотрите схему, я правильно подключаю?
Сообщение отредактировал LexRoss - Aug 2 2009, 08:00
Эскизы прикрепленных изображений
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|