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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Eternal-Smoke
Открыл глаза
Сообщения: 79
Зарегистрирован: Вс янв 25, 2009 23:20:28
Откуда: Люберцы

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

Сообщение 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
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение 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
Реклама
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

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

Сообщение md5sum »

Сделай логарифмическую шкалу...
Вот лови

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

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

Если надо проинвертировать, то из 255 вычти указанные значения
— Не говорите мне что делать и я не скажу куда Вам идти...
Eternal-Smoke
Открыл глаза
Сообщения: 79
Зарегистрирован: Вс янв 25, 2009 23:20:28
Откуда: Люберцы

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

Сообщение Eternal-Smoke »

Спасибо, всё более менее получилось, осталось подобрать после тестов оптимальный массив.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
aleksey_gregul
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср дек 29, 2010 17:30:34

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

Сообщение aleksey_gregul »

Тоже часто "мучался" с подбором табличек для всякого рода преобразований.
Хорошо, когда точек не очень много, но когда их количество большое, то даже вбивание с клавиатуры слишком напрягает.
Надоело и написал махонькую программульку.
Слева обозначаем характерные точки. Жмем кнопку исходник - видим ломанный график исходной функции.
Жмем кнопку рассчитать и видим график той же функции, но аппроксимированной сплайнами.
Сразу же на диске в файлике table.txt получаем табличку из всех точек.
Попробуйте, может пригодится?
SPLINE.rar
(199.17 КБ) 139 скачиваний
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

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

Вернуться в «Микроконтроллеры и ПЛИС»