Подключение AD9833 к Ардуино

25-02-2020, 17:49 1 комментариев
Наш новый информационный обзор посвящен подключению AD9833 к Ардуино. Мы постараемся рассмотреть базовые особенности устройства, его преимущества и схему сборки. А начнем по традиции с ответа на вопрос: что за устройство мы сегодня обсуждаем.
Речь идет о DDS генераторе сигналов произвольной формы, который применяется для синтеза частоты и генерации тактовых сигналов. Он способен формировать как стабильный аналоговый синусоидальный сигнал, так и прямоугольный, а также сигнал меандру (треугольный). В приборе используется технология прямого цифрового синтеза – потому генератор имеет аббревиатуру DDS.

Об остальных технических параметрах расскажем более коротко:
  • напряжение питания: 2,3 – 5,5V;
  • мощность: 13 мВт (при 3 В);
  • разрешение: 28 бит;
  • диапазон рабочих температур: –40°C … +105°C;
  • частота выходного сигнала: до 12,5 МГц;
  • габариты: 17 х 12 х 1 мм;
  • вес: около 1 г.
На модуле имеется источник опорного тактового сигнала частотой 25 МГц и интегрирован 10-битный цифро-аналоговый преобразователь.

Распиновка выводов:

Плавно переходим к главному – пробуем осуществить подключение AD9833 к Arduino через интерфейс SPI. Для этой цели нам понадобится следующее «железо»:
  1. микроконтроллер Ардуино Uno
  2. DDS-генератор
  3. соединительные провода (перемычки)
Схема сборки выглядит вот так:

 Напишем простой скетч:
#include <SPI.h>

void setup() {
  SPI.begin();
  WriteAD9833(0x2100); //0010 0001 0000 0000 - Reset + DB28
  WriteAD9833(0x50C7); //0101 0000 1100 0111 - Freq0 LSB (4295)
  WriteAD9833(0x4000); //0100 0000 0000 0000 - Freq0 MSB (0)
  WriteAD9833(0xC000); //1100 0000 0000 0000 - Phase0 (0)
  WriteAD9833(0x2000); //0010 0000 0000 0000 - Exit Reset
}

void WriteAD9833(uint16_t Data){
  SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV2, MSBFIRST, SPI_MODE2));
  digitalWrite(SS, LOW);
  delayMicroseconds(1);
  SPI.transfer16(Data);
  digitalWrite(SS, HIGH);
  SPI.endTransaction();
}

void loop() {
  WriteAD9833(0x2000); //0010 0000 0000 0000 - Синусоидальный сигнал
  delay(5000);
  WriteAD9833(0x2002); //0010 0000 0000 0010 - MODE=1 - Треугольный
  delay(5000);
  WriteAD9833(0x2020); //0010 0000 0010 0000 - OPBITEN=1 - Прямоугольный (MSB/2)
  delay(5000);
  WriteAD9833(0x2028); //0010 0000 0010 1000 - OPBITEN=1, DIV2=1 - Прямоугольный (MSB)
  delay(5000);
 }
В прошивке мы использовали библиотеку Wire (которая служит для управления интерфейсом). Чтобы упростить и ускорить процесс программирования, можно использовать другой софт – специализированную библиотеку AD9833-Library-Arduino. Ее необходимо скачать и инсталлировать в директорию libraries в среде Ардуино IDE (либо в самом приложении пройти по пути: Скетч > Подключить библиотеку > Добавить .ZIP). Готово!

https://github.com/Billwilliams1952/AD9833-Library-Arduino

Важно! Не забудьте, питание генератора осуществляется от внешнего источника питания (например, батареи).

Конечно, вы можете создать собственный проект на базе описанного нами генератора, например, добавив к сборке ЖК дисплей и энкодер вращения – все зависит от ваших целей и возможностей. Пробуйте, экспериментируйте!
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...

Сегодня постараемся разобрать подключение AD9850 к Arduino, а также все базовые параметры и нюансы применения данного устройства. Речь идет о частотном...

Инструкция, скетчи и библиотеки для создания радиостанции на базе TEA5767 и Ардуино...

Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...

Сегодня мы с вами рассмотрим универсальный синтезатор частоты на Ардуино и Si5351A. Чем он так хорош (среди своих аналогов) и как подключается к программной...

1 комментария
  1. Антон
    13 апреля 2023 17:36 Антон

    "также сигнал меандру (треугольный)" - это что-то "новое" в радиотехнике.
    Меандр — бесконечный, периодический прямоугольный сигнал со скважностью, равной 2.
    См. приложение 2 п.2 ГОСТ 16465-70 Сигналы радиотехнические измерительные. Термины и определения [ https://standartgost.ru/g/%D0%93%D0%9E%D0%A1%D0%A2_16465-70 ]

    replyОтветить
Оставить комментарий