Диммирование светодиодов на ATMega

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 5
Зарегистрирован: Вт авг 28, 2012 21:25:28

Сообщение SparkDT »

Добрый вечер уважаемые форумчане! Много читал вся кого интересного на этом форуме, вот теперь и сам решил спросить :)
Так как являюсь заядлым аквариумистом, решил сделать очередную крышку со светодиодным типом освещения. И чтобы, как говориться, гулять на все деньги, сделать еще контроллер для этого светилька.
Схему и аппаратную часть вроде как подобрал и разобрался :)
Остается для меня затруднительный вопрос с прошивкой, а именно реализация ШИМ управления каналами светильника (их в светильнике будет 3).
Необходимо реализовать рассвет/закат по такой схеме:
1 точка:
8:00 – 10:00 (плавное включение)
Освещенность: 0/0/0 % - 25/25/25 %

2 точка:
10:00 – 12:00
Освещенность: 25/25/25 % - 50/50/50 %

3 точка:
12:00 – 13:00
Освещенность: 50/50/50 % - 99/99/99 %

4 точка:
13:00 – 15:00
Освещенность: 99/99/99 % - 99/50/99 %

5 точка:
15:00 – 16:00
Освещенность: 99/50/99 % - 99/99/99 %

6 точка:
16:00 – 18:00
Освещенность: 99/99/99 % - 10/70/10 %

7 точка:
18:00 – 18:30
Освещенность: 10/70/10 % - 0/50/0 %

8 точка:
18:30 – 19:30
Освещенность: 0/50/0 % - 0/0/0 %

9 точка:
19:30 – 08:00
Освещенность: 0/0/0 %

Вопрос мой состоит в том, как реализовать плавное ШИМ регулирование на протяжении определенного времени. То есть я не могу понять, как прописать в основной процедуре (вечном цикле) плавное наращивание мощности?
Огромная благодарность всем кто откликнеться на мое обращение! :)
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

Управлять каналами нужно независимо, т.е. три раздельных ШИМа, или одним ШИМом три канала параллельно?

А на схему можно взглянуть?

А все, понял нужно три независимых ШИМа, сразу не обратил внимание :))
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 382
Зарегистрирован: Сб фев 18, 2012 14:50:22

Сообщение mazda »

схема тут ни причём, про таймеры почитай, есть статьи
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

SparkDT, какой камень хочешь использовать?
mazda писал(а):схема тут ни причём, про таймеры почитай, есть статьи
Интересно, как без схемы, не имея о ней представления, программу можно писать?
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 382
Зарегистрирован: Сб фев 18, 2012 14:50:22

Сообщение mazda »

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

не важно как он будет фильтровать шим, через какую оптопару или транзистор его пускать, и каким напряжением управлять, вопрос программы с этим не связан.
тем более есть типовые решения.
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 382
Зарегистрирован: Сб фев 18, 2012 14:50:22

Сообщение mazda »

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

не важно как он будет фильтровать шим, через какую оптопару или транзистор его пускать, и каким напряжением управлять, вопрос программы с этим не связан.
тем более есть типовые решения.
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Реклама
Родился
Сообщения: 5
Зарегистрирован: Вт авг 28, 2012 21:25:28

Сообщение SparkDT »

Осуществляться данная затея действительно будет на трех независимых ШИМах, для этих целей думаю использовать ATMEGA 16 или собратья постарше.
Схема действительно тут ни к чему, так как она очень проста. С МК выходит 3 ШИМ сигнала (ШИМ использовать буду аппаратные) и вот ними надо управлять. Меня более интересует алгоритм программы. Не могу понять как правильно организовать в вечном цикле нужные проверки для плавного наращивания мощности (то есть 25% за два часа и чтобы это было плавно, незаметно для глаза, без ступеней). Думаю выразился понятно, если нет прошу Вас спросить еще не достающую для помощи информацию :)
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 382
Зарегистрирован: Сб фев 18, 2012 14:50:22

Сообщение mazda »

сам принцип
Вложения
00.jpg
алгоритм без подробностей программы, и про счёт времени с расчётом коэффициэнтов и про настройку таймера есть подробные статьи на первых страницах запросов в поиске
(11.59 КБ) 507 скачиваний
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

любой attiny хватит для этой задачи с программным ШИМ. или наращивать задачи планируете?
Не могу понять как правильно организовать в вечном цикле нужные проверки для плавного наращивания мощности (то есть 25% за два часа и чтобы это было плавно, незаметно для глаза, без ступеней)
ну, допустим каждую секунду (минуту/вообще всегда) рассчитываете текущий процент (я бы взял уровней побольше на канал - например, 256) исходя из прошедшего времени на данном интервале для каждого канала и просто обновляете значение переменной. обработчик таймера (для программного ШИМ) или сами таймеры (для аппаратного) все остальное делает сам.
ps. могу взяться написать все за небольшой кусочек пирога ;)
Родился
Сообщения: 5
Зарегистрирован: Вт авг 28, 2012 21:25:28

Сообщение SparkDT »

Получается, что такую программу можно реализовать только с помощью таймеров?
А возможно при этом организовать динамическое значение (то есть дополнительно настраивать расписание с помощью кнопок на устройстве), или такой алгоритм предусматривает только статическое запрограммированное действие?
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

можно. все, что угодно.
Друг Кота
Аватара пользователя
Сообщения: 15700
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

да все что угодно можно завенуть - и программно и аппаратно и комбинировано - стандартный командоаппарат из раздела программируемое реле времени с регулятором яркости - было бы желание и конкретно сформулированная задача (ну и коробочка с деталюшками) на каком МК - также не критично - их минимум 3 подвида имеется, (можно конечно и на STM32 или AVRовских ARM® processor-based microcontrollers замутить с доступом из интернета через спутник или к настольному ПК прицепить :))) )
:tea:
мня немного опередили :)
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

25% при 8 битной ШИМ это 64, 2 часа это 120 минут, т.е. нужно раз в пару минут увеличивать яркость на 1. Значит нужно использовать один из таймеров, чтобы он отсчитывал 2х минутные интервалы и в его прерывании увеличивать величину ШИМ. Это как пример.
А вообще можно сделать так:
1) сделать часы
2) разбить вечный цикл на нужное количество интервалов (ваши "точки"), переходить между ними по показаниям часов
3) для каждого интервала задать скорости изменения цветов, например в минуту, (можно 16 разрядные - для точности, сами значения ШИМ тоже 16-разрядные, но в регистры OCR записывать старшие 8 бит, ну или все 16, если ШИМ-16бит) например для 1-й точки - 25%*65536 / 120 минут = 136, т.е. +136/+136/+136 7-й точки - интервал 30 минут, скорости -218/-437/-218
4) в каждом интервале к текущему значению ШИМ прибавлять/отнимать эти скорости изменения.

PS: 3 аппаратных 16 битных ШИМ каналов в меге16 нет, но для освещения ИМХО 8-бит хватает + частоты выше сотен герц так же излишни для света => ШИМ можно сделать программный, тогда и таймера достаточно одного (в нем же отсчитывать минутные интервалы), тогда мега16 легко меняется на ТИНИ13. Но это уже не мне решать :)))

Мда, долго я писал, уже все сказали :facepalm: :oops:
Родился
Сообщения: 5
Зарегистрирован: Вт авг 28, 2012 21:25:28

Сообщение SparkDT »

Спасибо всем ответившим, сейчас пытаюсь все переварить, так как не являюсь профи в этом деле и многое для меня требует для начало знакомства :)
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

SparkDT писал(а):Осуществляться данная затея действительно будет на трех независимых ШИМах, для этих целей думаю использовать ATMEGA 16 или собратья постарше.
Mega8 тоже подойдет, если все делать аппаратно, три таймера, из них два на три ШИМа, один на отчсет времени. Тактировать лучше от внешнего кварца, внутренний генератор не точный.
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

на отсчет времени не обязательно отдельный таймер, можно один из ШИМовских использовать, хотя отдельный удобнее. тактировать не лучше, а необходимо от внешнего кварца. еще лучше внешний RTC, электричество ведь иногда куда-то девается ;)
Родился
Сообщения: 5
Зарегистрирован: Вт авг 28, 2012 21:25:28

Сообщение SparkDT »

В реализации проекта будет однозначно использоваться внешний RTC. Скажите это облегчит реализацию прошивки?
И нужно ли в таком случае использовать счетчик и таймер?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 382
Зарегистрирован: Сб фев 18, 2012 14:50:22

Сообщение mazda »

счётчик времени делай програмным, освободишь от него таймеры и прошивка проще.
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Друг Кота
Аватара пользователя
Сообщения: 15700
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

все энто хозяйство благополучно умещается в пикушку из ряда 16/18 родичей +жки(если программу "по ходу работы" менять будеш), а если вариант "суточного реле" то и жки не надобно - вполне впишешся в pic16f628a (наиболее на сегодня распространенный) с резервной батарейкой ... для форсу можно внешнюю EEPROMку для сменной программы привесить (сменил пзушку и другая программа побежала) только у суточного реле условие - запуск обязательно в определенное время делать - там без дисплея "подвод стрелок" затруднителен :beer:
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

SparkDT писал(а):В реализации проекта будет однозначно использоваться внешний RTC. Скажите это облегчит реализацию прошивки?
И нужно ли в таком случае использовать счетчик и таймер?
Тогда конечно можно и без таймера, но с другой стороны, чтобы разгрузить проц лучше с таймером для вызова драйвера опроса RTC и вывода времени на LCD.
Ответить

Вернуться в «AVR»