Arduino in Verbindung mit dem Generator AD9850

Das Modul AD9850 wird verwendet, um zwei Sinus- und zwei Rechteckwellenformen mit einer Frequenz von bis zu 40 MHz zu erzeugen. Das System kommuniziert über einen seriellen Bus oder durch paralleles Senden von Bits. Es ist mit gelöteten Golpin -Anschlüssen im Raster 2,54 mm ausgestattet, die den Anschluss an das Steckbrett oder den Anschluss mit Drähten ermöglichen.

Das Beispiel verwendet die folgenden Elemente:

AD9850 mit Arduino verbinden:

Um den Generator über eine serielle Schnittstelle zu betreiben, verbinden Sie das System wie folgt mit Arduino:

Stift AD9850 Arduino-Stift
W_CLK 2
FQ_UD 3
DATUM 4
ZURÜCKSETZEN

5

VCC 5 V
Masse Masse

Anschlussdiagramm des AD9850-Chips mit dem Arduino Uno.

Programm für Arduino

Im Beispiel wurde folgender Code verwendet:

 #define W_CLK 2 // Pin 2 - Taktsignal des Kommunikationsbusses (W_CLK)
 #define FQ_UD 3 // Pin 3 - Frequenzänderung (FQ)
 #define DATA 4 // Pin 4 - Datenleitung der seriellen Schnittstelle (DATA)
 #define RESET 5 // Pin 5 - Modul-Reset (RESET)
 
 #define pulseHigh (Pin) {digitalWrite (Pin, HIGH); digitalWrite (Stift, LOW); } // Die Impulsfunktion setzt den Zustand für einen Moment hoch
 
 // Byte Bit für Bit über die DATA-Leitung an das AD9850-Modul übertragen
void tfr_byte (Byte-Daten)
{
  for (int i = 0; i <8; i ++, data >> = 1) {
    digitalWrite (DATEN, Datum & 0x01);
    pulseHigh (W_CLK); // CLK-Signal wird nach jedem Bit hoch gesetzt
  }
}
 
 // Frequenz berechnet nach der Formel auf Seite 8 der Dokumentation = * / 2 ^ 32
void sendFrequency (doppelte Häufigkeit) {
  int32_t freq = Frequenz * 4294967295/125000000; // 125 MHz Takt auf AD9850
  for (int b = 0; b <4; b ++, freq >> = 8) {
    tfr_byte (Frequenz & 0xFF);
  }
  tfr_byte (0x000); // Steuerbyte, alle Nullen "0" für das AD9850-Modul  
  pulseHigh (FQ_UD); // Frequenz aktualisieren
}
 
void setup () {
 // Arduino-Pin-Konfiguration
  PinMode (FQ_UD, AUSGANG);
  PinMode (W_CLK, AUSGANG);
  PinMode (DATEN, AUSGANG);
  PinMode (RESET, AUSGANG);
 
  pulseHigh (ZURÜCKSETZEN);
  pulseHigh (W_CLK);
  pulseHigh (FQ_UD); // Modus der seriellen Schnittstelle aktivieren
}
 
Leere Schleife () {
  sendFrequency (100000); // Geben Sie die Frequenz an den Generator
  während (1);
}

Die erzeugte Wellenform kann beispielsweise auf dem Oszilloskop-Bildschirm beobachtet werden.

Wenn das Rechtecksignal nicht erscheint, drehen Sie das im AD9850-Modul eingebaute Potentiometer. Es wird verwendet, um die Füllung der Rechteckwelle einzustellen.

 

Wir freuen uns auf die Zusammenarbeit mit Ihnen!