Свежие обсуждения
Измерения

DDS-генератор на AVR - нужна помощь

1 73 189

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

Единственное, в чём я был сразу уверен, так это в том, что для сохранения темы нужно сразу вводить большие цифры при нумерации страниц - когда их было меньше десяти я присваивал страницам номера 005, 006 и т.д.
И поступил мудро.

 

GM: Нет, это похоже на профиль пирамиды Тутанхамона в разрезе.
Если частоту установить так, чтобы ступеньки медленно перемещались, то это будет похоже на эскалатор в профиль

 

Не знаю как, научите

 

DWD: запутался и уже не представляю, что и с какими праметрами будет вырабатывать генератор
Ну, это вы в 3-х соснах заблудились . Вернул я всё взад, пила и синус генерятся до 1000 кГц, докуда тянуть вверх синус или пилу остаётся на совести пользователя.

Пила 506 кГц

Ссылка.

 

GM: Не знаю как, научите
Установить частоту такой, чтобы отношение частоты сэмплирования к выходной частоте было близко к целому числу.
Когда делал DDS на AT90S1200 (давно уже) получалось.
А еще, если не затруднит, сделайте треугольную пилу и покажите осциллограммы как для синуса.

 

Нетрудно, кто бы только табличку набил триангла по образу и подобию пилы


sawtab:
.db 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
.db 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F
.db 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17
.db 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F
.db 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27
.db 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F
.db 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37
.db 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F
.db 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47
.db 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F
.db 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57
.db 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F
.db 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67
.db 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F
.db 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77
.db 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F
.db 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87
.db 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F
.db 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97
.db 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F
.db 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7
.db 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF
.db 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7
.db 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF
.db 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7
.db 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF
.db 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7
.db 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF
.db 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7
.db 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF
.db 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7
.db 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF

 

GM, проверьте почту...

 

Tadas: Если частоту установить так, чтобы ступеньки медленно перемещались...
GM: Не знаю как, научите

Не нужно этого делать!
Нам для полного "счастья" только "бегающих" гармоник не доставало...

При фиксированных значениях углов переключения, в выходном сигнале есть определённый набор гармоник. В результате способ борьбы с ними так же может быть фиксированным - выбором фильтра с определёнными параметрами.
Если же углы будут всё время меняться, то и гармоники будут меняться, пропадая в одном месте и появлясь в другом. Фильтровать такое напряжение будет труднее.

Попутно, про фильтрацию синуса.
Тот фильтр 9-го порядка (4 дросселя и 5 конденсаторов) на 1МГц, о котором уже говорилось, в состоянии нормально отфильтровать все высшие гармоники начиная с основной частоты 400КГц. То есть, подав на вход фильра меандр частотой 400КГц (и выше) на выходе получаем синус с КНИ не более 3% (и меньше при повышении частоты).
При частотах меньше 400КГц синус искажается.

Самая низшая из высших гармоник меандра - 3-я (чётные в таком сигнале отсутствуют), а его КНИ 48%.

Если на вход фильтра подать ШИМ с коэффициентом заполнения 0.66, у которого минимальная из высших гармоник 5-я, а КНИ 31%, то на выходе получаем синус с КНИ не более 0,8% уже при частоте ШИМ 250КГц.
Минимальный КНИ ШИМ 29% достигается при коэффициенте заполнеия 0.74, но в нём присутствует 3-я гармоника, по этому общая форма синуса искажается в больше степени.
Других вариантов с меньшим КНИ у простой ШИМ нет. Есть только у многократной равномерной или неравномерной ШИМ (не один, а несколько импульсов в каждом полупериоде). А такой сигнал уже очень похож на синтезируемый синус методом DDS...

Получается следующая картина.
С ростом частоты выходного сигнала DDS ухудшается форма синуса за счёт увеличения числа гармоник и появления гармоник более низкого порядка.
Но с повышением частоты выходного сигнала фильтра на форму всё больше влияет сам фильтр.
Выходит, что нормальный синус низких частот получаем за счёт большего числа ступеней выходного сигнала DDS, а высоких частот - за счёт фильтра.
Есть только какой-то промежуток, когда частота выходного сигнала уже достаточно искажена самим DDS, а фильтр ещё не в состоянии его превратить в синус.
По этому (возможно?) задача заключается в получении фильтра такого порядка, когда он уже сможет фильтровать ещё не сильно искажённый сигнал DDS или получение сигнала DDS с как можно более высокими низшими гармониками (модификацией таблиц синуса в памяти МК).

Ещё нужно проанализировать КНИ синуса, который получился у madgrey. Вполне возможно, что у такого "модифицированного" синуса состав гармоник окажется "по зубам" нашему фильтру. Так как его синус на 200КГц похож на синус, полученный методом многократной ШИМ с числом импульсов (ступенек) 6, а частотой 100КГц - с числом импульсов 10.

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

 

GM: ...пила и синус генерятся до 1000 кГц...

Час от часу не легче...
Уже имеем пилу до 1МГц.
Теперь требования к буферу станут жёстче.

GM: Пила 506 кГц

Мда... Время спада 0,5мкс. На частоте 1МГц получим не пилу а треугольник...

Есть мысль по корректировке пилы.
Знаете, как при трансляции видео на большие расстояния обрабатывают сигнал? Или при видеомонтаже?
Заменяют синхроимпульсы и ставят видеокорректоры,

Нужно будет попробовать пропускать пилу через "чёрный ящик", который будет вычислять момент максимумма пилы и принудительно "обнулять" её. Может получится, что время спада снизим до десятков наносекунд, а повышенную ступенчатость пилы попробовать гладить фильтром, возможно, коммутируемым...

В итоге сам DDS генератор пилы превратится в синхронизатор устройства, формирующего красивую чистую пилу аналоговым спосбом...

 

GM: Нетрудно, кто бы только табличку набил триангла по образу и подобию пилы

Это так выглядит таблица формирования пилы методом DDS?

Тогда пилу в треугольник "перерисовать" элементарно - верхнюю половину таблицы не трогаем, а начиная со второй половины содержимое инвертиртируем, ведя отсчёты в обратном порядке.

Получается, что тут не только пилу с треугольниками и синусами "нарисовать" можно, а и... одним словом - на что фантазии и места в таблице хватит!