Цифровой генератор от 1Hz до 40 МНz, это просто.

Автор: с2. Опубликовано в Измерения

AD9850-DDS

DDS синтезатор на AD9850, привлекает радиолюбителей своей простотой и возможностями.

Данный модуль особенно распространено  используется в конструкциях простых трансиверов, и измерителей АЧХ.
Для КВ диапазонов подходит полностью. Конструкций на этом устройстве в интернете огромное количество.
В статье  вариант схемы управления энкодером,  с 6-ю кнопками быстрой установки частоты.
 

Обычно цифровые генераторы частоты, в которых требуемое значение частоты устанавливают с помощью клавиатуры, как правило,  выполнены на микроконтроллере, диапазон генерируемых частот ограничен несколькими мегагерцами, а получение точного значения частоты в широких пределах затруднительно. Описываемый в статье генератор тоже содержит микроконтроллер, но использован он только для управления специализированной микросхемой — синтезатором частоты AD9850 . Применение этой микросхемы позволило расширить диапазон генерируемых частот от 0Hz  до 40 МНz, в пределах которого можно получить любое значение частоты с точностью 1Hz.

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

DDS синтезатор AD9850

Рис.1

Структурная схема синтезатора AD9850 изображена на рис. 1. Его основа — аккумулятор фазы, формирующий код мгновенной фазы выходного сигнала. Этот код преобразуется в цифровое значение синусоидального сигнала, который с помощью ЦАП превращается в аналоговый и подвергается фильтрации. Компаратор позволяет получить выходной сигнал прямоугольной формы. Его частота fout (в герцах) определяется формулой

         где

Fout— выходная  частота, Hz;

Fin— тактовая частота, Hz;

 ∆ – 32-битное значение кода частоты.

Мак­симальное значение Fout  не может превосходить половины тактовой частоты.

 

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

2 выходных сигнала

Частота тактового генератора, МНz:                                               1…125

Максимальный потребляемый ток (при fin=125 МГц), мА                      95

Число разрядов ЦАП                                                                              10

Максимальный выходной ток ЦАП (при Rset=3,9 кОм), мА                    10,24

Максимальная интегральная нелинейность ЦАП, МЗР                           1

Компаратор имеет подстройку, переменным резистором R13.

Напряжение на выходе компаратора, В:

минимальное высокого уровня                                                               4,8

максимальное низкого уровня                                                                 0,4

 

Для загрузки данных в микросхеме AD9850 предусмотрены параллельный и последовательный интерфейсы.

 В последнем случае данные (слово длиной 40 бит) вводят через ее вход DАТА.

 Каждый бит данных сопровождают импульсом положительной полярности на входе синхронизации W_CLK.

После загрузки управляющего слова по импульсу положительной полярности на входе FU_UD происходит замена параметров генерации новыми..

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

 Управляет синтезатором DD2 микроконтроллер DD1.

 

рис. 2.

Управление происходит с помощью энкодера Sk1 с кнопкой Кн0, и дополнительных кнопок Кн1Кн6.

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

Кн0* задает шаг установки частоты с помощью энкодера Sk1 (1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz, выбор значений по «кольцу» , данный режим работы кнопки Кн0* актуален только в версии программы 1.0).

Значение выходной частоты выставляется с точностью порядка 1Hz, что достаточно для большинства случаев.

Кнопки Кн1Кн6, это кнопки быстрого доступа, с их помощью можно устанавливать определенную частоту  генератора одним нажатием кнопки.

Каждая кнопка Кн1Кн6, это есть ячейка с памятью.

 В них прописывается значение частоты следующим образом: сначала устанавливаем нужную нам частоту на экране ЖКИ  с помощью энкодера Sk1,

 нажимаем и длительно удерживаем Кн0 , на экране появится надпись «record» , не отпуская Кн0,  нажимаем любую кнопку Кн1 – Кн6 нужной нам ячейки, на экране это будет отражено надписью «is made», запись в ячейку произведена.

Введенные в ячейки значения частоты сохраняются в энергонезависимой памяти микроконтроллера.

А так же еще следует знать, что при старте МК всегда считывается установка частоты с ячейки Кн1.

А значение, записанное в ячейке кнопки   Кн6, управляет выходом РD7(13 ножка МК), которое в свою очередь по цепочке D1 R1 отключает генерацию прямоугольного сигнала генератора  AD9850.

К сожалению, DDS выдаёт побочные сигналы, уровень которых зависит от тактовой и выходной частот (при частоте более 5MHz (или любое значение частоты, внесенное в ячейку Кн6) по цепочке D1 R1 можно с МК подать лог . 1 ,  при этом не будут,  вносится искажения в синусоидальный сигнал генератора, это в случае если это требуется пользователю прибора, в противном случае цепочку из деталей D1 R1 не устанавливать).

FUSE:

Программа написана для работы МК на тактовой частоте 8 МГц. МК тактируется от внутреннего RS осциллятора.

Примеры работы генератора, в фотографиях.

                
              

Небольшое видео, работы программы управления и генератора, в разных режимах управления частотой.

 

Архив файлов под генератор AD9850 , версия 1.0.

Прошивка V1.0,+ Proteus.

Исходный код для начальной работы с AD9850.
 
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
                                             Соединение Меги с AD9850:
                                             MOSI ---> D7
                                             SCK ---> W_CLK
                                             PB2 ---> FQ_UD 
Date    : 26.05.2013
Author  : PerTic@n
Company : If You Like This Software,Buy It
Chip type               : ATmega8
AVR Core Clock frequency: 8,000000 MHz
*****************************************************/
#include <mega8.h>
#include <spi.h>
#define FQ_UD PORTB.2         // подключен вывод FQ_UD AD9850
/*********** Переменные **************/
     union un_dataword                  //5 Байт, объединение  содержит данные для передачи AD9850
     {
     unsigned long dataword_freq;      // 32 бит слово,  для управления частотой 
     unsigned char dataword_byte[5]; // массив для побайтного доступа
     }un;
unsigned long freq =0;        // частота Гц
unsigned char i;                             // счетчик
float k = 34.359738368;    // коэффициент  4294967296/F = 34.359738368 для 125MHz тактовой 
            
void set_frq(void)
{
          un.dataword_byte[4]=0b00000000;  // два младших бита (0 и 1) Обязательно = 0.
                                        // бит 2 устанавливает режим Power-Down 
                                        // пять старших бит управляют фазой.
           un.dataword_freq = freq*k;       //  частота
           FQ_UD =1;
           FQ_UD =0;
                     for (i=0; i<5; i++) 
                     {
                     spi(un.dataword_byte[i]);
                     } 
           FQ_UD =1;
           FQ_UD =0;  
}      
void main(void)
{
PORTB=0x00;
DDRB=0x2D;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: LSB First
SPCR=0x70;
SPSR=0x00;

TWCR=0x00;  
while (1)
      {
               set_frq();
               freq = 500000;       
      }
}

Архив файлов под генератор AD9850 (AD9851) , версия 1.2 (1.3).

Выбор шага настройки производится при нажатой кнопке энкодера Кн0** ,вращением энкодера вправо-влево(**отличие управления КнО от версии 1.0).

Версия прошивки названа как 1.2 - 1.3.( это одна и та-же прошивка, хоть и называется по разному, отличия см. ниже).
Версия 1.2 под генератор с микросхемой AD9850.
Версия 1.3 под генератор с микросхемойAD9851.
Версию под нужный  генератор AD9850 или AD9851, можно выбрать программно,
делается так;
при подаче питания на МК удерживаете Кн0 , при запуске на экране соответственно версии, будет приветственная надпись AD_9850 V1.2 или AD_9851 V1.3 .
При несоответствии повторить перезапуск МК с подачей питания (по умолчанию , при первой прошивке МК , по умолчанию устанавливается версия 1.2 под AD9850)
Прошивка V1.2-1.3.

Модернизированный вариант схемы AD9850 (AD9851) , версия№2 - версия №3.


На основе базовой схемы и программы,  вариант программы с названием Версия 2.2(2.3)
Применено другое схемное решение для подключения ЖКИ.


Вариант программы с названием Версия 3.2(3.3)

По своим свойствам эти программы полностью идентичны логике работы, описанной в статье.
Отличия схем заключаются в таких моментах,
-применен микроконтроллер ATmega168,
-программа работает от внешнего кварца 16МГц,
-в программе не задействованы порты МК, подключаемые к UART.
Это дает возможность применить для этой схемы, вариант готовой платки типа Arduino mini, с возможность загрузки программы через бутлоадер.
В архиве проект протеуса и прошивка 

ФОРУМ

 

Видео от Samodelkinа,  демонстрация работы собранной схемы Цифровой генератор от 1Hz до 40 МНz.

 

 
 
 

                             Электронные компоненты на http://aliexpress.com
Digital LCD Power Timer  ATMEGA8A  TQFP-32 Часы + будильник. DC 100V 10A V / A
Микросхема AD9850
Digital LCD Power Timer.
 ATMEGA8A  TQFP-32 10pcs/lot
20-555 20-555 20-555
LCD 20X4 5V Blue nokia 5110 lcd ST7920  Шаг. двиг. 28BYJ-48 5V 1602 ЖК (синий экран) 
  LCD 20X4 5V Blue nokia 5110 lcd модуль (2) Titanium Step Drill Bits 3-20mm   20-555
Nano Atmega328 8-channel  relay 5V SLA-12VDC Relay 30A T90  SRA-12VDC-CL 20A  5V  Relay Module 
фото  8-channel  relay 5V SLA-12VDC-SL-C   Relay 30A T90    5V trigger Channel Relay Module 
Плата AD9850 Transmitter-Receive DSO138 2.4  SIM800L GPRS GSM   Генератор до 10МГц
20-555 433Mhz RF transmitter receiver link kit for Arduino DSO138 2.4 SIM800L GPRS GSM Module MicroSIM -TTL Serial Port 20-555 
Клемник 2Pin 5.0 мм  99pcs-Titanium-Steel-Drill. Red Light 250V 40 Pin Single Генератор NE555
20-555 20-555 Red Light 250V AC 15 AMP 125/20A Duplex Switch 40 Pin Single Row Straight Female 2.54mm 20-555
Titanium Bits 3-20mm Multi-function electric PCB mini drill Bit carbide  PCB DIY   PCB  thermal  paper 
Titanium Step Drill Bits 3-20mm Multi-function electric machine soldering 10pcs 0.3mm to 1.2mm PCB mini drill Bit tungsten steel carbide    Ccl-PCB-DIY  PCB  thermal  paper
LM2596s DC-DC 5A quartz resonator mini DC-DC 3A    Rotary Encoder  RM-065 5kOm
20-555    Rotary Encoder  Переменный резистор RM-065 502  
Transistor Tester ESR  test hook clip   Probe Oscilloscope X1 X10  12V 5A 60W 110V-220V 12V 5A 60W 
Transistor Tester LCR - ESR meter - Frequency Signal Generator 10PCS test hook clip Probe Oscilloscope X1 X10  12V 5A 60W 110V-220V Lighting Transformer High quality LED driver 12V 5A 60W LED Driver 
MQ-135 Air Sensor  HC-SR505 sensor switch

Microphone Sensor

Photosensitive Sensor 

IR Sensor

MQ-135 Air Quality Sensor HC-SR505 Mini sensing module - sensor switch
MAX7219 Module LED DC 12 В  100PCS-5mm-LED  LED-Display 4*4 Matrix Array  
фото дневные ходовые огни DC 12 В 100PCS-5mm-LED-Green-Blue-White-Yellow-Red 20-555 4*4 Matrix Array/Matrix Keyboard 16 Key 
Transmitter-Receiver  TF card U disk MP3 Player WIFI модель ESP-12E (Esp8266) Д/У для ворот   Soldering-Kits-T12  
2CH-RF-Remote-Control-Switch-Transmitter-Receiver 20-555 20-555 20-555 20-555 
 

 

 

 

 

 

На главную

Комментарии  

# Тарас 29.01.2015 11:08
Здравствуйте. Расскажите пожалуйста подробнее о кнопке 6 и выход PD7. Я что-то ничего не понял(("
Сообщить модератору
# Oto 29.01.2015 12:54
Когда практически начинаешь пользоваться генератором AD9850, то есть там на высоких частотах влияние в виде искажения прямоугольных импульсов на синусоиду. На видео видно, что при частоте более 16МНz отключается прямоугольный импульс.
Вот эти 16МНz установлены в меню и внесены в память и находятся под кн6 , а физически откл . прямоугольного сигнала, это через PD7.
Сообщить модератору
# Тарас 29.01.2015 17:29
Заказал осталось сделать печатную плату в формате lay. У вас случайно нет печатной платы? хочу повторить ваш проект, а времени совсем нет. Даже для того чтобы развести такую ​​простенькую схему. (((
Сообщить модератору
# Oto 29.01.2015 23:12
Нет , печатной платы нет.
Сообщить модератору
# Тарас 29.01.2015 23:17
Если сделаю, можете проверить и добавить к статье. Также у меня есть ютуб канал, яб хотел рассказать о вашем проекте своим подписчикам, со ссылкой на ваш сайт. Можно сделать такое?
Сообщить модератору
# Oto 29.01.2015 23:22
Можно, но к статье смогу добавить, только когда все у вас будет работать.
Сообщить модератору
# Тарас 12.02.2015 15:52
Сделал генератор. но проблема с энкодером ... некорректно работает, так же как кн0, первые несколько секунд работает, а потом тупо не реагирует ... даже когда вручную запираю кн0 ... реакции нет ... в чем может быть проблема?
Сообщить модератору
# Oto 13.02.2015 10:26
Энкодер... энкодер ... Случаем не от "дохлой мышки" применяете?
Я лично с разными энкодерами не экспериментировал, купил "парочку"
нормальных
и проблем нет :-)
Что может быть у вас, дистанционно очень трудно вникнуть, вот как в тут в форуме...
Создайте тему в форуме, выкладывайте там к рассмотрению какие нибудь материалы для анализа, может кто что и подскажет.
Для начала в статье есть проект протеуса , симулируйте ситуацию в нём, и сравните эл. схему.
Должно быть все ОК, так как , уже были люди собравшие эту схему.
Сообщить модератору
# david 03.06.2015 16:45
добрый день
я собрал схему генератора но почемуто не работает Atmega 8
нет ли ошибок в программе
Сообщить модератору
# david 04.06.2015 09:12
ото
ответьте пожалуйсто зачем посылается 5 байта а не 4
ведь 2 в степени 32 есть 4 байта
Сообщить модератору
# Oto 04.06.2015 10:50
Цитата:
нет ли ошибок в программе
Ошибок в программе, нет.
Цитата:
зачем посылается 5 байта а не 4
Еще один байт используется для передачи служебной информации.
Пример управления использованный в этой программе лежит здесь в форуме sxem.org/.../...
Сообщить модератору
# Мих1213 19.07.2015 13:26
Это самые говенные китайские энкодеры, в китае по 2 юаня. Хорошие оптические нужны.
Сообщить модератору
# Oto 20.07.2015 13:43
Цитирую Мих1213:
Это самые говенные китайские энкодеры,

Будьте добры, покажите как выглядит, это , что нибудь хорошее.
Сообщить модератору
# begun 06.06.2015 10:03
дорогой Ото
какой выходной усилитель можно использовать для данного генератора?
Сообщить модератору
# Oto 06.06.2015 10:55
Попробуйте поиском в интернете, найти пример такой схемы, скорее всего нужно делать на транзисторах, вот один из примеров
Сообщить модератору
# Survivor76 10.07.2015 05:10
Здравствуйте! Есть хекс, а где же файл eep, и фьюзы? Помогите пожалуйста!
Сообщить модератору
# admin 10.07.2015 11:08
Все очень просто .еер уже в хексе , фьюзы я даже без очков вижу, опубликованы в этой в статье.
Сообщить модератору
# Quasar 02.11.2015 17:28
А у вас есть схема собранная в Протеусе?
Сообщить модератору

You have no rights to post comments.
Недостаточно прав для комментирования