Страница 1 из 1

Помогите с массивом для нелинейного ШИМ

Добавлено: Сб фев 05, 2011 22:09:13
Eternal-Smoke
Привет котам!
Собрал устройство, часть которого состоит из светодиодов, которые плавно должны загораться и гаснуть.
Сейчас в программе ШИМ (1/255) зажигает светодиод линейно (inc TEMP) до максимума, но как и полагал светодиод загораеться ярко уже на 30-40% увеличения яркости, дальше изменения практически не видны на глаз.
Появилась мысль записать нужные параметры ШИМ в массив, но что-то никак не пойму как это совместить, да и может у кого есть набор значений от 1 до 255 для плавного увеличения яркости?
Пишу а ассемблере и пока кусочек выгладит так

Код: Выделить всё

BLUE_ON:

	cpi PWM_B, 254				;Проверка значения ШИМ
	breq WHITE					;ШИМ максимален

	inc PWM_B					;Иначе прибавляем 1
	out	OCR0A, PWM_B

	rjmp WHITE

Re: Помогите с массивом для нелинейного ШИМ

Добавлено: Сб фев 05, 2011 23:07:01
ChipKiller
Eternal-Smoke писал(а):Появилась мысль записать нужные параметры ШИМ в массив, но что-то никак не пойму как это совместить
... можно так

Код: Выделить всё

table: .db 0,3,8 .... ; и другие значения

BLUE_ON:

   cpi PWM_B, 16            ;Проверка значения ШИМ
   breq WHITE               ;ШИМ максимален

   inc PWM_B               ;Иначе прибавляем 1
   ldi ZL,table<<1
   add ZL,PWM_B
   lpm

   out   OCR0A, r0

   rjmp WHITE

Re: Помогите с массивом для нелинейного ШИМ

Добавлено: Вс фев 06, 2011 00:08:23
md5sum
Сделай логарифмическую шкалу...
Вот лови

Код: Выделить всё

{255,253,252,250,246,239,227,207,171,108,0}
Значения ШИМ от 0 до 100% с шагом 10%. Где 255 - светодиод выключен, а 0 - включен полностью.

Если надо проинвертировать, то из 255 вычти указанные значения

Re: Помогите с массивом для нелинейного ШИМ

Добавлено: Вс фев 06, 2011 02:44:55
Eternal-Smoke
Спасибо, всё более менее получилось, осталось подобрать после тестов оптимальный массив.

Re: Помогите с массивом для нелинейного ШИМ

Добавлено: Пн фев 07, 2011 12:34:45
aleksey_gregul
Тоже часто "мучался" с подбором табличек для всякого рода преобразований.
Хорошо, когда точек не очень много, но когда их количество большое, то даже вбивание с клавиатуры слишком напрягает.
Надоело и написал махонькую программульку.
Слева обозначаем характерные точки. Жмем кнопку исходник - видим ломанный график исходной функции.
Жмем кнопку рассчитать и видим график той же функции, но аппроксимированной сплайнами.
Сразу же на диске в файлике table.txt получаем табличку из всех точек.
Попробуйте, может пригодится?
SPLINE.rar
(199.17 КБ) 139 скачиваний

Re: Помогите с массивом для нелинейного ШИМ

Добавлено: Пн фев 07, 2011 12:42:52
ChipKiller
aleksey_gregul писал(а):Тоже часто "мучался" с подбором табличек для всякого рода преобразований.
... согласен, использую для этих целей Excel - если не хватает встроенных функций, то на VBA легко "доработать".