Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Управление RGB светодиодами на STM32F3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Jenya7
Для управления RGB светодиодом нужно три PWM сигнала.
Таймеров генерирующих PWM у меня 5 - TIM1, TIM2, TIM3, TIM4, TIM8. А мне надо 8 независимых каналов.
В свое время я делал расширение портов на 74595. Может есть какой способ расширить PWM порт?
Самое милое дело поставить FPGA но они дорогие. Может есть какой специальный чип?
Forger
Если речь про STM32 и частота ШИМ одинаковая, то это все можно сделать на ДВУХ таких таймерах. Почему? Читайте даташит более внимательно.
Так же это можно сделать через "ногодрыг" + любой таймер, если число "ступеней" ШИМ не очень много (грубо - "градаций яркости").

зы. Судя по вашим постам, каждый раз прихожу к одном и тому же выводу - вам тупо лень читать даташиты и "курить" гуглы...
Jenya7
Цитата(Forger @ Aug 16 2018, 12:20) *
Если речь про STM32 и частота ШИМ одинаковая, то это все можно сделать на ДВУХ таких таймерах. Почему? Читайте даташит более внимательно.
Так же это можно сделать через "ногодрыг" + любой таймер, если число "ступеней" ШИМ не очень много (грубо - "градаций яркости").

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


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

зы. научитесь анализировать прочитанное а потом приходе к выводам. (одним и тем же или каким вам там захочется).
Forger
Цитата(Jenya7 @ Aug 16 2018, 10:26) *
откуда частота одинаковая? частота понятно разная. каналы должны быть независимы.

А нафига вам разная частота?
Визуально все равно не отличите 100 от 150 Гц.
Скважность-то понятно - разная. Поэтому яркость каждого канала будет разной.

ТЗ в студию! Иначе все тут получим очередной вынос мозгов ))
jcxz
Цитата(Forger @ Aug 16 2018, 10:20) *
Если речь про STM32 и частота ШИМ одинаковая, то это все можно сделать на ДВУХ таких таймерах. Почему? Читайте даташит более внимательно.

А зачем разные частоты для таких ШИМ? Какой смысл?
Всё элементарно делается ногодрыгом. Число градаций больше 10-20 - будет уже почти неразличимо на глаз (светодиоды же для глаз наверное?) Частота обновления больше 50-100Гц - тоже не имеет смысла из тех же соображений. Итого: получаем частоту ШИМа == ~1кГц. Ногодрыг тут вполне уместен.
Даже не то что уместен, а во многих случаях и неизбежен (во многих МК Cortex-M таймеры бывают шириной всего 16 бит).

Цитата(Jenya7 @ Aug 16 2018, 10:26) *
откуда частота одинаковая? частота понятно разная. каналы должны быть независимы.

Так зачем для управления лампочками разные частоты ШИМ-ов? Просветите biggrin.gif

Цитата(Forger @ Aug 16 2018, 10:20) *
зы. Судя по вашим постам, каждый раз прихожу к одном и тому же выводу - вам тупо лень читать даташиты и "курить" гуглы...

А я прихожу к выводу, что ТС не совсем понимает что такое ШИМ. laughing.gif
Forger
Цитата(jcxz @ Aug 16 2018, 10:34) *
А зачем разные частоты для таких ШИМ? Какой смысл?

Так и я о том же: дали "разрабу" ТЗ, тот прочитал его по диагонали и для управления лампочками решил поставить .... FPGA!

Вот как раз щас делаю проект, где нужно помимо всего остального управлять еще и 24 каналами ШИМ с частотой 500Гц на 20 градаций.
В итоге просто поставил три копеешных сдвиговых регистра (8 выходов в каждом), повесил их на SPI. Делов на 5 копеек. Занято 5 ножек МК.
Jenya7
RGB светодиод управляется следующим образом.

У каждого цвета есть свой код, например
R G D
красный 255 0 0
зеленый 0 255 0
синий 0 0 255
желтый 255 255 0 (смешение цветов)
какой то 255 128 128

чтоб получить этот цвет нужно выставить процентное отношение напряжений на ножках светодиода

(TIM_Period = 8000)

красный PWM1_TIMER->CCR1 = 8000 PWM1_TIMER->CCR2 = 0 PWM1_TIMER->CCR3 = 0
зеленый PWM1_TIMER->CCR1 = 0 PWM1_TIMER->CCR2 = 8000 PWM1_TIMER->CCR3 = 0
синий PWM1_TIMER->CCR1 = 0 PWM1_TIMER->CCR2 = 0 PWM1_TIMER->CCR3 = 8000
желтый PWM1_TIMER->CCR1 = 8000 PWM1_TIMER->CCR2 = 8000 PWM1_TIMER->CCR3 = 0
какой то PWM1_TIMER->CCR1 = 8000 PWM1_TIMER->CCR2 = 4000 PWM1_TIMER->CCR3 = 4000

то есть для уапрвления одной RGB лентой нам нужен один таймер

а...не все понимают откуда берутся цветовые коды. переименуйте RGB.txt в RGB.exe и там будет объяснение.
Forger
Цитата(Jenya7 @ Aug 16 2018, 10:46) *
RGB светодиод управляется следующим образом.

Ну теперь-то все понятно!

Короче, давайте ТЗ в студию.
jcxz
Цитата(Jenya7 @ Aug 16 2018, 10:46) *
У каждого цвета есть свой код, например
R G D
красный 255 0 0

256-й градаций яркости??? Итого по всем 3-м == 2^24 градаций цвета?
Вы реально думаете различить их на глаз?

Или речь идёт не о восприятии глазом человека? Для чего яркостью управлять? Для глаза или яркость нужно регулировать для какого-то тех.процесса?
И чей глаз - человека или может мухи? biggrin.gif Если последнее, то да - пожалуй частоту обновления значений нужно взять повыше, 50...100 Гц для мухи пожалуй маловато будет. biggrin.gif
ТЗ как всегда приходится осиливать телепатически....

PS: Если речь о восприятии глазом человека, то при большом числе градаций яркости проблема будет не с тем как это технически реализовать, а с нелинейностью зависимости значения напряжения формируемого ШИМ и ощущения яркости данной цветовой составляющей глазом. Без учёта этого и проработки этого, нет никакого смысла делать большое число градаций яркости - 10-и...20-и будет за глаза. Даже 20 уже много будет....
Есть как нелинейность зависимости яркости свечения светодиода от приложенного напряжения, так и нелинейность восприятия яркости свечения глазом человека. Да и нелинейность восприятия для разных цветов тоже есть.
И тогда окажется что 64,64,0 - это вовсе не жёлтый цвет, а скорее оранжевый, даже ближе к красному. smile3009.gif
Сергей Борщ
QUOTE (jcxz @ Aug 16 2018, 11:10) *
256-й градаций яркости??? Итого по всем 3-м == 2^24 градаций цвета?
Вы реально думаете различить их на глаз?
Градаций цвета + градаций яркости. Когда (если) автор темы сделает 256 градаций яркости - он поймет, что надо делать еще логарифмичесое преобразование заданной яркости к скважности ШИМ и что 8-битного ШИМа недостаточно, а для приятного и незаметного глазу изменения яркости нужно минимум 1024 уровня ШИМ.

QUOTE (jcxz @ Aug 16 2018, 11:10) *
50...100 Гц для мухи пожалуй маловато будет. biggrin.gif
Да и для человека тоже. Это же не лампа накаливания с громадной инерционностью. Если перемещать взгляд или вертеть головой у мерцающего с такой частотой светодиода - мерцания будут заметны и головная боль гарантирована. При быстром перемещении взгляда хорошо заметна развертка динамической индикации на светодиодных семисегментных индикаторах с частотой цикла обновления 200 Гц. 1000 Гц уже почти незаметна.

QUOTE (Jenya7 @ Aug 16 2018, 10:46) *
то есть для уапрвления одной RGB лентой нам нужен один таймер
То есть для управления одной лентой вам нужно 3 выхода ШИМ. Некторые таймеры имеют 4 выхода ШИМ и ничего не мешает вам использовать оставшийся для другой ленты.
И вы бы сразу огласили свою терминологию: что "канал" у вас - это три выхода ШИМ для управления одной лентой. Итого вам надо 3*8=24 выхода ШИМ Угадал? Тогда или смотреть кристаллы с достаточным количеством выходов ШИМ (если такие есть) или переходить от ШИМа к более другой модуляции (Binary Code Modulation). Последняя, кстати, элементарно реализуется на STM32 ногодрыгом через ПДП.
Jenya7
Цитата(Сергей Борщ @ Aug 16 2018, 14:31) *
И вы бы сразу огласили свою терминологию: что "канал" у вас - это три выхода ШИМ для управления одной лентой. Итого вам надо 3*8=24 выхода ШИМ Угадал? Тогда или смотреть кристаллы с достаточным количеством выходов ШИМ (если такие есть) или переходить от ШИМа к более другой модуляции (Binary Code Modulation). Последняя, кстати, элементарно реализуется на STM32 ногодрыгом через ПДП.


да. на каждую ленту нужно три PWM.

нашел такое решение. уж не знаю насколько хорошее. а что такое ПДП? ногодрыг вобщем то тоже вариант.
mantech
Цитата(Jenya7 @ Aug 16 2018, 13:30) *
а что такое ПДП?

Ммм да... Прямой Доступ к Памяти (DMA)
Forger
Цитата(Jenya7 @ Aug 16 2018, 13:30) *
да. на каждую ленту нужно три PWM.

Мля, это у вас такая фишка - ТЗ выдавать порциями, получая в ответ соотв. порции негатива??? cranky.gif
Неужели сложно СРАЗУ внятно выложить всю нужную информацию?

Как я понял, в большинство существующих RGB-лент уже встроены соотв. контроллеры.
jcxz
Цитата(Сергей Борщ @ Aug 16 2018, 12:31) *
кристаллы с достаточным количеством выходов ШИМ (если такие есть)

Infineon XMC4xxx имеют 2*4*2=16 каналов ШИМ с двухтактными выходами и ещё 4*4=16 каналов ШИМ с однотактными выходами.
Только что-то я сомневаюсь, что ТС осилит XMC4xxx.... cool.gif
Arlleex
Цитата(Forger @ Aug 16 2018, 14:54) *
Мля, это у вас такая фишка - ТЗ выдавать порциями, получая в ответ соотв. порции негатива??? cranky.gif
Неужели сложно СРАЗУ внятно выложить всю нужную информацию?

Как я понял, в большинство существующих RGB-лент уже встроены соотв. контроллеры.

А Вам охото отвечать на вопросы, которые Вы считаете недостаточно полно (но судя по постам ТС - вообще никак) сформулированными?
Мне вот, например, нет. А вытягивать из ТС по крупице того, что нужно сделать в итоге, ИМХО, считаю лишней тратой времени.

Jenya7, если Вы не знали:
1. Выкладывайте то, что хотите сделать в итоге;
2. Приложите к п. 1. какие-то количественные требования;
3. Опишите, как Вы видите решение этой задачи или как Вы ее уже реализовали;
4. Опишите, с какой проблемой Вы столкнулись при выполнении п. 3.

Вот в таком случае Вы можете получить максимально точный ответ, а не растянутую шурпу на 20 страниц трепа biggrin.gif
Aleksandr Baranov
TLC5955 не спасет Вас?
adnega
+1
Или что-то из WS2801, WS2811, WS2812...
Jenya7
Цитата(Aleksandr Baranov @ Aug 16 2018, 17:13) *
TLC5955 не спасет Вас?

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

Цитата(adnega @ Aug 16 2018, 18:03) *
+1
Или что-то из WS2801, WS2811, WS2812...
тоже вариант. думал что найду WS2801/WS2811 на ebay в виде платы. но они все гирлянды продают.
Forger
Посмотрите в сторону RGB-лент со встроенными контроллерами.
Ими можно управлять с любого МК.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.