Обсуждаем контроллеры компании Atmel.
Ответить

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

Вт авг 28, 2012 21:37:39

Добрый вечер уважаемые форумчане! Много читал вся кого интересного на этом форуме, вот теперь и сам решил спросить :)
Так как являюсь заядлым аквариумистом, решил сделать очередную крышку со светодиодным типом освещения. И чтобы, как говориться, гулять на все деньги, сделать еще контроллер для этого светилька.
Схему и аппаратную часть вроде как подобрал и разобрался :)
Остается для меня затруднительный вопрос с прошивкой, а именно реализация ШИМ управления каналами светильника (их в светильнике будет 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 %

Вопрос мой состоит в том, как реализовать плавное ШИМ регулирование на протяжении определенного времени. То есть я не могу понять, как прописать в основной процедуре (вечном цикле) плавное наращивание мощности?
Огромная благодарность всем кто откликнеться на мое обращение! :)

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

Ср авг 29, 2012 08:43:33

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

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

А все, понял нужно три независимых ШИМа, сразу не обратил внимание :))

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

Ср авг 29, 2012 08:54:04

схема тут ни причём, про таймеры почитай, есть статьи

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

Ср авг 29, 2012 09:05:31

SparkDT, какой камень хочешь использовать?

mazda писал(а):схема тут ни причём, про таймеры почитай, есть статьи

Интересно, как без схемы, не имея о ней представления, программу можно писать?

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

Ср авг 29, 2012 09:24:01

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

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

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

Ср авг 29, 2012 09:24:42

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

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

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

Ср авг 29, 2012 09:25:24

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

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

Ср авг 29, 2012 09:37:57

сам принцип
Вложения
00.jpg
алгоритм без подробностей программы, и про счёт времени с расчётом коэффициэнтов и про настройку таймера есть подробные статьи на первых страницах запросов в поиске
(11.59 KiB) Скачиваний: 491

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

Ср авг 29, 2012 09:45:18

любой attiny хватит для этой задачи с программным ШИМ. или наращивать задачи планируете?
Не могу понять как правильно организовать в вечном цикле нужные проверки для плавного наращивания мощности (то есть 25% за два часа и чтобы это было плавно, незаметно для глаза, без ступеней)

ну, допустим каждую секунду (минуту/вообще всегда) рассчитываете текущий процент (я бы взял уровней побольше на канал - например, 256) исходя из прошедшего времени на данном интервале для каждого канала и просто обновляете значение переменной. обработчик таймера (для программного ШИМ) или сами таймеры (для аппаратного) все остальное делает сам.
ps. могу взяться написать все за небольшой кусочек пирога ;)

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

Ср авг 29, 2012 09:47:14

Получается, что такую программу можно реализовать только с помощью таймеров?
А возможно при этом организовать динамическое значение (то есть дополнительно настраивать расписание с помощью кнопок на устройстве), или такой алгоритм предусматривает только статическое запрограммированное действие?

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

Ср авг 29, 2012 10:01:08

можно. все, что угодно.

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

Ср авг 29, 2012 10:06:38

да все что угодно можно завенуть - и программно и аппаратно и комбинировано - стандартный командоаппарат из раздела программируемое реле времени с регулятором яркости - было бы желание и конкретно сформулированная задача (ну и коробочка с деталюшками) на каком МК - также не критично - их минимум 3 подвида имеется, (можно конечно и на STM32 или AVRовских ARM® processor-based microcontrollers замутить с доступом из интернета через спутник или к настольному ПК прицепить :))) )
:tea:
мня немного опередили :)

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

Ср авг 29, 2012 10:10:42

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:

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

Ср авг 29, 2012 10:36:32

Спасибо всем ответившим, сейчас пытаюсь все переварить, так как не являюсь профи в этом деле и многое для меня требует для начало знакомства :)

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

Ср авг 29, 2012 10:40:59

SparkDT писал(а):Осуществляться данная затея действительно будет на трех независимых ШИМах, для этих целей думаю использовать ATMEGA 16 или собратья постарше.

Mega8 тоже подойдет, если все делать аппаратно, три таймера, из них два на три ШИМа, один на отчсет времени. Тактировать лучше от внешнего кварца, внутренний генератор не точный.

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

Ср авг 29, 2012 10:50:08

на отсчет времени не обязательно отдельный таймер, можно один из ШИМовских использовать, хотя отдельный удобнее. тактировать не лучше, а необходимо от внешнего кварца. еще лучше внешний RTC, электричество ведь иногда куда-то девается ;)

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

Чт авг 30, 2012 15:31:33

В реализации проекта будет однозначно использоваться внешний RTC. Скажите это облегчит реализацию прошивки?
И нужно ли в таком случае использовать счетчик и таймер?

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

Чт авг 30, 2012 15:42:08

счётчик времени делай програмным, освободишь от него таймеры и прошивка проще.

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

Чт авг 30, 2012 15:52:09

все энто хозяйство благополучно умещается в пикушку из ряда 16/18 родичей +жки(если программу "по ходу работы" менять будеш), а если вариант "суточного реле" то и жки не надобно - вполне впишешся в pic16f628a (наиболее на сегодня распространенный) с резервной батарейкой ... для форсу можно внешнюю EEPROMку для сменной программы привесить (сменил пзушку и другая программа побежала) только у суточного реле условие - запуск обязательно в определенное время делать - там без дисплея "подвод стрелок" затруднителен :beer:

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

Чт авг 30, 2012 19:09:52

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

Тогда конечно можно и без таймера, но с другой стороны, чтобы разгрузить проц лучше с таймером для вызова драйвера опроса RTC и вывода времени на LCD.
Ответить