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

Управление RGB светодиодами на STM32F3

Для управления RGB светодиодом нужно три PWM сигнала.

Таймеров генерирующих PWM у меня 5 - TIM1, TIM2, TIM3, TIM4, TIM8. А мне надо 8 независимых каналов.

В свое время я делал расширение портов на 74595. Может есть какой способ расширить PWM порт?

Самое милое дело поставить FPGA но они дорогие. Может есть какой специальный чип?

Изменено пользователем Jenya7

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


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

Если речь про STM32 и частота ШИМ одинаковая, то это все можно сделать на ДВУХ таких таймерах. Почему? Читайте даташит более внимательно.

Так же это можно сделать через "ногодрыг" + любой таймер, если число "ступеней" ШИМ не очень много (грубо - "градаций яркости").

 

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

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


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

Если речь про STM32 и частота ШИМ одинаковая, то это все можно сделать на ДВУХ таких таймерах. Почему? Читайте даташит более внимательно.

Так же это можно сделать через "ногодрыг" + любой таймер, если число "ступеней" ШИМ не очень много (грубо - "градаций яркости").

 

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

 

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

 

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

Изменено пользователем Jenya7

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


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

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

А нафига вам разная частота?

Визуально все равно не отличите 100 от 150 Гц.

Скважность-то понятно - разная. Поэтому яркость каждого канала будет разной.

 

ТЗ в студию! Иначе все тут получим очередной вынос мозгов ))

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


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

Если речь про STM32 и частота ШИМ одинаковая, то это все можно сделать на ДВУХ таких таймерах. Почему? Читайте даташит более внимательно.

А зачем разные частоты для таких ШИМ? Какой смысл?

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

Даже не то что уместен, а во многих случаях и неизбежен (во многих МК Cortex-M таймеры бывают шириной всего 16 бит).

 

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

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

 

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

А я прихожу к выводу, что ТС не совсем понимает что такое ШИМ. :laughing:

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


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

А зачем разные частоты для таких ШИМ? Какой смысл?

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

 

Вот как раз щас делаю проект, где нужно помимо всего остального управлять еще и 24 каналами ШИМ с частотой 500Гц на 20 градаций.

В итоге просто поставил три копеешных сдвиговых регистра (8 выходов в каждом), повесил их на SPI. Делов на 5 копеек. Занято 5 ножек МК.

 

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


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

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 и там будет объяснение.

post-71075-1534406846.png

RGB.txt

Изменено пользователем Jenya7

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


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

RGB светодиод управляется следующим образом.

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

 

Короче, давайте ТЗ в студию.

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


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

У каждого цвета есть свой код, например

R G D

красный 255 0 0

256-й градаций яркости??? Итого по всем 3-м == 2^24 градаций цвета?

Вы реально думаете различить их на глаз?

 

Или речь идёт не о восприятии глазом человека? Для чего яркостью управлять? Для глаза или яркость нужно регулировать для какого-то тех.процесса?

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

ТЗ как всегда приходится осиливать телепатически....

 

PS: Если речь о восприятии глазом человека, то при большом числе градаций яркости проблема будет не с тем как это технически реализовать, а с нелинейностью зависимости значения напряжения формируемого ШИМ и ощущения яркости данной цветовой составляющей глазом. Без учёта этого и проработки этого, нет никакого смысла делать большое число градаций яркости - 10-и...20-и будет за глаза. Даже 20 уже много будет....

Есть как нелинейность зависимости яркости свечения светодиода от приложенного напряжения, так и нелинейность восприятия яркости свечения глазом человека. Да и нелинейность восприятия для разных цветов тоже есть.

И тогда окажется что 64,64,0 - это вовсе не жёлтый цвет, а скорее оранжевый, даже ближе к красному. :smile3009:

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


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

256-й градаций яркости??? Итого по всем 3-м == 2^24 градаций цвета?

Вы реально думаете различить их на глаз?

Градаций цвета + градаций яркости. Когда (если) автор темы сделает 256 градаций яркости - он поймет, что надо делать еще логарифмичесое преобразование заданной яркости к скважности ШИМ и что 8-битного ШИМа недостаточно, а для приятного и незаметного глазу изменения яркости нужно минимум 1024 уровня ШИМ.

 

50...100 Гц для мухи пожалуй маловато будет. biggrin.gif
Да и для человека тоже. Это же не лампа накаливания с громадной инерционностью. Если перемещать взгляд или вертеть головой у мерцающего с такой частотой светодиода - мерцания будут заметны и головная боль гарантирована. При быстром перемещении взгляда хорошо заметна развертка динамической индикации на светодиодных семисегментных индикаторах с частотой цикла обновления 200 Гц. 1000 Гц уже почти незаметна.

 

то есть для уапрвления одной RGB лентой нам нужен один таймер
То есть для управления одной лентой вам нужно 3 выхода ШИМ. Некторые таймеры имеют 4 выхода ШИМ и ничего не мешает вам использовать оставшийся для другой ленты.

И вы бы сразу огласили свою терминологию: что "канал" у вас - это три выхода ШИМ для управления одной лентой. Итого вам надо 3*8=24 выхода ШИМ Угадал? Тогда или смотреть кристаллы с достаточным количеством выходов ШИМ (если такие есть) или переходить от ШИМа к более другой модуляции (Binary Code Modulation). Последняя, кстати, элементарно реализуется на STM32 ногодрыгом через ПДП.

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


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

И вы бы сразу огласили свою терминологию: что "канал" у вас - это три выхода ШИМ для управления одной лентой. Итого вам надо 3*8=24 выхода ШИМ Угадал? Тогда или смотреть кристаллы с достаточным количеством выходов ШИМ (если такие есть) или переходить от ШИМа к более другой модуляции (Binary Code Modulation). Последняя, кстати, элементарно реализуется на STM32 ногодрыгом через ПДП.

 

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

 

нашел такое решение. уж не знаю насколько хорошее. а что такое ПДП? ногодрыг вобщем то тоже вариант.

Изменено пользователем Jenya7

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


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

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

Мля, это у вас такая фишка - ТЗ выдавать порциями, получая в ответ соотв. порции негатива??? :cranky:

Неужели сложно СРАЗУ внятно выложить всю нужную информацию?

 

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

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


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

кристаллы с достаточным количеством выходов ШИМ (если такие есть)

Infineon XMC4xxx имеют 2*4*2=16 каналов ШИМ с двухтактными выходами и ещё 4*4=16 каналов ШИМ с однотактными выходами.

Только что-то я сомневаюсь, что ТС осилит XMC4xxx.... B)

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


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

Мля, это у вас такая фишка - ТЗ выдавать порциями, получая в ответ соотв. порции негатива??? :cranky:

Неужели сложно СРАЗУ внятно выложить всю нужную информацию?

 

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

А Вам охото отвечать на вопросы, которые Вы считаете недостаточно полно (но судя по постам ТС - вообще никак) сформулированными?

Мне вот, например, нет. А вытягивать из ТС по крупице того, что нужно сделать в итоге, ИМХО, считаю лишней тратой времени.

 

Jenya7, если Вы не знали:

1. Выкладывайте то, что хотите сделать в итоге;

2. Приложите к п. 1. какие-то количественные требования;

3. Опишите, как Вы видите решение этой задачи или как Вы ее уже реализовали;

4. Опишите, с какой проблемой Вы столкнулись при выполнении п. 3.

 

Вот в таком случае Вы можете получить максимально точный ответ, а не растянутую шурпу на 20 страниц трепа :biggrin:

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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