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

Analog Devices AD9835 - 50 MHz Direct Digital Synthesizer, Waveform Generator

Features:

- 50 MHz speed
- On-chip COS lookup table
- 10-bit DAC
- Serial loading
- Power-down option
- 200 mW power consumption

***


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


LZ2WSG AD9835 module

Честотата на опорния кварцов генератор е 50 MHz, но поради липса на такъв експериментите си проведох с кварцов генератор NKG-3 AXO-20150H с честота 66,666 MHz.
AD9835 функционира нормално и "оувърклокната" .


Библиотека за управление на AD9835 под Arduino / AD9835 Arduino Library:
ad9835_lib_v0.3.zip

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

AD9832 и AD9835 са еднакви по параметри и управление. Разликата е в максималната честота на опорния генератор Fmclk, която за AD9832 е 25 MHz, а за AD9835 е 50 MHz -> следва те се различават и по максималната възможна изходна честота.

При Fmclk с честота 50 MHz от опорния генератор, максималната изходна честота на DDS AD9835 е около Fmclk/3 или Fmax = 50/3 = 16,600 MHz (с моя тестов работен кварцов генератор на 66,666 MHz -> Fmax = 22,222 MHz).

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

***

Library constructor:

AD9835(uint8_t, uint8_t, uint8_t);

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

***

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

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

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

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

frequency = 0 ... Fxtal/3, Hz (0 ... 16600000 Hz)

void sleep(uint8_t state);
режим, изходно състояние

state = 0
DDS работи, изходът е включен (по подразбиране)

state = 1
DDS не работи, изходът е изключен

***

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

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

***

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

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


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

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

Препратки и материали:
1. AD9835, Analog Devices - 50 MHz Direct Digital Synthesizer, Waveform Generator [pdf][735kb]
2. Application Note AN-621, Analog Devices - Programming the AD9832/AD9835 [pdf][208kb]
3. Application Note AN-1108, Analog Devices - AD9832/AD9835 Programming Examples by Liam Riordan [pdf][315kb]
4. ADIsimDDS (Direct Digital Synthesis), AD9835
5. Kenwood TS-480HX/480SAT Service Manual, TX-RX unit [jpg][263kb]
6. AD7C AD9850 DDS VFO, www.ad7c.com
7. Arduino библиотека за управление на AD9832, kn34pc.com

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