Генератор сигнала AD9833BRMZ

Генератор сигнала AD9833BRMZ

"Робот и Я"


С помощью Генератор сигнала AD9833BRMZ можно будет формировать синусоидальный, прямоугольный и треугольный сигналы с частотой до 12 МГц. Тестировать работу нашего генератора сигналов мы будем с помощью осциллографа.


Генератор сигналов на основе прямого цифрового синтеза (DDS)

Генератор сигналов может формировать различные виды сигналов заданной частоты. Аббревиатура DDS (Direct Digital Synthesis) означает прямой цифровой синтез. При этом способе любой сигнал можно сформировать в цифровом виде, а затем преобразовать его в аналоговый вид с помощью цифро-аналогового преобразователя (ЦАП). Чаще всего в современной электронике этот метод используется для формирования синусоидальных сигналов, но с его помощью можно формировать и прямоугольные, и треугольные сигналы, и вообще сигналы любой формы. Поскольку формирование сигналов происходит в цифровой форме в модуле DDS, то можно не только очень быстро переключаться между сигналами различной формы, но и также очень быстро изменять их частоту.

Принцип работы генератора сигналов AD9833

"Сердцем" нашего проекта будет микросхема AD9833, представляющая собой программируемый генератор сигналов и отличающаяся низким энергопотреблением. Микросхема (модуль) AD9833 способна формировать сигналы синусоидальной, прямоугольной и треугольной формы с максимальной частотой до 12 МГц. Таким образом, с помощью программы можно изменять частоту, фазу и форму сигналов на выходе данной микросхемы. Управляется данная микросхема по 3-х проводному интерфейсу SPI, что делает взаимодействие с ней достаточно простым. Функциональная схема микросхемы AD9833 приведена на следующем рисунке.

Принцип работы данной микросхемы достаточно прост. Если мы посмотрим на ее функциональную схему, то мы обнаружим в ее составе аккумулятор фазы (Phase Accumulator), чья работа состоит в сохранении всех возможных значений синусоидальной волны, начиная от 0 to 2π. Также в ее схеме присутствуют SIN ROM, который преобразует информацию о фазе в амплитуду, и 10-битный ЦАП, который принимает данные от SIN ROM и преобразует их в соответствующие аналоговые значения напряжения, которые и подаются на выход микросхемы. На выходе микросхемы присутствует программно управляемый выключатель – его можно включать и выключать. Его роль мы рассмотрим далее в статье.

Основные особенности модуля AD9833:

  • цифровое программирование частоты и фазы;
  • потребляемая мощность 12.65 мВт при напряжении 3 В;
  • диапазон выходных частот от 0 МГц до 12.5 МГц;
  • разрешение 28 бит (0.1 Гц при частоте опорного сигнала 25 МГц);
  • синусоидальные, треугольные и прямоугольные выходные колебания;
  • напряжение питания от 2.3 В до 5.5 В;
  • трехпроводной интерфейс SPI;
  • расширенный температурный диапазон: от –40°C до +105°C;
  • опция пониженного энергопотребления.

Вкратце принцип работы данной микросхемы мы рассмотрели, более подробную информацию об этом вы можете посмотреть в даташите на микросхему AD9833.

Расположение выводов микросхемы AD9833 показано на следующем рисунке.

Расположение выводов микросхемы AD9833


VCC – плюс питания для цифровых и аналоговых цепей генератора.

DGND – цифровая земля.

SDATA – вход данных интерфейса SPI. Передача осуществляется 16-битными словами.

SCLK – вход тактового сигнала SPI. Используется второй режим работы: (CPOL = 1, CPHA = 0).

FSYNC – выбор микросхемы. Перед началом передачи данных должен быть установлен в 0, по завершении в 1.

AGND – аналоговая земля.

OUT – выход генератора.


//========================

//AD9833 Signal Generator

//========================

#include<AD9833.h>

//----------------------------

AD9833 gen(9);

long f; int sw1, sw2;

//========================================

void setup()

{

  pinMode(3,INPUT); pinMode(4,INPUT);

  gen.Begin();              

  gen.EnableOutput(true);

}

//========================================

void loop()

{

  f = map(analogRead(A6),0,1023,1000,5000);

  sw1 = digitalRead(4);

  sw2 = digitalRead(3);

  

  if(sw1==LOW && sw2==LOW)    gen.ApplySignal(SINE_WAVE,REG0,f);

  if(sw1==LOW && sw2==HIGH)   gen.ApplySignal(TRIANGLE_WAVE,REG0,f);

  if(sw1==HIGH && sw2==LOW)   gen.ApplySignal(SQUARE_WAVE,REG0,f);

  if(sw1==HIGH && sw2==HIGH)  gen.ApplySignal(HALF_SQUARE_WAVE,REG0,f);

}





Назад

На главную


Report Page