Светодиодные фонари и световые приборы. Всё о светотехнике.
Вернуться   Форум FONAREVKA.RU Лаборатория Электроника и схемотехника Электроника
Расширенный поиск
Забыли пароль? Регистрация

  • О нашем проекте
  • Светотехника и световые приборы
  • Правила форума
Проект FONAREVKA.RU специализируется на предоставлении всей необходимой информации по светотехнике:

— светодиодные фонари;
— различные источники питания;
— разнообразные зарядные устройства;
— освещение помещений и наружное освещение;
— световые приборы для личного, пассажирского и грузового транспорта;
— специальные световые приборы для медицины, для растений, для аквариумов, для террариумов, а также аварийно-сигнальные световые приборы;
— альтернативные источники света;
— лазеры и лазерная техника.

Если у вас есть вопросы по выбору фонарей, аккумуляторов и зарядных устройств ознакомьтесь с FAQ от наших экспертов:

F.A.Q. по выбору фонарей различных типов;
F.A.Q. по выбору аккумуляторов;
F.A.Q. по выбору зарядных устройств.
Ответ  Создать новую тему
Просмотров в теме 16475   Ответов в теме 24   Подписчиков на тему 4   Добавили в закладки 0
Опции темы Поиск в этой теме
Старый 12.01.2012, 13:30 Автор темы   1
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию немного о ШИМе вообще и PWM AVR в частности

хорошо, когда ШИМ 16-ти битный и скоростной.
но что делать, если мы имеем всего 8-м бит?
действительно, на низких значениях разница между соседними ступеньками очень велика, к примеру, 1:255 дает ~0.4%, 2:255 уже ~0.8%.
т.е. соседние значения отличаются в два раза...
а что делать, если нам надо, чтоб следующее значение было, скажем 0.5%?
есть несколько решений, каждый со своими достоинствами и недостатками:
метод 1: "двойная модуляция". мы программно делаем так, чтоб на три 1:255 цикла приходился один 2:255
получаем ~0.5%, шаг 0.1%, плюс дрожание выходного сигнала, плюс сложность программной реализации данного решения на фоне выполнения других задач...
метод 2: двигать не только уровень ШИМ, но и значения уровня перезагрузки счетчика.
к примеру, если первое значение- 1:255, а второе- 1:254 дадут шаг ~0.0016% !
таким образом, подбирая пары PWMLEV и PWMTOP(давайте так их обзовем), мы можем существенно улучшить дискретность.
у метода тоже есть недостатки: частота будет немного плавать это раз, и непонятный способ поиска нужных(и адекватных) пар для получения нужного выходного уровня.
простое решение всегда есть!
простейший алгоритм: сначала расчитываем значение PWM, затем под него значение PWMTOP
как это будет выглядеть на си для авр:

#define PWMST 1000 // сколько шагов надо
unsigned int outPWM; // требуемый выходной уровень, от 0 до PWMST
unsigned char PWMLEV,PWMTOP;
PWMLEV=((unsigned long)outPWM*255)/PWMST;
PWMTOP=((unsigned long)PWMLEV*PWMST)/outPWM;// по хорошему нужна проверка, что PWMLEV !=0 !!!
OCR1A=PWMLEV;
OCR1C=PWMTOP;

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

что получаем, для примера:

outPWM OCR1A OCR1C что будет по выходу
35 8 228 35
36 9 250 36
37 9 243 37
38 9 236 38
39 9 230 39
40 10 250 40
41 10 243 41
42 10 238 42
43 10 232 43
44 11 250 44
45 11 244 45
46 11 239 46
47 11 234 47
48 12 250 48

300 76 253 300
301 76 252 301
302 77 254 303
303 77 254 303
304 77 253 304
305 77 252 305
306 78 254 307
307 78 254 307
308 78 253 308
309 78 252 309
310 79 254 311
311 79 254 311
312 79 253 312

видно, что при значениях больше 30.1% реальные выходные значения начинают немного гулять, при сохранении общей монотонности.
но, с другой стороны, при больших значениях дискретность уже не так влияет...
Вложения
Тип файла: rar PWM.rar (4.5 Кб, 273 просмотров)
ka-pex вне форума   Ответить с цитированием Вверх
Поблагодарили: 8 раз(а)
Admin (08.04.2012), AVSel (12.01.2012), John Jack (07.04.2013), kruvas (17.04.2013), MOHAPX (12.01.2012), Rime (20.09.2013), Scratch (12.01.2012), Starstas (12.01.2012)
Старый 12.01.2012, 15:31   2
putmannn
Нубас
 
Аватар для putmannn
 
Регистрация: 29.06.2011
Последняя активность: 19.02.2022 20:35
Адрес: Долгопрудный
Сообщений: 785
Сказал(а) спасибо: 73
Поблагодарили: 219 раз(а) в 102 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

ОС по току на светодиоде я сделал на микроконтроллере. Так вот у меня тоже были дикие "ступеньки" там где он должен был светить ровно.
Применил как раз первый метод, вовсе он много не отнимает времени у проца, нет там и 32-битной математики.
Я там сделал 256 "градаций" между реальными "ступеньками". У меня тупо генерились 256 прерываний во время одногого цикла ШИМ, входя в кажное я смотрю сколько у меня дробная часть (0 - 255), если ещё не дотикали до 100 (к примеру) то в OCR1A, OCR1CВ без изменений иначе (OCR1A, OCR1CВ) + 1, таким образом без затрат проц. времени имею суперплавный ШИМ.
putmannn вне форума   Ответить с цитированием Вверх
Старый 12.01.2012, 15:49   3
AVSel
Консультант

 
Аватар для AVSel
 
Регистрация: 15.11.2010
Последняя активность: 10.04.2024 17:45
Адрес: Москва
Сообщений: 8206
Сказал(а) спасибо: 1077
Поблагодарили: 1713 раз(а) в 912 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от ka-pex :
метод 1: "двойная модуляция". мы программно делаем так, чтоб на три 1:255 цикла приходился один 2:255
получаем ~0.5%, шаг 0.1%, плюс дрожание выходного сигнала, плюс сложность программной реализации данного решения на фоне выполнения других задач...
Двойную модуляцию без особых программных затрат можно сделать используя второй, низкочастотный таймер, который будет по прерыванию переключать соседние значения ВЧ ШИМ. Но от "дрожания" это конечно не поможет.

А вот интересно, в той-же 85й тиньке есть два канала ВЧ ШИМ. По идее с помощью двух выходов, и соответствующих делителей, можно сделать полноценный 16-ти битный ЦАП... Или я туплю
AVSel вне форума   Ответить с цитированием Вверх
Старый 12.01.2012, 16:01   4
AVSel
Консультант

 
Аватар для AVSel
 
Регистрация: 15.11.2010
Последняя активность: 10.04.2024 17:45
Адрес: Москва
Сообщений: 8206
Сказал(а) спасибо: 1077
Поблагодарили: 1713 раз(а) в 912 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от putmannn :
ОС по току на светодиоде я сделал на микроконтроллере. Так вот у меня тоже были дикие "ступеньки" там где он должен был светить ровно.
Применил как раз первый метод, вовсе он много не отнимает времени у проца, нет там и 32-битной математики.
Я там сделал 256 "градаций" между реальными "ступеньками". У меня тупо генерились 256 прерываний во время одногого цикла ШИМ, входя в кажное я смотрю сколько у меня дробная часть (0 - 255), если ещё не дотикали до 100 (к примеру) то в OCR1A, OCR1CВ без изменений иначе (OCR1A, OCR1CВ) + 1, таким образом без затрат проц. времени имею суперплавный ШИМ.
Чудес не бывает.
250кГц/256=976,5625Гц - это пульсации которые пролезут через выходной фильтр на светодиод. И прерывания на частоте 250кГц скушают почти все процессорное время.
AVSel вне форума   Ответить с цитированием Вверх
Старый 12.01.2012, 17:05   5
Scratch
Опаньки
 
Аватар для Scratch
 
Регистрация: 23.10.2011
Последняя активность: 07.12.2022 12:50
Сообщений: 1112
Сказал(а) спасибо: 110
Поблагодарили: 271 раз(а) в 108 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

оформить и на хабр )
Scratch вне форума   Ответить с цитированием Вверх
Старый 12.01.2012, 20:00   6
putmannn
Нубас
 
Аватар для putmannn
 
Регистрация: 29.06.2011
Последняя активность: 19.02.2022 20:35
Адрес: Долгопрудный
Сообщений: 785
Сказал(а) спасибо: 73
Поблагодарили: 219 раз(а) в 102 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

AVSel,чтот заврался я совсем, у меня каждое шимовское прерывание идёт коррекция шима, 256 коррекций в зависимости от того какая цифра "после запятой", либо шим без изменений, либо шим+1. Получается 62500 прерываний в секунду... по 256 тактов эту коррекцию, ну ещё проц другими делами занят, по этому посмотрим сколько у меня .., а у меня выходит 8 тактов на короткий вариант и 11 на самый длинный.

Цитата:

inc shims ;увеличиваем счётчик ступеней сглаживания ШИМ
cp shims, shiml ;сравниваем с десятичной составляющей ШИМ
brcs spl1 ;идём если ещё не превысили составляющую
out OCR1BL, shim ;иначе оставляем ШИМ как есть
rjmp spl2

spl1: inc shim ;разбавляем завышеным значением для сглаживания
out OCR1BL, shim
dec shim

spl2: ldi temp, 250 ;сглаживание в 250 раз
cpse shims, temp ;если не достигли то возврат из процедуры

ret
clr shims ;иначе обнуляем счётчик ступеней сглаживания ШИМ
ret

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

[Исправлено: putmannn, 12.01.2012 в 20:11]
putmannn вне форума   Ответить с цитированием Вверх
Старый 12.01.2012, 23:11   7
Starstas
Увлеченный
 
Аватар для Starstas
 
Регистрация: 24.04.2011
Последняя активность: 11.09.2015 21:59
Сообщений: 113
Сказал(а) спасибо: 4
Поблагодарили: 5 раз(а) в 5 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от putmannn :
а использовать деление на СИ это вот уже стрёмно, думаю там не один десяток команд в одной операци задействован, да ещё и в цикле...
- коли нет напрягов с памятью программ можно и таблицу записать))))
Starstas вне форума   Ответить с цитированием Вверх
Старый 13.01.2012, 07:52 Автор темы   8
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от AVSel :
А вот интересно, в той-же 85й тиньке есть два канала ВЧ ШИМ. По идее с помощью двух выходов, и соответствующих делителей, можно сделать полноценный 16-ти битный ЦАП... Или я туплю
так вроде проблем то быть не должно: старший канал через 1кОм, младший- через 255кОм. суммируем, сглаживаем. вот только боюсь даже прикинуть, какова точность сопротивлений требуется, для сохранения интегральной линейности

[Исправлено: ka-pex, 13.01.2012 в 08:21]
ka-pex вне форума   Ответить с цитированием Вверх
Старый 13.01.2012, 08:17 Автор темы   9
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от putmannn :
Получается 62500 прерываний в секунду... по 256 тактов эту коррекцию, ну ещё проц другими делами занят, по этому посмотрим сколько у меня .., а у меня выходит 8 тактов на короткий вариант и 11 на самый длинный.

Можно может и компактнее написать, но не стал заморачиваться ибо смотрел загруженность контроллера и там ещё свободное время имеется, прерывания не пересекаются во времени, и мерцаний я никаких не заметил.
а использовать деление на СИ это вот уже стрёмно, думаю там не один десяток команд в одной операци задействован, да ещё и в цикле...
у Вас используется обычный шим и проц гоняется на 16МГц, как понял?
при задействовании плл(250кГц шим) и работе проца на 1МГц(энергии жалко ) все очень грустно будет...
а по поводу деления- все не так плохо, да еще и цикл там не такой частый нужен.
по второму методу: там есть еще один интересный нюанс, можно ограничить PWMTOP меньшим числом, скажем в первой формуле заменить 255 на 160. при максимальных значениях шим ступенька увеличится немного, но шим у нас будет уже 400кГц
ka-pex вне форума   Ответить с цитированием Вверх
Старый 13.01.2012, 11:10   10
AVSel
Консультант

 
Аватар для AVSel
 
Регистрация: 15.11.2010
Последняя активность: 10.04.2024 17:45
Адрес: Москва
Сообщений: 8206
Сказал(а) спасибо: 1077
Поблагодарили: 1713 раз(а) в 912 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от ka-pex :
вот только боюсь даже прикинуть, какова точность сопротивлений требуется, для сохранения интегральной линейности
Но мы-же не звук выводим, где искажения будут терзать нежный слух, а свет
А можно наверное и двухканальный импульсник сделать, на младшем канале поставить индуктивность в 256 раз больше. Точность индуктивностей конечно совсем никакая...

[Исправлено: AVSel, 13.01.2012 в 11:29]
AVSel вне форума   Ответить с цитированием Вверх
Поблагодарили: 1 раз
DooMmen (16.03.2014)
Старый 13.01.2012, 17:32   11
putmannn
Нубас
 
Аватар для putmannn
 
Регистрация: 29.06.2011
Последняя активность: 19.02.2022 20:35
Адрес: Долгопрудный
Сообщений: 785
Сказал(а) спасибо: 73
Поблагодарили: 219 раз(а) в 102 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

ka-pex,Думаю для восприятия яркости светодиода глазом не критичным будет как 1-й, так и 2-й метод. И не могу не согласиться .. если у Вас тактовая 1 мегагерц + 250 КГц ШИМ, то это да, жалко времени проца.. =)
putmannn вне форума   Ответить с цитированием Вверх
Старый 13.01.2012, 18:00   12
AVSel
Консультант

 
Аватар для AVSel
 
Регистрация: 15.11.2010
Последняя активность: 10.04.2024 17:45
Адрес: Москва
Сообщений: 8206
Сказал(а) спасибо: 1077
Поблагодарили: 1713 раз(а) в 912 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от putmannn :
.. если у Вас тактовая 1 мегагерц + 250 КГц ШИМ, то это да, жалко времени проца.. =)
Жалко - это не то слово, за 4 такта проц успеет только войти в прерывание
AVSel вне форума   Ответить с цитированием Вверх
Старый 14.01.2012, 01:19 Автор темы   13
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: нем ного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от AVSel :
Но мы-же не звук выводим, где искажения будут терзать нежный слух, а свет
А можно наверное и двухканальный импульсник сделать, на младшем канале поставить индуктивность в 256 раз больше. Точность индуктивностей конечно совсем никакая...
хм, вроде как этот чип запустить на два канала по 250кГц проблем не видится, два диф входа есть, два скоростных выхода тоже. интересно
ka-pex вне форума   Ответить с цитированием Вверх
Старый 07.04.2013, 18:14   14
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

Дабы не обозвали меня некропостером - заранее оправдываюсь: Я тут недавно, случайно набрёл на тему, и мне действительно есть что тут написать...

С данной проблемой тоже столкнулся давным давно, но капитально взяться за решение пришлось, как ни странно, не в преобразователе, а в RGB индикаторе, где необходимо иметь одновременно и хорошее разрешение, и хорошую частоту. Чтоб картинка не разваливалась в движении, и не дребезжала на минимальных значениях яркости компонент. При этом модуляция там программная, т.к. у 8-ми лапой тиньки не напасёшься ни выводов, ни каналов ШИМ. А программа сами понимаете - быстро дёргать лапками не умеет и есть просит. Решение оказалось простым - Сигма Дельта Модуляция, она же Плотностно-Импульсная. У неё есть чудесное свойство вытеснять шум квантования в ВЧ область, что очень хорошо согласуется с нашими задачами. К примеру у нас есть 8 бит ШИМ с частотой 250кГц. Достаточно потратить всего несколько тактов на период и выделить один регистр под переменную, чтоб программа реализовала ПИМ последнего бита аппаратного ШИМ:
Код:
	clr	R20
	add	R15, R18
	rol	R20
	add	R20, R19
	out	OCR0A, R20
Т.е. мы берём 16-ти разрядную переменную (R19:R18 - то самое значение, которое нам надо вывести), старшую часть отправляем в компаратор, а младшую просто добавляем к переменной-интегратору (R15), после чего перенос добавляем к значению в компараторе. Если R15 переполняется - в компараторе значение оказывается на LSB больше. Что это нам даёт? Тут ситуацию надо оценивать в спектральном представлении. Так на 250кГц мы получим всё те же 8 бит, на 125кГц уже 9, на 62,5кГц - 10, и т.д. Прирост закончится на частоте 976Гц и составит все 16 бит. По мере снижения частоты - амплитуда пульсаций так же будет снижаться. Фильтр, который непременно стоит на выходе ШИМ (не важно, наш это глаз, или RC-цепь) будет так же эффективно давить 100% амплитуду на 250кГц, как 0,4% на 976Гц. Мы ничего кроме аккуратного незначительного шума на выходе не увидим. Да что там увидим, я наушники подключал и 16 бит звук выводил - у меня mp3 плеер где-то так же шумит при воспроизведении!..

Что касается RGB индикации - такой алгоритм хорошо работает уже на 10кГц, это без использования аппаратного ШИМ и съедая около 9-ти тактов на все 3 канала. Поэтому наверное и юзают СДМ в звуковых применениях, т.к. он даёт прекрасные результаты. Только там система сложнее. СДМ принято рассматривать как БИХ фильтр, у которого как и у всех фильтров есть свой порядок и апроксимация. Так вот я привёл пример фильтра первого порядка с критическим затуханием (если проще - эквивалент RC-фильтра), а люди строят более крутые фильтры, как правило второго порядка и с апроксимацией Баттерврта или Чебышева...

Надеюсь чем-нибудь пригодился . Найду тему юза АЦП - там тоже непременно отпишусь, ибо он умеет таки давать 16 бит (кто сказал 10 плюс 2LSB зашумлены?!) во время работы программы и дёрганья лапками...

[Исправлено: INFERION, 07.04.2013 в 18:18]
INFERION вне форума   Ответить с цитированием Вверх
Поблагодарили: 4 раз(а)
Admin (07.04.2013), AVSel (10.04.2013), kruvas (17.04.2013), Rime (20.09.2013)
Старый 17.04.2013, 01:02 Автор темы   15
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Сигма Дельта Модуляция
а метод 1, описанный в топике не он и есть, просто другими словами?
к сожалению к аппаратному 250кГц(64мгц тактовая) его не прикрутить
ну а про оверсемлинг АЦП вопрос интересный, но спорный
хм, в указанном коде при значении больше 0хFF00 будут иметь место пропуски целых периодов...

[Исправлено: ka-pex, 17.04.2013 в 01:06]
ka-pex вне форума   Ответить с цитированием Вверх
Старый 19.09.2013, 22:39   16
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от ka-pex :
а метод 1, описанный в топике не он и есть, просто другими словами?
Метод 1, описанный в топике, похож. Вообще всё оно похоже, разница только в реализации и характеристиках. А идея в основе похожая.
Метод 2 описанный в топике - смесь ШИМ с ЧИМ. Если его результат разложить в спектр и изучить - что получится? Будет аккуратный голубой шум, или что-то похожее на скрип не смазанной калитки? А как синхронизировать ШИМ со всей остальной требухой, если у него частота гуляет? С таким механизмом вполне может получится, что и оверсемплинг АЦП не заработает.
Цитата:
Посмотреть сообщение Сообщение от ka-pex :
к сожалению к аппаратному 250кГц(64мгц тактовая) его не прикрутить
Это про указанный мною код? В прерывании он сжирает 11 тактов (40% ресурсов), но это стерпеть можно - оно того ещё как стоит...
Цитата:
Посмотреть сообщение Сообщение от ka-pex :
ну а про оверсемлинг АЦП вопрос интересный, но спорный
Работает он прекрасно, важно только найти хороший источник шума и достаточное количество семплов, и получить можно сколько угодно бит...
Цитата:
Посмотреть сообщение Сообщение от ka-pex :
хм, в указанном коде при значении больше 0хFF00 будут иметь место пропуски целых периодов...
Этот момент контролируется на стороне регулятора, т.к. в прерывании каждый такт приходится считать. Какой смысл проверять условие каждые 32 такта, если оно меняется раз в 256 тактов? В повышалках и такое заполнение вообще недопустимо, т.к. равносильно КЗ. Поэтому там ещё задолго до этого момента срабатывает защита от перенапряжения и перегрузки.

Кстати, код тут на 1 инструкцию больше, чем требуется. Я у себя откопал и такую реализацию:
Код:
	in	R9,	SREG		;Over1
	clr	R10			;Сигма-дельта модулятор PWM
	add	R15,	R7
	adc	R10,	R8
	out	OCR1A,	R10
	out	SREG,	R9
	reti

[Исправлено: INFERION, 19.09.2013 в 22:52]
INFERION вне форума   Ответить с цитированием Вверх
Старый 20.09.2013, 01:23 Автор темы   17
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Этот момент контролируется на стороне регулятора
для начала надо было сразу указать на данный момент начинающим, чтоб не отбить у них охоту
далее- я дал только намек на несовершенство кода, странно, что после этого не был произведен его анализ... намекну по другому: какова будет разница по выходу при входных значениях 0b10000000 и 0b11000000(в битовом представлении, имеется ввиду младший байт PWM).
ka-pex вне форума   Ответить с цитированием Вверх
Старый 20.09.2013, 01:47 Автор темы   18
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

а про оверсейплинг вообще тема отдельная. метод дает некое повышение разрядности, но, применительно к данному чипу и схеме это профанация, ибо там гуляет все в зависимости от времени года и его настроения
ka-pex вне форума   Ответить с цитированием Вверх
Старый 20.09.2013, 02:03   19
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от ka-pex :
какова будет разница по выходу при входных значениях 0b10000000 и 0b11000000 (в битовом представлении, имеется ввиду младший байт PWM)
Такова и будет, в 64LSB (192-128=64, при общем числе попугаев в 255*256=65280). Я всё равно намёка не понял, в чём конкретно проблема данного кода?
Цитата:
Посмотреть сообщение Сообщение от ka-pex :
для начала надо было сразу указать на данный момент начинающим, чтоб не отбить у них охоту
Этот код не для начинающих. Начинающим он просто не поможет, ибо нужно понимать что такое спектр и белый (синий, розовый, не суть важно, главное что имеет не рваный спектр) шум, а так же как лучше вытеснять шум квантования в ВЧ область. Начинающий скорее сам заметит этот "ляп", чем поймёт как же именно эта штука расширяет разрядность. Если он конечно до этого не был радиолюбтелем, паяющим аналоговые "схемки" лет так надцать...
Цитата:
Посмотреть сообщение Сообщение от ka-pex :
а про оверсейплинг вообще тема отдельная. метод дает некое повышение разрядности, но, применительно к данному чипу и схеме это профанация, ибо там гуляет все в зависимости от времени года и его настроения
Речь идёт не об абсолютной точности, а об относительной. Говоря иначе - о шуме квантования, который по своему уровню соответствует шуму АЦП с такой-то разрядностью. То что ток плавать будет - не так страшно как его шум, скрип, дёрганья и прочая гадость из-за низкой разрядности, вносящей гистерезис. Т.е. если подмешать аккуратный белый шум амплитудой не меньше 1,5LSB, а затем усреднить результат - можно без проблем выловить промежуточные значения, т.к. младший бит будет чаще прыгать в ту сторону, которая ближе к реальному значению. И прыгать тем чаще, чем ближе эта сторона к значению. То же самое и при расширении разрядности ШИМ происходит, только тут "шум" уже детерминирован и представляет собою строго определённый набор нулей и единиц, которые в среднем дают искомое значение. При этом в нормальной реализации они будут максимально равномерно перемешаны друг с другом, чтоб вытеснять свой шум в ВЧ. Именно этим и занимается Плотностно-Импульсная Модуляцию (англ. PDM), которую ещё любят называть Сигма-Дельта Модуляцией.

Цитата:
Аналоговый звуковой сигнал конвертируется в цифровой с помощью дельта-сигма модуляции при частоте дискретизации 2 822,4 кГц (в 64 раза больше, чем у CD Audio), но с разрешением всего 1 бит, в отличие от используемых в формате CD 16 бит при частоте 44,1 кГц. Такое преобразование, при котором отсчеты аналогового сигнала берутся с частотой, многократно превышающей верхнюю граничную частоту сигнала называется семплирование с передискретизацией (англ. oversampling).
Люди пишут музыку одним битом на частоте 2,8МГц, а у нас проблемы с битом на 64МГц (8бит на 250кГц не уступают по плотности информации)? Куда нам начинающим до инженеров SONY и Philips?..

[Исправлено: INFERION, 20.09.2013 в 02:23]
INFERION вне форума   Ответить с цитированием Вверх
Старый 20.09.2013, 02:16 Автор темы   20
ka-pex
Увлеченный
 
Регистрация: 24.12.2011
Последняя активность: 29.10.2020 10:49
Адрес: sPb
Сообщений: 186
Сказал(а) спасибо: 2
Поблагодарили: 26 раз(а) в 10 сообщениях

По умолчанию Re: немного о ШИМе вообще и PWM AVR в частности

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Такова и будет, в 64LSB (192-128=64, при общем числе попугаев в 255*256=65280). Я всё равно намёка не понял, в чём конкретно проблема данного кода?
хм, как вижу из кода, дополнение(переполнение) будет происходить каждый второй проход в обоих случаях, т.е. по выходу будет одно и тоже, нет?
ka-pex вне форума   Ответить с цитированием Вверх
Ответ  Создать новую тему
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск





Copyright ©2007 - 2024, FONAREVKA.RU

Powered by vBulletin®
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot

Правила форума | Отказ от ответственности

Время генерации страницы 0.15527 секунды с 17 запросами