Arduino библиотека за управление на AD9834 / AD9834 Arduino Library
/kn34pc.com/справочник/...

Analog Devices AD9834 - 20 mW Power, 2.3 V to 5.5 V, 75 MHz Complete DDS

Features:

- Narrow-band SFDR > 72 dB
- 2,3 V to 5,5 V power supply
- Output frequency up to 37,5 MHz
- Sine output/triangular output
- On-board comparator
- Power-down option
- 20 mW power consumption at 3 V

***


AD9834 - тестова схема


LZ2WSG AD9834 module

За целите на експериментите си съм монтирал DDS AD9834 на преходна платка. Максималната честота на опорния кварцов генератор е 75 MHz.


Библиотека за управление на AD9834 под Arduino / AD9834 Arduino Library:
ad9834_lib_v0.2.zip

Тестовият Arduino sketch е за една постоянна изходна честота: (напр. 10 000 000 Hz).

При Fmclk с честота 75 MHz от опорния генератор, максималната изходна честота на DDS AD9834 е около Fmclk/2 или Fmax = 75/2 = 37,500 MHz, но имайки предвид параметрите на изходния сигнал, би било добре изходната честота да не превишава Fmclk/3 [3].

AD9833, AD9834 и AD9838 са еднакви по управление. Бих могъл да използвам една библиотека на управление, но в конструкциите си искам да диференцирам управлението на трите DDS чипа. Затова предпочитам библиотеките да са отделни.

***

Library constructor:

AD9834(uint8_t, uint8_t, uint8_t);

Arduino изводи към FSYNC, CLK, DATA на AD9834

***

Публични процедури:

void init(uint32_t xt);
инициализация на библиотеката

xt - честота на опорния кварцов генератор, в Hz (напр. 75000000 Hz)

void set_freq(uint32_t frequency);
установяване на изходната честота

frequency = 0 ... Fxtal/2, в Hz (0 ... 37500000 Hz)

при MCLK = 75 MHz, мин. стъпка е 0,28 Hz
при MCLK = 1 MHz, мин. стъпка е 0,004 Hz

void dac_control(uint8_t state);
състояние на DAC, софтуерно управление на изхода на DDS

state = 0
DAC е включен (по подразбиране)

state = 1
DAC е изключен

void internal_clock_control(uint8_t state);
вътрешни оперативни вериги на опорния сигнал

state = 0
Internal clock е включен (по подразбиране)

state = 1
Internal clock е изключен

void set_wave(uint8_t wave);
избор на форма на изходния сигнал

wave = SINE
синусоидален изходен сигнал (по подразбиране)

wave = TRIANGLE
триъгълен изходен сигнал

***

Пример 1: Прост VFO генератор за един обхват
ad9834_enc.zip

- VFO генератор на 10m: (28,000 ... 29,700) MHz
- с/без корекция на честотата с +/- IF (хетеродинен приемник / приемник с пряко преобразуване)
- механичен енкодер с 20 стъпки/оборот с бутон
- стъпки на изменение на честотата: 1 kHz, 500 Hz, 50 Hz
- "кръгово" превключване на стъпките: 1 kHz -> 500 Hz -> 50 Hz -> 1 kHz ...

***

За тест съм избрал VFO генератор за приемник на 10m с междинна честота IF = 9001500 Hz (кв. филтър XF-9B): Fhet = Fin - IF -> Fhet = (18998500 ... 20698500) Hz.

Обхватът, границите му, междинната честота, математическата функция между Fприемник/Fхетеродин/Fмеждинна честота, стъпките на енкодера и др. в програмния код са примерни. Дори в този си опростен вид конструкцията е подходяща за сигнал-генератор, хетеродин и др. Добре би било в изхода да се добави нископропускащ филтър, буфер/усилвател.


AD9834, пример 1 - прост VFO генератор за един обхват

Забележка: Програмният код (или части от него) е за некомерсиално използване!

Препратки и материали:
1. AD9834, Analog Devices - 20 mW Power, 2.3 V to 5.5 V, 75 MHz Complete DDS [pdf][584kb]
2. Application Note AN-1070, Analog Devices - Programming the AD9833/AD9834 by Liam Riordan [pdf][128kb]
3. ADIsimDDS (Direct Digital Synthesis), AD9834
4. AD9833 Waveform Generator, www.vwlowen.co.uk
5. AD7C AD9850 DDS VFO, www.ad7c.com

6. Arduino библиотека за управление на AD9833, kn34pc.com
7. Arduino библиотека за управление на AD9838, kn34pc.com

LZ2WSG, Силистра
11 октомври 2018 година