Измерения | DDS-генератор на AVR - нужна помощь |
|
---|---|---|
Мужики, для "просто поговорить" есть специальная тема. А провокаторам - здесь вообще не место. Vlad_Petr: Интересна общая тенденция усовершенствования этой первоначальной разработки. Исходно, был простейший бюджетный генератор. Простой, дешевый и очень доступный. И что здесь не естественно? Vlad_Petr: Именно в этом, его несомненное и большое достоинство! DOS - одно из простейших ПО. Раз это достоинство, почему Вы лично его не используете? Небось, Висту или "Семёрку" юзаете?.. |
|
|
DWD: DOS - одно из простейших ПО. Раз это достоинство, почему Вы лично его не используете? Небось, Висту или "Семёрку" юзаете?.. это когда как.. |
|
|
GM: Но, как уже говорил, оказывается одного порта маловато будет. Исходя из сказанного - используем последовательный регистр. Вталкиваем туда данные по клокам и защёлкиваем на выход - 3 ноги. GM, подправил вариант с регистрами на HC595. Лежит здесь. Для управления уровнем и смещением выходого сигнала используется 3 байта, выводимые с МК на вход "Data", последовательно продвигаемые по регистру импульсами на входе "Shift" и после заполнения защёлкиваемые импульсом по входу "Store". Первыми загняются в регистр два байта амплитуды, соответственно отрицательной и положительной полуволн выходного напряжения (или смещения при отличии кода в этих двух байтах), затем ещё два бита - переключение аттенюатора (0дБ или -48дБ) и выбор КУ выходного усилителя мощности для получения выходного напряжения уровнями 0дБ или +20дБ. Осталось в резерве ещё 6 бит третьего байта... Управление выходным напряжением производится по следующему алгоритму (грубо). Однократное нажатие на функциональную кнопку "А"-Усилитель производит только переключение (триггерное) коэффициента усиления усилителя мощности (КУ УМ). Для этого в передаваемом коде нужно выставить бит "КУ УМ" либо в "0" - для получения калиброванного выхода 0дБ (0.775В) или в "1" - для получения на выходе напряжения +20дБ (7.75В). Потом конкретнее определимся по уровню +20дБ... При нажатии кнопки "U"-Амплитуда или Напряжение (может назвать лучше "АT"-Аттенюатор?), дальнеший набор цифр на клавиатуре будет означать задание величины выходного напряжения. Удобно при необходимости ввода конкретного значения, например, "250мВ" или "-40дБ". Можно эту кнопку сделать с двойным назначением: при однократном её нажатии и наборе цифр - выставляется конкретное значение выходного напряжения, а если цифры не трогать, а снова нажать её же, то происходит переключение аттенюатора - каждое повторное нажатие этой кнопки по кругу выставляет аттенюатор в "0дБ", "-20дБ", "-40дБ" и т.д. по отношению к уже заданному значению выходного напряжения. Величину шага можно обсудить... Ух ты!.. Для себя лично я именно так бы и делал! Понравилось... Нажатие кнопки "S"-Смещение и наборе цифр на клавиатуре означает установку постоянного смещения в выходном напряжении. Для этого первые два байта кода загружаются в регистр не одинаковыми. Ну и остался валкодер - для плавной регулировки выходного уровня. Каждый импульс с него увеличивает или уменьшает (в зависимости от направления вращения) амплитуду выходного напряжения с самым мелким шагом (пока - 20мВ). При этом МК считает импульсы - при переполнении первых двух байт кода (или значения 255) он сам выдаёт команду на переключение бита аттенюатора в "1" (для переключения выходного аттенюатора в -48дБ) и продолжает заполнять указанные байты уже с нулевого значения. Соответственно - наоборот при уменьшении уровня - выставляет бит аттенюатора в "0" и выдаёт код байтов 255 с дальнейшим декрементом. Таким образом пролучится плавная (с заданным дискретом) регулировка уровня от минимума до максимума в зависимости от состояния бита коээфициента усиления усилителя мощности ("КУ КМ"): если этот бит равен "0", то плавная регулировка осуществляется в диапазоне 0...-96дБ, а если этот бит установлен в "1", то регулировка будет уже в диапазоне +20...-96дБ. Для сохранения прежнего шага регулировки МК должен уже будет сам определять моменты переключения не только аттенюатора, но и "КУ УМ", ориентируясь на флаг текущего состояния бита "КУ УМ": если был задан уровень коэффициента усиления "0дБ", то при плавной регулировке бит "КУ УМ" не трогается, а если был выставлен "КУ УМ" в положение "+20дБ", то при плавной регулировке МК в нужные моменты сам корректирует бит "КУ УМ". Пока вроде бы всё... Да и сама схема для реализации такого варианта регулировки не сложная и не содержит дорогих или недоступных деталей. Основная сложность - в получении относительно стабильного источника опорного напряжения величиной +5В (пока такое значение), а после изготовления - настройка двух ЦАП уровня для получения симметричности вырабатываемых ими напряжений. Кстати, ЦАП-ы уровня М1 и М2 (на схеме) так же резистивные, на матрице R-2R. ОУ DA1 и DA2 приводят напряжения с ЦАП к требуемому значению и полярности. Нужное значение можно выставить резисторами R2,R5 или R3,R6 в зависимости от величины выбранного источника опорного напряжения. На схеме приведены зачения для опорного +5В. Думаю, вполне хватит стабильности обычного линейного стабилизатора типа 78L05 для применения его в качестве опорного. Для ЦАП лучше брать ОУ с малым напряжением смещения (принимаются варианты), но моделирование показывает, что и простой LM358 даёт приемлемую точность. Его изначальное смещение можно скорректировать резисторами R1 и R3. |
|
|
Vlad_Petr: ...это когда как.. и DOS сейчас иногда пользую. Но Вы поняли, что я имел в виду под сравнением DOS с современными ОС. Vlad_Petr: А если конкретно "в тему", то легко на DOS пентюхе создать и через один LPT порт вытолкнуть DDS выходные коды обсуждаемого тут генератора, чтобы практически отлаживать ЦАПы и выходные фильтры.. Я для этой цели хотел просить GM, что бы он написал какой-то отладочный блок либо в рабочей прошивке, либо в виде отдельной прошивки, используемой только для наладки. Как, например, он делал в начальном варианте DDS одну функцию ГКЧ от нуля до максимума для настройки фильтра. Но можно сделать то же и на "пентюхе", только кто этим займётся?.. |
|
|
DWD: Лежит здесь. Мягко говоря, достойный труд (почтенно). Не добавить не убавить... DWD: Нужно обсудить, как определять (или задавать), что ввод идёт в "В", "мВ" или в "дБ"... За себя скажу, мне удобнее в mV. DWD: Можно эту кнопку сделать с двойным назначением: при однократном её нажатии и наборе цифр - выставляется конкретное значение выходного напряжения, а если цифры не трогать, а снова нажать её же, то происходит переключение аттенюатора Это из соображений экономии выводов портов мастера или удобства управления? DWD: Для ЦАП лучше брать ОУ с малым напряжением смещения (принимаются варианты), но моделирование показывает, что и простой LM358 даёт приемлемую точность. Его изначальное смещение можно скорректировать резисторами R1 и R3. Не принципиально в разумных пределах, сделать разводку под 358, а там каждый поставит, что считает нужным. Наверное половина спаренных операционников схожи по распиновке. Есть ведь спарки и прецизионные.AD712 Слово за GM. |
|
|
explorer: Не добавить не убавить... Добавлять ещё много - блокировочные конденсаторы, продумав ёмкости, типы и количество, номиналы просчитать... Пожалуй, для основной работы да, когда максимальный уровень не превышает 1В. explorer: Это из соображений экономии выводов портов мастера или удобства управления? Экономия - вряд ли, так как для кнопки нужно использовать либо отдельный порт, либо свободную пару в матрице. explorer: Есть ведь спарки и прецизионные.AD712 Нет, такие ОУ нам не нужны... |
|
|
DWD: Добавлять ещё много Это все конечно так, но я про концепцию. DWD: привыкли уже к стандартной функции любого генератора - аттенюатора с шагом 10-20дБ. Привыкли. Во, мой рабочий ГЗ-118 - эргономика, ау, где ты, все на галетниках. Прост и надежен как силикатный кирпич. DWD: Почему бы не реализовать?.. Правильно, максимум автоматики... DWD: Нет, такие ОУ нам не нужны... Ок. Разведем под OP07. А то вот еще альтернатива К140УД... УД24 наверное бы подошел идиально. |
|
|
explorer: Привыкли. Во, мой рабочий ГЗ-118 - эргономика, ау, где ты, все на галетниках. Прост и надежен как силикатный кирпич. Мелкий галетник для переключения ослабления с шагом в 10дБ. очень удобен. С его контактов диодный шифратор и на три релюшки..Действительно...просто как кирпич |
|
|
Vlad_Petr: стремление реализовать все на нескольких функциональных кнопках с множеством переключений режимов (чтобы размеры морды уменьшить) неудобно при реальной работе с прибором |
|
|
explorer: А то вот еще альтернатива К140УД... УД24 наверное бы подошел идиально. Только его импортный аналог. Опять же, мне кажется, что напряжение смещения ОУ не будет сильно портить картину. Скажем, сейчас у нас пока минимальный шаг равен 20мВ. Напряжение смещения LM358 - 9мВ максимум во всём диапазоне температур и 7мВ при комнатной. Просто включаем этот ОУ без коррекции смещения и получаем ошибку, например, 20+9=29мВ. Выходит, что получив на выходе 29мВ вместо заказанных 20мВ имеем очень большую погрешность. Или другой пример. Получается, что с помошью выходного резиситивного аттенюатора можно получать на выходе достаточно малые напряжения с минимальной ошибкой, так как при этом на ЦАП уровня будет высавлено напряжение, больше на 48дБ, при котором напряжение смещения ОУ просто теряется. В общем, думаю, достаточно взять ОУ OP-07 с максимальным смещением 75мкВ и вообще не заморачиваться его компенсацией. Если не прав, подскажите в чём ошибка. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2025 |