Измерения | DDS-генератор на AVR - нужна помощь |
|
---|---|---|
Мужики, для "просто поговорить" есть специальная тема. А провокаторам - здесь вообще не место. Vlad_Petr: Интересна общая тенденция усовершенствования этой первоначальной разработки. Исходно, был простейший бюджетный генератор. Простой, дешевый и очень доступный. И что здесь не естественно? Vlad_Petr: Именно в этом, его несомненное и большое достоинство! DOS - одно из простейших ПО. Раз это достоинство, почему Вы лично его не используете? Небось, Висту или "Семёрку" юзаете?.. |
|
|
DWD: DOS - одно из простейших ПО. Раз это достоинство, почему Вы лично его не используете? Небось, Висту или "Семёрку" юзаете?.. это когда как.. и DOS сейчас иногда пользую. Сохранил я и первый пень с ISA шиной и всякими стандартными для DOS "устаревшими" портами. Во многих случаях очень помогает в отладке цифровых устройств в реальном времени. Старенький комп с DOS,- как логический анализатор!. Разумеется, все на писишном ассме.. Сейчас, для отладки существуют отдельные анализаторы, буферизирующие данные в реальном времени и сбрасывающие информацию на комп через USB. Но они, по разумным ценам, появились (пока с простыми алгоритмами) не так давно, поэтому 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—2024 |