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

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

1 121 189

GM: А у вас два цапа что ли? Опишите по-подробнее. Так в этом примере и описывать нечего... Задача: увеличить частоту выборок значений синуса с целью отодвинуть частоту квантования дальше от верхней генерируемой выходной частоты (чище колебание, проще фильтр...и.т.д). Частота квантования ограничена быстродействием контроллера ( сложение длинных чисел, выборка, выдача...). Если этим будут одновременно заниматься два(несколько) контроллеров, то время значительно сокращается. Например, для двух контроллеров: первый контроллер выдает 1,3,5,7,9...выборку, а второй 2,4,6,8,10-ю при формировании выходного периодического сигнала ... тогда время на цикл у каждого из них вдвое больше или, что эквивалентно, частота квантования синуса может быть вдвое выше.. ЦАПов (резистивных) разумеется два.

 

Теперь понял. Неплохая идея, ВП! Вижу пару недостатков: два цапа и сложение аналоговых сигналов. Я делал по-другому: выходы двух МК подавал на мультиплексер МХ, а уже выход с МХ подавал на цап. Вместо двух цапов стоял логический МХ.

Добавлено. Еще в вашем случае вижу одно мощное фундаментальное ограничение на применение данного метода. Для пары цапов погрешность выхода удваивается, для 4 - учетверяется и т.д.

 

Хм... Интересно, madgrey, чем же я Вас задел?..

madgrey: Мне кажется, вы сильно зациклились на этих буферах и ЦАПах, а также структурных схемах...

Во первых, стуктурных схем не было вообще. Структура генератора слишком проста для их рисования (рисования "кубиков").
По этому сразу приводились варианты аналоговой части и описание.
Думаю, их уже достаточно много, что бы можно было выбрать подходящий.
Все лежат здесь .

madgrey: ...на повестке дня ФНЧ и выходной усилитель с аттенюатором.

Сегодня выложил тот вариант, о котором говорил вчера - http://www.dwd.land.ru/Temp/DDS_gen/DAC.djvu

Выходы МК подключаются к шинному формирователю 74HCT573 или подобному.
Так как у серии HC или HCT выход довольно мощный (для данной мс +-35мА), то к такому буферу можно подключить ЦАП с резисторами 100Ом и 50Ом, получив низкоомный выход на 50Ом.

Усилитель уже не нужен. Пилу снимаем непосредственно с выхода ЦАП, а синус - с фильтра с волновым сопротивлением 50Ом, который так же подключается прямо к ЦАП.
Дальше аттенюатор и выходное гнездо.

Для получения переменного напряжения из однополярного "корпусной" вывод выходного гнезда подключаем к стабилизатору напряжения на LM317T (или подобный). Если на выходе стабилизатора напряжение будет меняться от нуля до +5В, то выходной сигнал генератора будет смещаться из плюса в минус.

Ну и так как GM обещал сделать инвертирование выходного сигнала инвертированием таблицы в ОЗУ, то показанный на схеме переключатель "Фаза" не нужен.

Правда, это подходит больше для базового, простого, варианта генератора.

Так как у Вас ЦАП высокоомный, то нужна структура ЦАП-Усилитель-фильтр.
Логическая часть у Вас довольно серьёзная, по этому и усилитель лучше взять вот этот .
Усилитель здесь самый лучший из всех вариантов. Вряд ли Вы даже из дорогих ОУ найдёте с такими же параметрами...

 

GM: Еще в вашем случае вижу одно мощное фундаментальное ограничение на применение данного метода. Для пары цапов погрешность выхода удваивается, для 4 - учетверяется и т.д. Неужели...? И почему вы так подумали? Поясните.
И еще по такому (два ЦАПа) варианту: у одного ЦАПа нижний резистор заземлен, а у другого на питании... вроде потом проще суммировать?

 

Ну так, погрешности суммируются.

 

2DWD Не так меня поняли. Поясню. Если таблица в озу атмеги88, инвертирование можно сделать программно без проблем. В тиньке таблица находится в постоянной памяти, инвертировать непросто.

 

GM: Ну так, погрешности суммируются. Неверно!, для такого случая... Они у вас из случайных резисторов набраны, что один,- что другой...ничуть не хуже, замена одной погрешности на другую.. А при суммировании сигналов, например, половинных и вклад погрешности вместе с сигналом пропорционально уменьшается. НЕ ВЫЧИТАТЬ! сигналы ТОЛЬКО СКЛАДЫВАТЬ!

 

Ну что тут спорить? Погрешность, по определению, это модуль максимальной ошибки. По теории для получения суммарной погрешности суммируются отдельные погрешности системы. Вгрубе погрешность идеального цапа равна половине младшего разряда. Погрешность суммы сигналов от двух цапов равна сумме погрешностей, т.е. одному разряду. Для неидеального цапа к этой погрешности добавятся погрешности сумматора, всяческие нелинейности цапов и т.п.

 

GM: Погрешность, по определению, это модуль максимальной ошибки. Совершенно верно.. Отвлечемся.. Возьмем (случайно) десяток резисторов 5% одного номинала. Соеденим их последовательно, суммарная теоретическая ошибка будет соответствовать 5% . А на практике, наверняка, будет меньше...
GM: Для неидеального цапа к этой погрешности добавятся погрешности сумматора, всяческие нелинейности цапов и т.п. Эти погрешности ИМХО окупаются повышением быстродействия, при котором мощная спектральная линия тактовой частоты будет уведена подальше от ската характеристики ФНЧ. И влияние емкостей при ЦАПе уменьшится,ведь мы уже (в среднем за период) эти емкости будем перезаряжать реже. "Навар" можно разделить на части.. часть на сдвиг несущей, и часть на повышение предельной частоты сигнала... Можно использовать как резерв для того, чтобы контроллер удобно успевал за командами управления...были-бы средства, куда с пользой потратить, всегда найдется.,

 

А вот дудки, нету никакой мощной спектральной линии тактовой частоты. На тактовой частоте присутствует чистый ноль.

И пример некорректный. Чтобы получить на выходе заданную амплитуду А=256, вам надо уменьшить амплитуду с цапа до А/2=128, но при этом абсолютная погрешность цапа останется прежней - 1/2. На выходе сумматора вы получите А с погрешностью 1, а не 1/2, в то время как для цапа с полным выходом А=256 погрешность будет 1/2. То есть в итоге вы получите 7-разрядный цап вместо 8-разрядного. Шило на мыло.