Arduino generátor signálu je doplňkový modul pro Arduino. Tento modul obsahuje integrovaný obvod AD9850, který má dva výstupy – pro sinusový a obdélníkový signál. Parametry těchto generovaných signálů je možné nastavit pomocí připojeného mikroprocesoru, v našem případě Arduina.

Výstupní sinusový signál lze nastavit ve frekvenčním rozsahu 0 až 40 MHz, přičemž od 20 MHz už bude signál méně čistý díky nárůstu harmonických složek. Obdélníkový signál lze pak nastavit v rozmezí 0 až 1 MHz. Pro oba signály je možné digitálně nastavit kromě jejich frekvence také fázový posun, a to po krocích 11,25°. Na modulu se ještě nachází trimr, kterým se nastavuje střída obdélníkového signálu.

Pro napájení modulu s AD9850 je doporučeno použít napětí o velikosti 3,3 V. Proudový odběr dosahuje maximálně hodnoty 47 mA. Lze využít také úsporný režim, který vypne generování signálů a v tomto režimu je spotřeba pouze 3 mA.

Arduino generátor signálu AD9850

Pro úspěšné propojení generátoru signálů a Arduino desky je nutné zapojit celkem 6 vodičů. Propojíme VCC s +3.3V Arduina, W_CLK s pinem D7, FU_UD s pinem D8, DATA s pinem D9, RESET s pinem D10 a GND se zemí Arduina. Pro digitální piny je možné vybrat také jiné volné piny, ale je nutné tuto volbu provést také na začátku programu.

Schéma zapojení Arduino generátoru signálu AD9850

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu AD9850, návod, jak na to je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny a nastavení čísel propojovacích pinů. Následně je vytvořena měřící konstanta pro kalibraci generátoru a proměnná pro nastavení fázového posunu.

V podprogramu setup v prvním kroku provedeme inicializaci generátoru z knihovny a poté provedeme kalibraci se zadanou frekvencí krystalu. V dalších krocích jsou uvedeny dostupné funkce v knihovně – zapnutí generátoru, nastavení generované frekvence společně s fázovým posunem a přepnutí generátoru do módu nízkého odběru.

Nekonečná smyčka loop obsahuje pro ukázku nejprve for smyčku pro zvětšování generované frekvence od 100 Hz po 10 000 Hz a následně snižování zpět na hodnotu 100 Hz. Mezi jednotlivými kroky je vždy pauza 100 milisekund. A po dokončení obou smyček je pauza po dobu tří sekund před novým během nekonečné smyčky.

// Generátor signálů AD9850

// připojené potřebné knihovny
#include <AD9850.h>
// nastavení propojovacích pinů
#define W_CLK_PIN 7
#define FU_UD_PIN 8
#define DATA_PIN 9
#define RESET_PIN 10
// měřící konstanta pro kalibraci generátoru
const double trimFreq = 124999500;
// nastavení generovaného fázového posuvu
int faze = 0;

void setup() {
  // inicializace generátoru
  DDS.begin(W_CLK_PIN, FU_UD_PIN, DATA_PIN, RESET_PIN);
  // kalibrace podle zadané frekvence krystalu
  DDS.calibrate(trimFreq);
  // zahájení komunikace s generátorem
  DDS.up();
  // ukázka nastavení frekvence 1000 Hz
  // s fázovým posunem 180°
  DDS.setfreq(1000, 180);
  delay(3000);
  // nastavení módu spánku
  DDS.down();
  delay(3000);
  DDS.up();
}

void loop() {
  // změna generované frekvence od 100 Hz po 10 000 Hz
  for (int i = 0; i < 100; i++) {
    DDS.setfreq(100 * i, faze);
    delay(100);
  }
  // snižování generované frekvence zpět na 100 Hz
  for (int i = 0; i < 100; i++) {
    DDS.setfreq(10000 - (100 * i), faze);
    delay(100);
  }
  delay(3000);
}

Po nahrání ukázkového kódu do Arduino desky s připojeným generátorem signálů AD9850 dostaneme například tento výsledek na osciloskopu:

Ukázka funkce Arduino generátoru sinus signálu AD9850

Ukázka funkce Arduino generátoru obdélníkového signálu AD9850

Arduino generátor signálu je jednoduše ovladatelný modul, s kterým můžeme generovat dva typy signálů – sinus a obdélník. U obou signálů můžeme nastavovat jejich frekvenci a fázový posun, u obdélníka pak také střídu pomocí trimru na modulu.

Tento generátor se hodí jak pro výukové účely, tak i například pro radioamatéry či kutily, kteří potřebují generovat tento druh signálů s frekvencí i několik Megahertz. Velkou výhodou tohoto modulu je pak jeho malý proudový odběr.

 

Seznam použitých komponent:

https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

https://dratek.cz/arduino/895-arduino-generatoru-signalu-1420668497.html

FB tw

Další podobné články