Выберите язык

Измерительные генераторы, в которых требуемое значение частоты устанавливают с помощью клавиатуры, читателям журнала известны (см., например, статью Пискаева А. "Частотомер-генератор-часы" в "Радио", 2002, № 7, с. 31, 32). Как правило, эти приборы выполнены на микроконтроллере, диапазон генерируемых частот ограничен несколькими мегагерцами, а получение точного значения частоты невозможно. Описываемый в статье генератор тоже содержит микроконтроллер, но использован он только для управления специализированной микросхемой - синтезатором частоты AD9850. Применение этой микросхемы позволило расширить диапазон генерируемых частот от долей герца до 60 МГц, в пределах которого можно получить любое значение частоты с точностью 1 Гц.

Предлагаемый генератор выполнен на базе микросхемы AD9850 фирмы Analog Devices, представляющей собой полный DDS (Direct Digital Synthesis) синтезатор частоты с встроенным компаратором. Такие синтезаторы уникальны своей точностью, практически не подвержены температурному дрейфу и старению (единственным элементом, который обладает свойственной аналоговым устройствам нестабильностью, является цифроаналоговый преобразователь). Благодаря высоким техническим характеристикам DDS синтезаторы в последнее время вытесняют обычные аналоговые синтезаторы частоты. Их основное преимущество - очень высокое разрешение по частоте и фазе, управление которыми осуществляется в цифровом виде. Цифровой интерфейс позволяет легко реализовать микроконтроллерное управление. С более подробным описанием принципов прямого цифрового синтеза частоты можно познакомиться, например, в [1].

Структурная схема синтезатора AD9850 изображена на рис, 1.

Генератор на PIC16F84A и AD9850

Его основа - аккумулятор фазы, формирующий код мгновенной фазы выходного сигнала. Этот код преобразуется в цифровое значение синусоидального сигнала, который с помощью ЦАП превращается в аналоговый и подвергается фильтрации. Компаратор позволяет получить выходной сигнал прямоугольной формы. Его частота fout (в герцах) определяется формулой fout = Δfin/232, где fin - тактовая частота, Гц; Δ - 32-битное значение кода частоты. Максимальное значение fout не может превосходить половины тактовой частоты.

Основные технические характеристики AD9850 (при напряжении питания 5 В)

  • Частота тактового генератора, МГц......1...125
  • Максимальный потребляемый ток (при fin = 125 МГц), мА......96
  • Число разрядов ЦАП......10
  • Максимальный выходной ток ЦАП (при Rset = 3,9кОм), мА ...10,24
  • Максимальная интегральная нелинейность ЦАП, МЗР......1
  • Напряжение на выходе компаратора, В:
  • минимальное высокого уровня ...4,8
  • максимальное низкого уровня ...0,4

Для загрузки данных в микросхеме AD9850 предусмотрены параллельный и последовательный интерфейсы. В последнем случае данные (слово длиной 40 бит) вводят через ее вход D7. Каждый бит данных сопровождают импульсом положительной полярности на входе синхронизации W_CLK. После загрузки управляющего слова по импульсу положительной полярности на входе FQ_UD происходит замена параметров генерации новыми. Назначение битов управляющего слова приведено в табл. 1.

Генератор на PIC16F84A и AD9850

Принципиальная схема генератора изображена на рис. 2. Управляет синтезатором DD2 микроконтроллер DD1.

Генератор на PIC16F84A и AD9850

Он опрашивает клавиатуру SB1-SB16, выводит информацию на ЖК индикатор HG1, вычисляет значение кода частоты и передает его по последовательному интерфейсу в синтезатор DD2. Звукоизлучатель НА1 служит для подтверждения нажатия кнопок клавиатуры. Микросхема AD9850 (DD2) использована в стандартном включении [2]. На выходе ее ЦАПа включен фильтр Z1. После фильтра сигнал синусоидальной формы подается на гнездо XW2 и на вход компаратора микросхемы DD2 (вывод 16). С выхода последнего сигнал прямоугольной формы поступает на гнездо XW1. В качестве тактового генератора для DDS применен кварцевый генератор G1. Подстроечным резистором R7 регулируют контрастность изображения на индикаторе HG1.

После сброса микроконтроллера производится настройка ЖК индикатора HG1 на режим обмена по шине 4 бита, что необходимо для уменьшения числа линий ввода/вывода, требуемых для записи информации.

Управляют генератором с помощью клавиатуры, состоящей из кнопок SB1-SB16. Поскольку все линии порта В, являющиеся входными, подключены к источнику питания через резисторы, необходимости во внешних резисторах, "подтягивающих" порты RB4-RB7 к линии питания, нет. Резисторы R3-R6 защищают выходы микроконтроллера от перегрузки при случайном нажатии нескольких кнопок одновременно.

Требуемую частоту устанавливают с клавиатуры. Для этого, нажимая на кнопки с соответствующими цифрами, вводят нужное значение (в герцах) и нажимают кнопку "*". Если частота не превышает максимально допустимой, на индикаторе на короткое время появляется сообщение "ОК" и генератор переходит в рабочий режим, а если превышает, - сообщение "Error". В этом случае нужно нажать кнопку "С" ("Сброс") и заново набрать правильное значение. Точно так же поступают и при ошибке в процессе ввода частоты. Двукратное нажатие этой кнопки переводит прибор в рабочий режим с установленным ранее значением частоты.

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

Кнопки "U" (Up - вверх) и "D" (Down - вниз) позволяют ступенчато изменять выходную частоту генератора, соответственно увеличивая или уменьшая значение десятичного разряда на единицу. Требуемый десятичный разряд выбирают, перемещая курсор кнопками "L" (Left - влево) и "R" (Right - вправо).

При нажатии кнопки "*" значение частоты и позиция курсора сохраняются в энергонезависимой памяти микроконтроллера, благодаря чему при следующем включении питания прерванный режим работы автоматически восстанавливается.

Поскольку вычислительные способности микроконтроллера ограничены, значение выходной частоты выставляется с точностью около 1 Гц, что достаточно для большинства случаев. Чтобы в полной мере реализовать возможности синтезатора, им можно управлять с помощью ПК. Для этого генератор необходимо доработать, дополнив его узлом, схема которого показана на рис. 3. ПК (или иное управляющее устройство) подключают к розетке XS1. При низком логическом уровне на адресных входах А мультиплексоры микросхемы DD3 подключают входы управления синтезатором к микроконтроллеру DD1, а при высоком - к внешнему устройству. Сигналы управления поступают через контакт "ENABLE" розетки XS1. Резистор R19 обеспечивает низкий логический уровень на адресных входах DD3 при неподключенном устройстве управления.

Генератор на PIC16F84A и AD9850

Генератор собран и испытан на макетной плате. Если не удастся приобрести плату под корпус SSOP для микросхемы DD2, можно использовать для подключения ее выводов к соответствующим контактным площадкам короткие (длиной 10...15 мм) отрезки луженого провода диаметром 0,2 мм. Выводы 1,2,5,10,19, 24, 26,27, 28 соединяют с общим проводом одним отрезком большей длины.

ЖК индикатор HG1 - ITM1601 (16-символьный однострочный с встроенным контроллером). НА1 -любой пьезоэлектрический излучатель звука с встроенным генератором, рассчитанный на напряжение 5 В. В качестве тактового генератора (G1) можно использовать микросборку кварцевого генератора на частоту до 125 МГц, допустимо применение подобного узла с кварцевой стабилизацией и на дискретных элементах.

Управляющая программа микроконтроллера зависит от частоты тактового генератора.

"Прошивки" для наиболее распространенных значений

Коды программы для генератора с частотой 32 МГц приведены в табл. 2.

Генератор на PIC16F84A и AD9850

(нажмите для увеличения)

При программировании микроконтроллера в конфигурационном слове устанавливают следующие значения битов: тип генератора (OSC) - RC, сторожевой таймер (WDT) - выключен, задержка после включения питания (PWRTE) - разрешена.

Литература

  • Ридико Л. DDS: прямой цифровой синтез частоты. - Компоненты и технологии, 2001, № 7, с. 50-54.
  • AD9850, Complete DDS Synthesizer. - <http://www.analog.com>.
  • Автор: С.Кулешов, г.Курган