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

Analog Devices AD9833 - Low Power, 12.65 mW, 2.3 V to 5.5 V, Programmable Waveform Generator

Features:

- Digitally programmable frequency and phase
- 12,65 mW power consumption at 3 V
- 0 to 12,5 MHz output frequency range
- 28-bit resolution: 0,1 Hz at 25 MHz reference clock
- Sinusoidal, triangular and square wave outputs
- 2,3 V to 5,5 V power supply
- Power-down option

***


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


LZ2WSG AD9833 module

За целите на експериментите си съм монтирал DDS AD9833 на преходна платка.

Максималната честота на опорния кварцов генератор е 25 MHz. Поради липса на монолитен кварцов генератор с такава честота съм използвал наличен генератор с честота 32 MHz. При това AD9833 функционира нормално.


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

С честота 25 MHz на опорния кварцов генератор максималната изходна честота на DDS AD9833 е около Fmclk/2 или Fmax = 25/2 = 12,500 MHz (с моя тестов работен кварцов генератор на 32 MHz -> Fmax = 15,500 MHz), но имайки предвид параметрите на изходния сигнал, би било добре изходната честота да не превишава Fmclk/3 [3].

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

***

Library constructor:

AD9833(uint8_t, uint8_t, uint8_t);

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

***

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

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

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

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

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

при MCLK = 25 MHz, мин. стъпка е 0,1 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
триъгълен изходен сигнал

wave = SQUARE
правоъгълен изходен сигнал

***

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

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

***

Избрал съм за тест VFO генератор за приемник на 40m с междинна честота IF = 500 kHz (ЕМФ): Fhet = Fin + IF -> Fhet = (7500000 ... 7700000) Hz.

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


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

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

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

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