AD9833 SIN-GEN ARDUINO IDE(SPI lib.)

Şimdi ben de kurdum devreyi.

IMG_20220712_170052.jpg


Test programı şu:

Kod:
#include <SPI.h>

#define AD9833_CS 10

static double frequency = 120000.0;

void setup()
{
  Serial.begin(115200);

  pinMode(AD9833_CS, OUTPUT);

  digitalWrite(AD9833_CS, HIGH);

  SPI.begin();
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE2));
}

void loop()
{
  char buffer[100];

  unsigned long freq0 = round(frequency * 10.73741824);

  snprintf(buffer, sizeof(buffer), "freq0 = %lu\n", freq0);
  Serial.print(buffer);

  unsigned int freq0_lo = freq0 & 0x3fff;
  unsigned int freq0_hi = (freq0 >> 14) & 0x3fff;

  snprintf(buffer, sizeof(buffer), "freq0_lo = 0x%04X, freq0_hi = 0x%04X\n", freq0_lo, freq0_hi);
  Serial.print(buffer);

  digitalWrite(AD9833_CS, LOW);
  SPI.transfer16(0x2000);
  SPI.transfer16(0x4000 | freq0_lo);
  SPI.transfer16(0x4000 | freq0_hi);
  digitalWrite(AD9833_CS, HIGH);

  while (1)
  {
    ;
  }
}
 
Şimdi ben de kurdum devreyi.

18356 eklentisine bak

Test programı şu:

Kod:
#include <SPI.h>

#define AD9833_CS 10

static double frequency = 120000.0;

void setup()
{
  Serial.begin(115200);

  pinMode(AD9833_CS, OUTPUT);

  digitalWrite(AD9833_CS, HIGH);

  SPI.begin();
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE2));
}

void loop()
{
  char buffer[100];

  unsigned long freq0 = round(frequency * 10.73741824);

  snprintf(buffer, sizeof(buffer), "freq0 = %lu\n", freq0);
  Serial.print(buffer);

  unsigned int freq0_lo = freq0 & 0x3fff;
  unsigned int freq0_hi = (freq0 >> 14) & 0x3fff;

  snprintf(buffer, sizeof(buffer), "freq0_lo = 0x%04X, freq0_hi = 0x%04X\n", freq0_lo, freq0_hi);
  Serial.print(buffer);

  digitalWrite(AD9833_CS, LOW);
  SPI.transfer16(0x2000);
  SPI.transfer16(0x4000 | freq0_lo);
  SPI.transfer16(0x4000 | freq0_hi);
  digitalWrite(AD9833_CS, HIGH);

  while (1)
  {
    ;
  }
}
Abi dikkat ediyorum da senin masada hep renesas duruyor yoksa sende renesas büyükelçisi misin.

Benim test programı güzeldi abi dalga değiştirme khz mhz hz için ayrı ayrı 0 saymana da gerek yoktu.
 
Bu şekilde çıkış sinyalinin genliği 1.63V, frekans da 120 kHz. Ama dikkat edilirse sinyalde pozitif DC offset var.

a.png
 
Yani bu durumda opamp mutlaka şart. Sadece opamp de değil, simetrik besleme voltajı lazım, mesela ± 12 V olabilir.

Bir de frekansı neye set edersen et, genlik hep sabit. O yüzden genliğin de ayarlanması gerekli. Onun için de ayrı bir opamp katı gerekli. Yani opamp'den kurtuluşunuz yok :)
 
Abi dikkat ediyorum da senin masada hep renesas duruyor yoksa sende renesas büyükelçisi misin.

Benim test programı güzeldi abi dalga değiştirme khz mhz hz için ayrı ayrı 0 saymana da gerek yoktu.

O renesas benim başımın belası. Ethernet PHY çipini çalıştırmaya uğraşıyorum prototip kart üzerinde kaç gündür, çalışmıyor.
 
Hem bant genişliği yüksek, hem de kazanç değeri programlanabilen özel PGA ve VGA denen opamp'ler var. Hatta bendeki modülün üzerinde onlardan bir tane var. Öyle birşey kullanmak lazım genlik ayarı için.
 
Hmm benim modülde şimdi 5 MHz almayı denedim, genlik çok düştü

a.png
 
12 MHz almaya çalışınca çıkış tam hüsran. Genlik 130 mV larda. Frekans yanlış. Yüksek bir DC offset olduğu için AC kuplaja geçtim. Bir de sinyal 1 MHz ile genlik modülasyonuna uğramış.

Ahmet, sen dene bakalım 12 MHz alabiliyor musun.

a.png
 
12 MHz almaya çalışınca çıkış tam hüsran. Genlik 130 mV larda. Frekans yanlış. Yüksek bir DC offset olduğu için AC kuplaja geçtim. Bir de sinyal 1 MHz ile genlik modülasyonuna uğramış.

Ahmet, sen dene bakalım 12 MHz alabiliyor musun.

18361 eklentisine bak
çıkış 135mV
frekans asla durmuyor 12.07,12.15 yer yer .30a kadar .çıkıyor görüntü aynı
 
Bir dakka, frekans doğru. Genlik modülasyonundan dolayı herhalde osiloskop otomatik ölçüm yaparken kafası karışıyor. Manuel ölçünce frekansın doğru olduğunu görüyorum.

a.png
 
tam üstüne denk geldi.
aldığım osiloskop probu geldi.
bayram bayram kargo mu dağılır :katil2:
 
Bir dakka, frekans doğru. Genlik modülasyonundan dolayı herhalde osiloskop otomatik ölçüm yaparken kafası karışıyor. Manuel ölçünce frekansın doğru olduğunu görüyorum.

18362 eklentisine bak
IMAGE4.jpg

Prob ile ölçünce 50 mV'a düştü ölçüm anında 36mV'muş aldığım görüntüdü'de bu.
probun üstüne 60MHz olduğu yazıyor umarım bunu'da yakmam şimdilik kurtuldum bnc kord'dan
 
O zaman bendeki modül biraz yükselttiği için 130 mV. O yokken hepten 36 mV :katil2: Acaba bizim programda bug olabilir mi? Ama bug olsa frekans doğru çıkmaz. Başka birşey de değiştirmiyoruz.
 

Forum istatistikleri

Konular
7,847
Mesajlar
130,034
Üyeler
3,156
Son üye
ucakelektronik

Son kaynaklar

Son profil mesajları

Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
az bilgili çok meraklı
Back
Top