Easyelectronics.ru

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

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 05 дек 2017, 23:47 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
Добрый вечер. Столкнулся с проблемой шим-яркость.
Дикая нелинейность. Шим у меня программный, 8бит
На практике получается примерно так: шим - яркость %
255 - 100
127 - 80
63 - 70
31 - 60
15 - 50
7 - 35
3 - 20
2 - 10
1 - 5
0 - 0

Тут настолько много факторов что я запутался. Хочу плавно гасить и зажигать.
Кто сталкивался? Как привести эту нелинейность к математическому виду? Таблицы не предлагать.

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:07 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
Что есть "яркость %"? (Как получено)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:25 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
яркость приблизительна. получена визуально и с помощью камеры
100% яркость - это при 100% заполнении (256/256) при 20мА

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:27 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2472
Откуда: Санкт-Петербург
В первом приближении отклик глаза пропорционален логарифму значения - что вы и видите в своей табличке. pwm = c1*exp(x*c2), c1 и c2 подобрать по вкусу.

А если примерно "как на мониторе" - то можете взять pwm = x*x/const.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:32 
Старожил

Зарегистрирован: 07 фев 2011, 21:00
Сообщения: 444
Откуда: Ханты-Мансийск
Цитата:
Кто сталкивался? Как привести эту нелинейность к математическому виду? Таблицы не предлагать.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:36 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
вы не правы. ШИМу на ВАХ не важен. Диод или включен на 100% или полностью выключен.
тут конкретно инерциональность зрения решает. При том что для человека что для видеокамеры почти одинаково.

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:39 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
casus, если вы не накосячили в PWM (дико), то световой поток светодиода прямо пропорционален этому самому PWM. Зависимость прямая. Светодиод - безинерционный излучатель света. У вас проблема не с ним, а с вашей оценкой яркости.
Так что - смотрите то, что порекомендовал aamonster.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:41 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
aamonster правильно написал. я сейчас размышляю над тем как эти логарифмы на 8 битном мк сделать))

я знаю что яркость диода пропорциональна энергетически, но не визуально + затягивание фронтов драйвером + инерциальность зрения+температура кристала диода итд.

_________________
vk.com/casusnur


Последний раз редактировалось casus 06 дек 2017, 00:52, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:51 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
Самый простой вариант - менять N от 0 до 8, при этом ставить PWM в количестве '1' этого числа. Т.е. 0=0, 1=1, 2=0b11, 3=0b111,... 8=0b11111111
Если 8 уровней мало, то можно удвоить значения, добавив среднее между соседними. Т.е 0 1 3 7 15 31 ... 255 -> 0 1 2 3 5 7 11 15 23 31 ... 255.
Да-да, та самая таблица. )))))))))))))) Впрочем, если дико хочется, можете производить возведение в квадрат.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 00:56 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
Спасибо. Это оно. Как решить проблему понял, щас функцию напишу)))))

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 02:36 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 452
чего там писать N [0..8].
PWM = (1 << N) - 1;
вот и вся формула :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 03:15 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
void1509 писал(а):
чего там писать N [0..8].
PWM = (1 << N) - 1;
вот и вся формула :)


Сделал как написал u37
Код:
calc_bright
   ldw   x,   #16
calc_rep   
   clr   tmpbr
   decw   x
   clrw   y
   ld   a,   (x)
   add   a,   #1
   ld   yl,   a
   ld   a,   #2
   div   y,   a
   tnzw   y
   jreq zerobright
   decw   y
   scf
   rlc   tmpbr
   tnz   a
   jreq   shift_one
   rcf
   rlc   tmpbr
shift_one
   tnzw   y
   jreq zerobright
   scf
   rlc   tmpbr
   decw   y
   jra   shift_one
zerobright
   ld   a,   tmpbr
   ld   ($10,x),   a
   tnzw   x
   jrne   calc_rep
   ret


Заделал 4 бита.
Работает так. берем байт (0-15), если ноль выходим.
К байту +1 и делим на 2.
От частного вычитаем 1, результат это то количество единиц которое нужно добавить в tmpbr(результат) вконце
в tmpbr добавляем "1", если есть остаток от деления еще добавляем "0", а потом оставшееся количество "1".

)) а единичками заполнить то вобще можно так
Код:
   scf
   rlc   tmpbr


Кстати на вид мега линейно

_________________
vk.com/casusnur


Последний раз редактировалось casus 06 дек 2017, 03:59, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 03:31 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
N = "яркость"
PWM = (((1 << (N >> 2)) - 1) * ( (N & 3) + 4) ) >> 2;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 03:54 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
Для 4 бит (16 уровней яркости) еще нолик нужен. И это, я СИ незнаю

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 04:04 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
Я уже подзабыл asm AVR. (могу написать на x86 )))
Оператор "<<" означает сдвиг влево (LSL), а ">>" сдвиг вправо (LSR). Оператор & он же и есть (and). Остальное все просто.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 04:20 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2472
Откуда: Санкт-Петербург
casus, ваш код больше, чем табличка на 16 байт + код выбора из неё. И работает медленнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 04:58 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
Убедили. Только не 16, а 32 байта. Я писал калькулятор, с возможностью повышать разрядность если будет заметна дискретность.

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 10:59 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2472
Откуда: Санкт-Петербург
Ну да. Формула всё равно нужна, таблички ведь не берутся с неба (а передача их из поколения в поколение, как сакрального знания - залог багов: однажды понадобится другая табличка, а применят эту).

Кстати, я бы в районе малых чисел табличку подкорректировал: пусть там значения pwm идут подряд, чтобы там по максимуму использовать разрешение pwm.
Как-то так:
pwm(0) = 0
pwm(i+1) = max(pwm(i)*c, pwm(i)+1)
c - что-то типа 1.1 (подобрать, чтобы до 255 было нужное количество значений)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 12:37 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2022
Откуда: Русь, Новороссийск
aamonster писал(а):
табличка на 16 байт + код выбора из неё
А можно попросить чистовик такого варианта?
А то вроде все буквы знаю, а собрать в слово не могу.

Мне для обучения программированию и осмысления себя в нём. :)


Последний раз редактировалось VladyMile 06 дек 2017, 15:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 14:12 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 750
Я туту покумекал и подобрал формулу, которая по идее должна быть близка к истине:

ocr = 255 * (exp(s*k) - 1) / (exp(k) - 1)

, где
s - ожидаемая яркость - изменяется от 0 до 1,
k - эмпирический коэффициент кривизны, приблизительно равен 3.

Надо будет потестировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 06 дек 2017, 23:28 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2022
Откуда: Русь, Новороссийск
aamonster писал(а):
В первом приближении отклик глаза пропорционален логарифму значения...
Цитата:
На основе экспериментов Э. Вебера, Г. Фехнер сформулировал психофизиологический закон (закон Вебера – Фехнера), согласно которому интенсивность ощущения пропорциональна логарифму интенсивности раздражителя: S=k×ln(R), где R – интенсивность раздражителя, S – интенсивность ощущения, k – константа зависящая от единиц измерения.
Позже С. Стивенс произвел модификацию закона Вебера – Фехнера, считая, что зависимость носит характер общей степенной функции с различными показателями степени для каждого вида ощущений (закон Стивенса[1]): S=k×Rn, где n – показатель степени, зависящий от вида ощущений. Для зрительного ощущения яркости, степенной показатель имеет значение n=0,33; при условии адаптированного к темноте наблюдателя и размере раздражителя в 5 градусов.
Готовые таблицы в исходниках тут


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 07 дек 2017, 02:34 
Старожил

Зарегистрирован: 05 дек 2015, 16:56
Сообщения: 238
Почему задаёте вопросы и не читаете ответы?
Сразу же ответили :
aamonster писал(а):
В первом приближении отклик глаза пропорционален логарифму значения - что вы и видите в своей табличке. pwm = c1*exp(x*c2), c1 и c2 подобрать по вкусу.
А если примерно "как на мониторе" - то можете взять pwm = x*x/const.

То есть
GammaCorrectedPWM = Bright * Bright / MaxBright
И никаких таблиц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 07 дек 2017, 09:29 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2022
Откуда: Русь, Новороссийск
С "примерной логарифмичностью" согласились быстро.
Мне кажется, здесь более обсуждалась "выгода" - таблица или расчёты.
Вроде как "победила" таблица.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 07 дек 2017, 13:42 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3464
Откуда: Новосибирск
VladyMile писал(а):
С "примерной логарифмичностью" согласились быстро.
Мне кажется, здесь более обсуждалась "выгода" - таблица или расчёты.
Вроде как "победила" таблица.

Таблица всегда быстрее. Ничего делать не нужно, только вычитывать. 10-20 тактов за итерацию. Мне давно на одном форуме советовали почитать одну книгу. Не помню точно как называется, что там "структура, данные = программа". Вкратце, зависимость: чем структурированнее и табличнее, тем проще программа. И наеборот.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ для светодиода, нелинейность
СообщениеДобавлено: 07 дек 2017, 15:18 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 613
Откуда: Челябинск
demiurg1978 писал(а):
VladyMile писал(а):
С "примерной логарифмичностью" согласились быстро.
Мне кажется, здесь более обсуждалась "выгода" - таблица или расчёты.
Вроде как "победила" таблица.

Таблица всегда быстрее. Ничего делать не нужно, только вычитывать. 10-20 тактов за итерацию. Мне давно на одном форуме советовали почитать одну книгу. Не помню точно как называется, что там "структура, данные = программа". Вкратце, зависимость: чем структурированнее и табличнее, тем проще программа. И наеборот.

Не эта?
http://snilit.tspu.ru/uploads/files/default/virt.pdf


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

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


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

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


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

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

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