реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Управление RGB светодиодами на STM32F3
Jenya7
сообщение Aug 16 2018, 07:09
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Для управления RGB светодиодом нужно три PWM сигнала.
Таймеров генерирующих PWM у меня 5 - TIM1, TIM2, TIM3, TIM4, TIM8. А мне надо 8 независимых каналов.
В свое время я делал расширение портов на 74595. Может есть какой способ расширить PWM порт?
Самое милое дело поставить FPGA но они дорогие. Может есть какой специальный чип?

Сообщение отредактировал Jenya7 - Aug 16 2018, 07:10
Go to the top of the page
 
+Quote Post
Forger
сообщение Aug 16 2018, 07:20
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



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

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Aug 16 2018, 07:26
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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

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


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

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

Сообщение отредактировал Jenya7 - Aug 16 2018, 07:28
Go to the top of the page
 
+Quote Post
Forger
сообщение Aug 16 2018, 07:28
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



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

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

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 16 2018, 07:41
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(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
Go to the top of the page
 
+Quote Post
Forger
сообщение Aug 16 2018, 07:41
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Aug 16 2018, 10:34) *
А зачем разные частоты для таких ШИМ? Какой смысл?

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

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Aug 16 2018, 07:46
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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


Сообщение отредактировал Jenya7 - Aug 16 2018, 08:36
Прикрепленные изображения
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  RGB.txt ( 9.5 килобайт ) Кол-во скачиваний: 5
 
Go to the top of the page
 
+Quote Post
Forger
сообщение Aug 16 2018, 08:04
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Jenya7 @ Aug 16 2018, 10:46) *
RGB светодиод управляется следующим образом.

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

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 16 2018, 08:10
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(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
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 16 2018, 09:31
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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 ногодрыгом через ПДП.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Aug 16 2018, 10:30
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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


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

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

Сообщение отредактировал Jenya7 - Aug 16 2018, 10:32
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 16 2018, 10:35
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Jenya7 @ Aug 16 2018, 13:30) *
а что такое ПДП?

Ммм да... Прямой Доступ к Памяти (DMA)
Go to the top of the page
 
+Quote Post
Forger
сообщение Aug 16 2018, 10:54
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Jenya7 @ Aug 16 2018, 13:30) *
да. на каждую ленту нужно три PWM.

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

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 16 2018, 11:13
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Сергей Борщ @ Aug 16 2018, 12:31) *
кристаллы с достаточным количеством выходов ШИМ (если такие есть)

Infineon XMC4xxx имеют 2*4*2=16 каналов ШИМ с двухтактными выходами и ещё 4*4=16 каналов ШИМ с однотактными выходами.
Только что-то я сомневаюсь, что ТС осилит XMC4xxx.... cool.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Aug 16 2018, 11:14
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



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

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

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

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

Вот в таком случае Вы можете получить максимально точный ответ, а не растянутую шурпу на 20 страниц трепа biggrin.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01697 секунд с 7
ELECTRONIX ©2004-2016