Easyelectronics.ru

Электроника для всех
Текущее время: 13 дек 2018, 02:21

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 00:59 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
Доброго дня/вечера/ночи,

Решил немного заморочиться с управлением RGB светодиодом.

Имеем светодиод подключенный к 3 каналам ШИМ для выбора цвета. Цвет кодируем в формате HSV (HSB), так как нужна ещё и различная яркость.

Просто включить с заданным цветом получилось достаточно легко, однако ... имеется желание добавить функционал по плавному включению/отключению светодиода.

Данное желание меня ставит в тупик, так как не совсем понятно как это правильно сделать. Формат HSV изначально поддерживает установку яркости, а значит наращиванием яркости тут уже не обойтись.

Общий вывод через ключ завести на 4 канал ШИМ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 01:08 
Старожил

Зарегистрирован: 05 фев 2015, 23:41
Сообщения: 374
Перекодируйте HSV в RGB. RGB скармливайте ШИМ. 4-й канал не нужен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 01:10 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2584
Математика. HSV - это оттенок, насыщенность, яркость. Вам в любом случае нужно считать математику. Причем, значение H - от 0 до 360, значение S - 0-100, значение V - 0-100. Можно для H принять диапазон 0-100.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 01:16 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
не, как преобразовать понятно.

объясню на примере, может так проще будет понять чего я хочу.

вот загадали цвет, в HSV: 322;87;80 что соответствует RGB 204;27;138 (темно пурпурный например, в редакторе любом можно глянуть).

Выставил настройки для ШИМа, все отлично, свети так как надо. Но, я хочу помигать им, но плавно. От состояния выключен постепенно до выбранного цвета. Вопрос как? расччитывать шаг для каждой компоненты и пропорционально наращивать? чтобы количество шагов всегда одинаково было


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 01:22 
Старожил

Зарегистрирован: 05 фев 2015, 23:41
Сообщения: 374
CheMax писал(а):
Но, я хочу помигать им, но плавно.

Каким параметром "мигать" собираетесь ? Яркостью, я думаю ? Вот её и меняйте плавно.
Есть же формула связи цветовых пространств.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 01:34 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5198
В чем проблемы то ? HSV прекрасно работает, меняешь V и усе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 02:14 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
попробовал, работает. но как быть, когда параметр V имеет малое значение? например 10. При значении 100 мигает красиво, при 10 как то стремненько... да и получается что искусственно нелинейность не создать на таких малых величинах (эффект линейно растущей яркости при логарифмических\экспоненциальных коээфициентах ШИМ). или есть способ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 02:58 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 5223
Способ =чего=? Как с небольшого количества градаций уровня получить плавное изменение? ... т.е. получить больше градаций уровня.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 09:04 
Супермодератор
Аватара пользователя

Зарегистрирован: 27 янв 2010, 07:40
Сообщения: 5126
Откуда: Новосибирск
Если надо, вот вклад каждого цвета в общую яркость:

Красный - 0,2125

Зеленый: 0,7154

Синий: 0,0721

Зависимость потока света от тока:

Изображение

_________________
Ищу работу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 10:45 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 529
Битность то какая? Если 8 бит и менять нужно плавно - то будут заметны "рывки" при изменении яркости. Если хотя бы 12 бит - то лучше. Я делал давно 15 бит и нелинейно наращивал (по экспоненте) скважность - получалось очень прилично.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 11:03 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
1. u37: да, способ получения большего числа градаций уровень при малом уровне яркости,

2. Melted Metal: справочные данные это хорошо, но работать придется малыми токами, которых по данному графику и найти то непросто. Да и не совсем понимать как это поможет, за исключением понимания физики процесса.

3.remontsofta: битность любая в пределах разумного. думал насчет 16бит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 11:15 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 529
Во-первых нужно рассчитать кривую, чтобы яркость нарастала нелинейно. А чтобы растягивать шаги, я делал на меге дробь с фиксированной точкой. Если коротко - чтобы плавно менять байт я приделывал к нему "младший" байт и его приращивал по-чуть, а после переполнения инкрементировал исходный "старший". Если нужно еще плавнее (промежутки временные большие) - можно приделать 2-3 "младших" байта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 11:51 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
remontsofta писал(а):
Во-первых нужно рассчитать кривую, чтобы яркость нарастала нелинейно. А чтобы растягивать шаги, я делал на меге дробь с фиксированной точкой. Если коротко - чтобы плавно менять байт я приделывал к нему "младший" байт и его приращивал по-чуть, а после переполнения инкрементировал исходный "старший". Если нужно еще плавнее (промежутки временные большие) - можно приделать 2-3 "младших" байта.


Кривую посчитать можно, сейчас надо понять принцип.

не совсем понял насчет дроби, 1 байт это целая часть, 2 байт это младшая часть. но при этом коэффициент заполнения это целое 16 бит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 13:18 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 529
у нас при 16 битах 65536 вариантов яркости но скважность 1 отличается от 2 очень сильно, в то время, как разницу между 1000 и 1001 на глаз не заметить. Я выбирал из 65536 (у меня было 15 бит, так что 32768) 256 значений, разница между которыми возрастала по экспоненте (ну или типа того). То есть из программы я оперировал только одним байтом каждого цвета. А вот как сделать световой эффект перехода за определенный промежуток времени - это другая история. Берем текущее значение байта, скажем 0x15, прихерачиваем к нему справа три (два, один) "младших" - 0x15000000, рассчитываем сколько надо за раз прибавлять и с какой частотой, что бы черз 2 секунды стало, скажем, 0x25000000, и - поехали!!! А в цикле, параллельно, обновляем с помощью старшего байта (там будет текущее значение яркости) текущее значение для канала (будь то rgb или hsv).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 13:19 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 529
у нас при 16 битах 65536 вариантов яркости но скважность 1 отличается от 2 очень сильно, в то время, как разницу между 1000 и 1001 на глаз не заметить. Я выбирал из 65536 (у меня было 15 бит, так что 32768) 256 значений, разница между которыми возрастала по экспоненте (ну или типа того). То есть из программы я оперировал только одним байтом каждого цвета. А вот как сделать световой эффект перехода за определенный промежуток времени - это другая история. Берем текущее значение байта, скажем 0x15, прихерачиваем к нему справа три (два, один) "младших" - 0x15000000, рассчитываем сколько надо за раз прибавлять и с какой частотой, что бы черз 2 секунды стало, скажем, 0x25000000, и - поехали!!! А в цикле, параллельно, обновляем с помощью старшего байта (там будет текущее значение яркости) текущее значение для канала (будь то rgb или hsv).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 13:40 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 5223
Для получения дополнительных уровней к двум "дискретным", используйте PWM.
Например, есть два уровня (PWM), 20 и 21. Задача - получить еще одну градацию. Для этого, следует попеременно ставить (PWM) 20 и 21. Как вариант - 5 мс выдавать 20 и 5 мс выдавать 21. Если цель состоит в создании, например, 4х суб-градаций, то квант времени стоит снизить до 1 мс и выдавать, для уровня 20.25, как 1 мс = 21 и 3 мс 20.
Отсюда, для получения большого числа суб-градаций, надо делать PWM как можно выше и обновлять величину скважности на каждом периоде. Для 100 кГц один цикл 10 мкс. За общий период 20 мс можно поменять значения 2000 раз. Т.е. можно получить еще 2000 суб-уровней. Всё это легко реализуется полностью аппаратно на STM32 / DMA.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 13:49 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5198
CheMax, вариант с WS2812 чем не устроил?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 14:29 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
тем что мне его не купят))) сказали на те то, чего на складе много.

вот и приходится извращаться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 14:46 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5198
CheMax, ну тодысь озвучивайте комплектующие- и камень и LED .
Надеюсь не богомерзкий авр?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 25 янв 2018, 14:48 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
u37 писал(а):
Для получения дополнительных уровней к двум "дискретным", используйте PWM.
Например, есть два уровня (PWM), 20 и 21. Задача - получить еще одну градацию. Для этого, следует попеременно ставить (PWM) 20 и 21. Как вариант - 5 мс выдавать 20 и 5 мс выдавать 21. Если цель состоит в создании, например, 4х суб-градаций, то квант времени стоит снизить до 1 мс и выдавать, для уровня 20.25, как 1 мс = 21 и 3 мс 20.
Отсюда, для получения большого числа суб-градаций, надо делать PWM как можно выше и обновлять величину скважности на каждом периоде. Для 100 кГц один цикл 10 мкс. За общий период 20 мс можно поменять значения 2000 раз. Т.е. можно получить еще 2000 суб-уровней. Всё это легко реализуется полностью аппаратно на STM32 / DMA.


у меня не stm в данной задаче (nrf52832, если интересно). но суть понятна, спасибо. буду пробовать)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 26 янв 2018, 11:36 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
dosikus_2 писал(а):
CheMax, ну тодысь озвучивайте комплектующие- и камень и LED .
Надеюсь не богомерзкий авр?


NRF52832
LED: пока что CLV1A-FKB-CJ1M1F1BB7R4S3

и да, WS2818 решает ведь только вопрос интерфейса. вместо RGB свой протокол у них. Опять же, кодируется только цвет. Получается все равно нужен алгоритм адекватного управления.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 26 янв 2018, 13:45 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 638
Как Вы написали вы собираетесь мигать диодом. И проблема с малой яркостью.. А почему б при мигании не начинать светить ЯРЧЕ (хоть до максималки) а потом вниз. При выключении мигания устанавливать исходную яркость.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 26 янв 2018, 13:50 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5198
CheMax писал(а):
вместо RGB свой протокол у них. Опять же, кодируется только цвет. Получается все равно нужен алгоритм адекватного управления.


чЕВОЙ? У них RGB24 бита (точней GRB). Прикручиваем конвертер HSV-RGB и вуаля...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 26 янв 2018, 14:21 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
kos писал(а):
Как Вы написали вы собираетесь мигать диодом. И проблема с малой яркостью.. А почему б при мигании не начинать светить ЯРЧЕ (хоть до максималки) а потом вниз. При выключении мигания устанавливать исходную яркость.


в темной комнате самое то светить на максималку)))

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плавное мигание RGB
СообщениеДобавлено: 26 янв 2018, 14:26 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 264
Откуда: Таганрог
dosikus, немного не удачно выразился. В сам диод гоним не ШИМ поток, а просто коды по одной линии. Проблему это не меняет

Выбрали цвет, установили яркость 10% от максимальной. Как обеспечить плавность мигания при таком уровне? Диапазон то небольшой получается....


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB