реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Регулятор яркости лампы накаливания, mega8, cvavr
rezident
сообщение Jul 22 2009, 14:37
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(LexRoss @ Jul 22 2009, 13:05) *
Т.е. в прерывании компаратора нужно включить таймер, а потом по прерыванию таймера включить симистор?
Можно и так. Но лучше, если таймер будет сам генерить сигнал ШИМ с периодом равным полупериоду сетевой частоты и длительностью равной углу отсечки симмистора. Нужно лишь синхронизировать ШИМ с сетью (для этого задействовать компаратор). А при необходимости изменить параметры ШИМ достаточно всего лишь обновлять значения регистров таймера, формирующего этот ШИМ. Правда для этого придется разобраться с архитектурой и аппаратурой самого таймера. laughing.gif
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 22 2009, 14:41
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Я бы Вам посоветовал разобраться как работает и управляется ШИМ в Вашем процессоре. А дальше Вы сами поймете что нужно делать в прерываниях компаратора.
Для начала попробуйте с помощью вывода процессора (к которому подключен выход ШИМ) управлять яркостью светодиода (без привязки к сети).
Ну а для полной конкретики - укажите хотя бы тип процессора - будет проще давать советы.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 22 2009, 15:11
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Vishv @ Jul 22 2009, 20:41) *
Ну а для полной конкретики - укажите хотя бы тип процессора - будет проще давать советы.
Тип МК в заголовке указан - mega8, т.е. ATmega8.
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 22 2009, 15:29
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Цитата(rezident @ Jul 22 2009, 21:11) *
Тип МК в заголовке указан - mega8, т.е. ATmega8.

Прошу прощения - между глаз попало..
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 22 2009, 15:34
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Vishv @ Jul 22 2009, 21:29) *
Прошу прощения - между глаз попало.
Нет, это типичная ошибка топикстартеров. Важные исходные данные нужно размещать (или по крайней мере дублировать) в теле сообщения.
Go to the top of the page
 
+Quote Post
LexRoss
сообщение Jul 22 2009, 16:26
Сообщение #21


Местный
***

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



Придется разбираться с шим... wink.gif
И еще, после этого хочу автоматизировать включение/выключение света, считая число вошедших/вышедших человек. Поставить на входе в комнату ик светодиод и 2 приемника. TSOP, наверно, будет излишне. Какие приемники попроще?

Сообщение отредактировал LexRoss - Jul 22 2009, 16:26
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 22 2009, 17:05
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Цитата(LexRoss @ Jul 22 2009, 22:26) *
Придется разбираться с шим... wink.gif
И еще, после этого хочу автоматизировать включение/выключение света, считая число вошедших/вышедших человек. Поставить на входе в комнату ик светодиод и 2 приемника. TSOP, наверно, будет излишне. Какие приемники попроще?

Ну разбираться с ШИМ совсем не обязательно, просто с использованием ШИМ программа будет короче. Можно написать "программный" ШИМ, тоже будет работать. Так что Вам решать...
Приемник "попроще" можно сделать на расыпухе - схем море, на любой вкус, однако для достижения конечного результата лучше взять готовую микросхему и не заморачиваться.
Решение задачи счета вошедших/вышедших в настоящий момент обсуждается на Форуме в теме "ENCODER"(кажется так) - почитайте и поймете, что это по сущности то, что Вам нужно.

Сообщение отредактировал Vishv - Jul 22 2009, 17:17
Go to the top of the page
 
+Quote Post
LexRoss
сообщение Jul 23 2009, 10:33
Сообщение #23


Местный
***

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



255 значений таймера оказалось очень мало для плавной регулировки, а с 16-ти битным таймером я так и не смог подобрать нужный интервал: при верхнем значении ШИМ в 3FF и 125кгц период 8мкс * 1023 = 8мс (мало), а при 15,625 кгц период 64мкс * 1023 = 66мс слишком много - на полпериода остается только около 150 значений. Что посоветуете?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 23 2009, 15:04
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(LexRoss @ Jul 23 2009, 16:33) *
Что посоветуете?
Выбрать период перезагрузки таймера чуть больше полупериода сетевой частоты (>10мс), а для синхронизации сбрасывать таймер в прерывании от компаратора.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 23 2009, 15:18
Сообщение #25


Гуру
******

Группа: Участник
Сообщений: 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)
Go to the top of the page
 
+Quote Post
LexRoss
сообщение Jul 23 2009, 16:13
Сообщение #26


Местный
***

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



Цитата
Выбрать период перезагрузки таймера чуть больше полупериода сетевой частоты (>10мс), а для синхронизации сбрасывать таймер в прерывании от компаратора.

так и делал

Цитата
Выход таймера 0 или 2 подаете на счетный вход таймера 1. Проводочком.

ноги жалко, еще много на них повесить хочу.

Сейчас сделал так: в прерывании компаратора цикл, в котором включается таймер примерно на 10 микросекунд, цикл повторяется столько раз, сколько установлено кнопками - от 0 до 1000, т.е. задержка от 0 до 10 миллисекунд.
Go to the top of the page
 
+Quote Post
LexRoss
сообщение Jul 26 2009, 12:57
Сообщение #27


Местный
***

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



Нужно теперь научить регулятор понимать пульт от муз. центра. Нашел ИК приемник, подключил к входу звуковой карты (внизу то, что получилось). Протокол похож на nec, но стартовый бит только 4мс. Остался не задействован только 1 таймер (16бит), и, я так понимаю, приемник надо вешать на INT0. В общих чертах объясните, как распознать 5 кнопок. help.gif

Сообщение отредактировал LexRoss - Jul 26 2009, 13:03
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 26 2009, 15:09
Сообщение #28


Гуру
******

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



Измерять таймером длительности нулей и единиц. (т.е. результат - массив из длительностей).Потом их анализировать.
А можно и сразу. Для каждой кнопки такая последовательность будет уникальной.

Длительность стартового можно не учитывать. Ибо он выйдет за разрядность 8 бит.
Где-то так. Лично я именно так делал. Тогда не нужно знать что там за протокол в пульте. И вообще наплевать на него.
Правда, стоит учесть, что автоповтор у пульта - тоже хитрый. Но - дойдете сами до этого...


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
LexRoss
сообщение Jul 26 2009, 15:32
Сообщение #29


Местный
***

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



Да, про массив я бы не догадался, спасибо. Автоповтор - это при удержании кнопки? При удержании он выдает стартовый и 2 единицы, с этим, думаю, разберусь.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 26 2009, 15:48
Сообщение #30


Гуру
******

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



автоповтор - он одинаковый для всех кнопок.

ну и когда будете реальные значения получать, увидите, что длительности будут иметь совсем мало вариантов. И их можно смело заменять битами.
Скажем длительности от 25 до 33 - это 0, а от 44 до 67 - 1. Будет короче и быстрее. (Единицы я привел крайне условные).

Сообщение отредактировал DpInRock - Jul 26 2009, 15:51


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 04:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016