Перейти к содержанию
    

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

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На 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 тысяч, поэтому не удивительно что Вы видите ступеньки когда глаз ждет этих ступенек, готов к ним и рядом есть точка для сравнения...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как реализовать шим на плис. Особо не пинайте, я только начинаю изучать плис.

Плис EPM7128.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как реализовать шим на плис. Особо не пинайте, я только начинаю изучать плис.

Плис EPM7128.

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как реализовать шим на плис. Особо не пинайте, я только начинаю изучать плис.

Плис EPM7128.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как реализовать шим на плис. Особо не пинайте, я только начинаю изучать плис.

Плис EPM7128.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...