Categories
Statistics
Flag Counter
Since 08.08.2014
Counts only, if "DNT = disabled".

Your IP is 44.206.248.122
ec2-44-206-248-122.compute-1
Info
Valid HTML 4.01 Transitional Creative Commons Lizenzvertrag
rss
เราจะทำแบบวิศวกรผู้ยิ่งใหญ่
We love the King
19. March 2024
Your valuable opinion :
3 stars

Avg. 3.44 from 9 votes.



AD9859-DaughterBoard.php    12674 Bytes    12-02-2018 11:22:33


AD9859 Daughterboard (Low Noise DDS)


Designed as a building block for receivers, synthesizers, ...




AD9859 Daughterboard




✈ Motivation




This board was designed to serve as a building block for receivers. As it is very universal, it mayst be used in a lot of other applications, too. As all other, similiar (known) boards use the clock multiplier, this board has a 400 MHz LVDS crystal oscillator in order to keep the noise as low as possible (Approx. 20 - 30 dB below the multiplier-solution, see datasheet, p. 10). The amplifier used is a GALI-6+ which has a gain of 12 dB at a supply voltage of + 5 V. Together with R15 this shall deliver an output power of + 13 dBm. To keep the form-factor small, 0603 components have been used. As their number is manageable, this might as well serve as a soldering exercise. (for advanced students :-)




✈ Performance




AD9859 Daughterboard (low Noise)
maximum power
AD9859 Daughterboard (low Noise)
noise spectrum @ 10 MHz


AD9859 Daughterboard (low Noise)
spurii of the AD9859
compared to a Si570


Using the recommended resistor (Rset = 3.9 kΩ), the output power is ≈ -4 dBm. In order to reach the desired +13 dBm, we finally used a GALI-51+. The power consumption was 160 mA @ 5.0 V. Looks like the lowpass filter mayst need some optimisation ...
As the "digital garbage" is very dominant, another board, based on the Si570 shall be designed.




✈ Programming




Programming the AD9859 Daughterboard


Programming the AD9859 Daughterboard is just a matter of shifting in 5 bytes of data. Not a big deal. From top to bottom, one can see CLK, DATA, I/O Update and Chip Select. As we used MSB first, here, you see the first byte on the left holding the address of the FTW0 at 0x04. One sequence will take approx. 120 ms, most of the time is used for delays. If you are in a hurry, it can be made much faster ...




✈ Test Sketch for Arduino/Genuino UNO



Double click on code to select ...

/* ///////////////////////////////////////////////////////////// 
ARDUINO/Genuino (UNO) Test/Demo Sketch for AD9859 DaughterBoard,
https://www.changpuak.ch/electronics/AD9859-DaughterBoard.php
Software Version 1.0, 
28.07.2016, Alexander C. Frank
//////////////////////////////////////////////////////////////*/ 


// ///////////////////////////////////////////////////////////// 
// DDS PINS
// ///////////////////////////////////////////////////////////// 
const int RESET = 13;     // connected to Pin 20 of K2
const int CS = 12;        // connected to Pin 19 of K2
const int CLK = 11;       // connected to Pin 18 of K2
const int DIO = 10;       // connected to Pin 17 of K2
const int IOUpDate = 9;   // connected to Pin 9 of K2

unsigned long DDS_CLOCK = 400000000 ;     // PLUS MINUS SOME PPM
unsigned long FREQ = 120527000 ;     // YES, it's a birthday :-)

// ///////////////////////////////////////////////////////////// 
// CLOCK OUT ONE BYTE, MSB FIRST
// ///////////////////////////////////////////////////////////// 
void TransMIT(byte data)
{
  byte pointer = 0b10000000 ;
  for (int i=0; i<8; i++)
  {
  if ((data & pointer) > 0) { digitalWrite(DIO, HIGH); }
      else { digitalWrite(DIO, LOW); }
   delay(1);   
   digitalWrite(CLK, HIGH);
   delay(1);
   digitalWrite(CLK, LOW);
   delay(1);
   pointer = pointer >> 1 ;
  }  
}

void SetFrequency(unsigned long frequenz)
{
  unsigned long FTW = (frequenz * pow(2, 24)) / ( DDS_CLOCK/256 ) ;
  byte Splitter ;
  digitalWrite(CS, LOW);
  TransMIT(0x04);   // ADDRESS FTW0
  Splitter = FTW >> 24; TransMIT(Splitter); 
  Splitter = FTW >> 16; TransMIT(Splitter); 
  Splitter = FTW >> 8;  TransMIT(Splitter); 
  Splitter = FTW ;      TransMIT(Splitter); 
  digitalWrite(CS, HIGH);
  digitalWrite(IOUpDate, HIGH);
  delay(1);
  digitalWrite(IOUpDate, LOW);
}

void setup() {
  pinMode(RESET, OUTPUT);
  pinMode(CS, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(DIO, OUTPUT);
  pinMode(IOUpDate, OUTPUT);
  digitalWrite(RESET, LOW);
  digitalWrite(CS, HIGH);
  digitalWrite(CLK, LOW);
  digitalWrite(DIO, LOW);
  digitalWrite(IOUpDate, LOW);

  digitalWrite(RESET, HIGH);
  delay(20);
  digitalWrite(RESET, LOW);

  // ///////////////////////////////////////////////////////////// 
  // INIT DDS 
  // ///////////////////////////////////////////////////////////// 

  // CFR1
  digitalWrite(CS, LOW);
  TransMIT(0x00);   // ADDRESS
  TransMIT(0x00);   // DEFAULT
  TransMIT(0x00);      
  TransMIT(0x00);    
  TransMIT(0x00);    
  digitalWrite(CS, HIGH);
  digitalWrite(IOUpDate, HIGH);
  delay(1);
  digitalWrite(IOUpDate, LOW);

  // CFR2
  digitalWrite(CS, LOW);
  TransMIT(0x01);   // ADDRESS
  TransMIT(0x18);   // NOT USED
  TransMIT(0x00);      
  TransMIT(0x00);      
  digitalWrite(CS, HIGH);
  digitalWrite(IOUpDate, HIGH);
  delay(1);
  digitalWrite(IOUpDate, LOW);

  // ASF
  digitalWrite(CS, LOW);
  TransMIT(0x02);   // ADDRESS
  TransMIT(0x00);   // DEFAULT 
  TransMIT(0x00);      
  digitalWrite(CS, HIGH);
  digitalWrite(IOUpDate, HIGH);
  delay(1);
  digitalWrite(IOUpDate, LOW);

  // ARR
  digitalWrite(CS, LOW);
  TransMIT(0x03);   // ADDRESS
  TransMIT(0x00);   // DEFAULT 
  digitalWrite(CS, HIGH);
  digitalWrite(IOUpDate, HIGH);
  delay(1);
  digitalWrite(IOUpDate, LOW);

  // POW0
  digitalWrite(CS, LOW);
  TransMIT(0x05);   // ADDRESS
  TransMIT(0x00);   // DEFAULT
  TransMIT(0x00);      
  digitalWrite(CS, HIGH);
  digitalWrite(IOUpDate, HIGH);
  delay(1);
  digitalWrite(IOUpDate, LOW);

  // FTW0
  SetFrequency(FREQ);
  delay(9999);
  FREQ = 10000000 ;
}

void loop() 
{
  // SWEEP A LITTLE ...

  SetFrequency(FREQ);
  FREQ += 100000 ;
  delay(9999);
  if (FREQ > 180000000) FREQ = 10000000 ;
  
}
 
// ///////////////////////////////////////////////////////////// 
// END OF FILE.
// ///////////////////////////////////////////////////////////// 




✈ Downloads









AD9859 Daughterboard




✈ Share your thoughts



The webmaster does not read these comments regularely. Urgent questions should be send via email. Ads or links to completely uncorrelated things will be removed.


Your Browser says that you allow tracking. Mayst we suggest that you check that DNT thing ?

 
t1 = 6459 d

t2 = 310 ms

★ ★ ★  Copyright © 2006 - 2024 by changpuak.ch  ★ ★ ★

PRchecker.info Impressum