Jump to content

    
Sign in to follow this  
cpl

Плис + ШИМ управления яркостью LED

Recommended Posts

Собрал макет который позволяет поиграть с яркостью светодиодов по средствам ШИМ.

С контролера пишу в память значения который выводит из памяти Cyclon

через ШИМ на светодиодный драйвер (mbi5026) три цвета RGB,

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

затем уже начинает замедляться и потом плохо различается белый с серым.

серый 50% и белый 100% яркость.

Может кто сталкивался с подобной задачкой посоветуйте как подравнять

яркость сделать ее более линейной.

Share this post


Link to post
Share on other sites

По слухам, зрительные и слуховые ощущения человека имеют логарифмическую зависимость. Соответственно, на каждом шаге нужно менять среднюю мощность, выделяемую на светодиоде в какое-то число раз.

Share this post


Link to post
Share on other sites

На http://www.leds.ru/forum.dhtml?part=3 уже обсуждалась данная проблема

привожу пост от туда:

 

Изменение яркости светодиода -- Илья -- 2004-02-26 00:58:35

Пожайлуста подскажите! При линейном изменении ШИМ яркость меняется нелинейно, и особенно когда светодиод пости не горит. Из-за этого при ШИМ 256 бит и корректировки на линейность появляются видимые на глаз ступенки (время от мин. до макс. 10 сек.), делать ШИМ с большей разрядностью нет возможности. Можно ли обойти проблему "ступенек" по другому и с чем связана сильная нелинейность.

 

Изменение яркости светодиода -- Денис -- 2004-02-26 10:47:31

Вероятно это связанно с тем, что есть определенная задержка зажигания светодиода. Некоторые модели на частоте 10 кгц и скважности 2 реально светятся как при скважности 10 - очень сильная задержка.

Могу порекомендовать уменьшить частоту ШИМа (ло 100 гц) или заменить светодиоды на более шустрые.

Интересно, какие светодиоды Вы используете и какая частота ШИМ?

Денис.

 

Изменение яркости светодиода -- Илья -- 2004-02-26 23:51:36

Светодиоды тестировались разные - суперяркие HP, Kingbright и noname, да и задача ориентирована на различные типы светодиодов. Частота ШИМ варьировалась в пределах 50-200 Гц, и видимых на глаз отличий не наблюдалось. Единственное, что могу сказать относительно инерционности, то например довольно медленные АЛ307 (при форсированных токах) показывают даже лучшую картину, чем суперяркие. Также подмечен тот факт, что суперяркие светодиоды уже светятся при очень малых линейных токах порядка 2-10 мкА, а при скважности 255 вполне солидно подсвечиваются. Да, а светодиоды каких фирм посоветовали бы Вы, и почему?

 

Изменение яркости светодиода -- Денис -- 2004-02-28 11:43:30 Илья!

А не попались ли вы на эффект адаптации глаза?

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

Мне кажется в этом проблемма.

Денис.

 

Изменение яркости светодиода -- Илья -- 2004-02-28 20:11:07

Попробовал как посоветовали, конечно светодиод со скважностью 255 затеняется другим светодиодом, но при плавном зажигании первого с горящим вторым не сильно уменьшает эффект ступенек на высоких скважностях (а именно от 240-245 до 255).

 

Изменение яркости светодиода -- Денис -- 2004-03-02 17:14:07

Вот - вот...

Получается что при ярко горящем соседнем ШИМ работает плавно до уровня 240, а дальше заметны ступеньки. Так это оно и есть - это все равно что ступеньки при ШИМе 0-10 при не горящем светодиоде. Глаз-то успел адаптироваться.

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

Share this post


Link to post
Share on other sites
А как реализовать шим на плис. Особо не пинайте, я только начинаю изучать плис.

Плис EPM7128.

А как бы Вы это делали на рассыпухе? Точно так же и на ПЛИС (ну почти так же :) ).

 

Простейший вариант: счетчик, компаратор, регистр. Счетчик молотит по кругу, в регистр пишется величина порога, компаратор сравнивает выход счетчика с выходом регистра. Если одно больше другого, то на выходе один уровень, иначе другой. Получается несимметричный ШИМ. Если нужен симметричный, то почти то же самое, только счетик должен не в одну сторону считать по кругу, а быть реверсивным и считать от нуля до какого-то значения, затем обратно до нуля.

 

В обоих случаях выход компаратора нелишне пропустить через триггер для устранения "иголок". Меняя значение порога в регистре, меняем скважность ШИМа.

Share this post


Link to post
Share on other sites
А как реализовать шим на плис. Особо не пинайте, я только начинаю изучать плис.

Плис EPM7128.

так же как в любом МК

 

В м мк я могу объявить переменную. Допустим тип char. A как обьявить переменные в AHDL. Я сделал два восьмибитных счётчика и они съели 16 блоков. А сколько блоков нужно одному регистру.

Share this post


Link to post
Share on other sites
В м мк я могу объявить  переменную. Допустим тип char. A как обьявить переменные в AHDL. Я сделал два восьмибитных счётчика и они съели 16 блоков. А сколько блоков нужно одному регистру.

 

БЛИН !!! ты не си код читай, а смотри доку на МК, описание как сделан блок ШИМ !!!

очень хорошо у атмела в аврках расписанно

Share this post


Link to post
Share on other sites
В м мк я могу объявить  переменную. Допустим тип char. A как обьявить переменные в AHDL. Я сделал два восьмибитных счётчика и они съели 16 блоков. А сколько блоков нужно одному регистру.

 

БЛИН !!! ты не си код читай, а смотри доку на МК, описание как сделан блок ШИМ !!!

очень хорошо у атмела в аврках расписанно

С шимами разобрался. А как теперь прилепить мне внешнее озу, чтобы там хранить значения для шима.

Share this post


Link to post
Share on other sites
С шимами разобрался.  А как теперь рилепить мне внешнее озу, чтобы там хранить значения для шима.

Для хранения N битного значения порога компаратора внешнее озу не требуется. Достаточно N D-триггеров. Для загрузки порога (для начала) лучше сфорганить подобие SPI интерфейса: CS-выбор микросхемы, CLK-внешнее тактирование и DATA-данные для загрузки (порог)

Share this post


Link to post
Share on other sites
С шимами разобрался.  А как теперь рилепить мне внешнее озу, чтобы там хранить значения для шима.

Для хранения N битного значения порога компаратора внешнее озу не требуется. Достаточно N D-триггеров. Для загрузки порога (для начала) лучше сфорганить подобие SPI интерфейса: CS-выбор микросхемы, CLK-внешнее тактирование и DATA-данные для загрузки (порог)

 

Дело в том что у меня к плмске прицеплена матрица 8на 32. Запись идёт в сдвиговый регистр на 32. И поэтому я должен сранивать значения в компараторе и записывать в регистр 0 или 1 при этом ещё и разворачивать матрицу. Поэтому мне и нужна память. Думаю вобще использовать двухпортовую память.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this