AD9833 SIN-GEN ARDUINO IDE(SPI lib.)

Şimdi ben de kurdum devreyi.

IMG_20220712_170052.jpg


Test programı şu:

C++:
#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:

C++:
#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.
 
Ben bu yapıyı kurmuştum daha iyi tasarıma açığım her zaman :)

Aynen mantık bu. Ama sıralamayı ters yapmışsın. Önce offseti gidermen lazım. Bunu yapmazsan uygulayabileceğin kazanç çok sınırlı olur, opamp hemen satürasyona uğrar.
 
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.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,958
Mesajlar
118,802
Üyeler
2,825
Son üye
bekinci

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top