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

Analog Devices AD9838 - 11 mW Power, 2.3 V to 5.5 V, Complete DDS

Features:

- MCLK speed: 16 MHz (B grade), 5 MHz (A grade)
- Output frequency up to 8 MHz
- Sinusoidal and triangular outputs
- On-board comparator
- 3-wire SPI interface
- Power-down option
- 11 mW power consumption at 2,3 V

***


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


LZ2WSG AD9838 module

Поради неудобството при боравенето с миниатюрния 4 х 4 мм 20-LFCSP-WQ корпус на AD9838 за целите на експериментите си приспособих наличната ИС към помощна преходна платка с последващо заливане на монтажа и свързващите проводници с двукомпонентно лепило. Предвид ниската опорна и работна честота това не се отрази по някакъв начин на очакваните параметри на DDS.

Максималната честота на опорния кварцов генератор е 5 MHz (за AD9838A) или 16 MHz (за AD9838B). Поради липса на готов монолитен генератор експериментите си проведох с генератор, изпълнен с 16 MHz кварцов резонатор и ИС 74HC00. Опорен генератор с по-добри параметри откъм стабилност на изходната честота, фазови шумове и др. вероятно би бил по-подходящ за други поставени цели.


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

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

С честота 16 MHz на опорния кварцов генератор максималната изходна честота на DDS AD9838 е около Fmclk/3 или Fmax = 16/3 = 5,300 MHz.

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

***

Library constructor:

AD9838(uint8_t, uint8_t, uint8_t);

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

***

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

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

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

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

frequency = 0 ... Fxtal/3, в Hz (0 ... 5300000 Hz)

при MCLK = 5 MHz, мин. стъпка е 0,02 Hz
при MCLK = 16 MHz, мин. стъпка е 0,06 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 генератор за един обхват
ad9838_enc.zip

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

***

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

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


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

Препратки и материали:
1. AD9838, Analog Devices - 11 mW Power, 2.3 V to 5.5 V, Complete DDS [pdf][826kb]
2. AD9833 Waveform Generator, www.vwlowen.co.uk
3. AD7C AD9850 DDS VFO, www.ad7c.com

4. Arduino библиотека за управление на AD9833, kn34pc.com
5. Arduino библиотека за управление на AD9834, kn34pc.com

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