AD9833 hakkında

Başlatan berkay_91, 24 Eylül 2016, 15:37:34

berkay_91

mrb, Ali expressden aldığım AD9833 modülü ile kare dalga üretirken Op-amp bir anda aşırı ısınmaya başladı, testlere farklı frekans ve genliklerde sinüs ve üçgen dalgalar içinde devam ettim ve şu sonuca vardım sadece kare dalga üretirken devre sapıtıyor ve zaman zaman 500 mA e yakın akım çekiyor zaten kare dalga üretirken scope dada çok ripple gözüküyor, diğer sinyal şekilleri gayet temiz üretilebiliyor yaklaşık 130-150 mA akım çekiyor, devremde bir adet Atmega32A, TFT ekran(ILI9163 sürücülü), OP-AMP(AD812) beslemesini +- 15 volt veriyorum AD812 çift opamp barındırıyor ilkini follower olarak kullandım ikincisinide 10k pot ile inverting amplifier yaptım giriş direnci(Ri) olarak 1k kullandım. daha önce böyle bir sorunla karşılaşan oldu mu?

https://tr.aliexpress.com/item/1pcs-AD9833-0-MHz-to-12-5-MHz-Digital-DDS-Signal-Generator-Module-Programmable-Microprocessors-Triangle/32573830574.html?spm=2114.010208.3.1.mnlhjg&ws_ab_test=searchweb201556_0,searchweb201602_1_10065_10068_112_10069_110_111_418_10017_109_108_10060_10061_10062_10057_10056_10055_10037_10054_301_10033_10059_10032_10058_10073_10070_10052_10053_10050_10051,searchweb201603_6&btsid=f2c50140-219d-4b13-a7bd-3a99b4f09370


furkanyx

@berkay_91 hocam, AD5932 entegeresi ile uğraşacağım da programlanması hakkında bir kaç soru sorabilir miyim?

tekosis

beslemede ne kullanıyorsunuz? eğer adaptörle yapıyorsanız bir de batarya ile test edin ısınma olacak mı? beslemede tantal kondansatör kullanmanın da faydası var.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

a.zorba

Ad9833 için kullandigin kodları paylasabirmisin.
Bilenler bilir . Biz maraşlilar için şehir olarak şubat ay' i bayram ,kurtuluş ,yaz in gelmesiydi. Şimdi karalar in yas in ayı oldu.

trinity

Bu linkte bütün proje bilgileri ve kaynak kodları var, isteyen c kodlarını biraz değiştirip pic'e uyarlayabilir.

http://www.vwlowen.co.uk/arduino/AD9833-waveform-generator/AD9833-waveform-generator.htm

berkay_91

Merhaba eklediğim projeyi Atmel studio 6.0 derleyicisinde oluşturdum projede mikrodenetleyici olarak Atmega328 kullandım, programı 8 Mhz de kullanabilmek için Fuse bitlerini LOW VALUE:E2 HIGH VALUE:D9 olarak değiştirdim böylelikle dahili osilatörü 8 Mhz de aktive ettim, AD9833 0 ile 12.5 Mhz arasında  sinüs, üçgen ve kare dalga üreten bir chiptir. iyi çalışmalar...

http://s2.dosya.tc/server3/70c2xu/DDS_AD9833.rar.html

Zoroaster

1 Khzde ürettiği sinüs sinyalin scop görüntüsünü yayınlayabilir misiniz?
Seytan deliginden kacti.

Hattusa

Alıntı yapılan: berkay_91 - 24 Eylül 2016, 15:37:34
mrb, Ali expressden aldığım AD9833 modülü ile kare dalga üretirken Op-amp bir anda aşırı ısınmaya başladı, testlere farklı frekans ve genliklerde sinüs ve üçgen dalgalar içinde devam ettim ve şu sonuca vardım sadece kare dalga üretirken devre sapıtıyor ve zaman zaman 500 mA e yakın akım çekiyor zaten kare dalga üretirken scope dada çok ripple gözüküyor, diğer sinyal şekilleri gayet temiz üretilebiliyor yaklaşık 130-150 mA akım çekiyor, devremde bir adet Atmega32A, TFT ekran(ILI9163 sürücülü), OP-AMP(AD812) beslemesini +- 15 volt veriyorum AD812 çift opamp barındırıyor ilkini follower olarak kullandım ikincisinide 10k pot ile inverting amplifier yaptım giriş direnci(Ri) olarak 1k kullandım. daha önce böyle bir sorunla karşılaşan oldu mu?

https://tr.aliexpress.com/item/1pcs-AD9833-0-MHz-to-12-5-MHz-Digital-DDS-Signal-Generator-Module-Programmable-Microprocessors-Triangle/32573830574.html?spm=2114.010208.3.1.mnlhjg&ws_ab_test=searchweb201556_0,searchweb201602_1_10065_10068_112_10069_110_111_418_10017_109_108_10060_10061_10062_10057_10056_10055_10037_10054_301_10033_10059_10032_10058_10073_10070_10052_10053_10050_10051,searchweb201603_6&btsid=f2c50140-219d-4b13-a7bd-3a99b4f09370




berkay usta siz en iyisi sorunuzu geri alın, baksanıza milletin daha büyük derdi varmış  :D  :D  :D
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

berkay_91

olsun hocam benim gibi dertli insanları görmek mutluluk veriyor :)

a.zorba

Alıntı yapılan: Zoroaster - 30 Kasım 2016, 12:50:50
1 Khzde ürettiği sinüs sinyalin scop görüntüsünü yayınlayabilir misiniz?



kullandıgım kodlar :
#include "stm32f10x_conf.h"
#include "math.h"
#define FSYNCHIGH		GPIO_WriteBit(GPIOB,GPIO_Pin_7,Bit_SET);		//RB7
#define FSYNCLOW	    GPIO_WriteBit(GPIOB,GPIO_Pin_7,Bit_RESET);
#define SDATAHIGH	    GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_SET);		//RB5
#define SDATALOW 		GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_RESET);
#define SCLKHIGH 		GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_SET);		//RB6
#define SCLKLOW		    GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_RESET);
void set_freq(long frequency);
void AD9837Write(int dat);


long freq;

void set_freq(long frequency);
unsigned char flag_type = 0;


 void Init_GPIO(void){
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

  FSYNCHIGH;
  SDATAHIGH;
  SCLKHIGH;
set_freq(1000);

}
void delay(__IO uint32_t num)
{
	__IO uint32_t index = 0;

	/* default system clock is 72MHz */
	for(index = (720000 * num); index != 0; index--)
	{
	}
}

void delay_us(uint32_t us){
	 uint32_t temp;
	 temp = us * 6; // cho 24 MHZ
	 while(temp > 0)
	 {
		 temp --;
	 }
 }

int main(void)
{
    Init_GPIO();

}

void set_freq(long frequency)
{
  //
  int MSB;
  int LSB;
  int phase = 0;

  long FREQ0_REG0;
  float AD9837Val = 0.00000000;

  AD9837Val = (((float)(frequency))/25000000);
  FREQ0_REG0 = AD9837Val*0x10000000;

  MSB = (int)((FREQ0_REG0 & 0xFFFC000)>>14); //14 bits
  LSB = (int)(FREQ0_REG0 & 0x3FFF);

  //Set control bits DB15 ande DB14 to 0 and 1, FREQ0 register write(D15, D14 = 01)
  LSB |= 0x4000; //0b 0100 0000 0000 0000
  MSB |= 0x4000; //0b 0100 0000 0000 0000

  phase &= 0xC000; //0b1100 0000 0000 0000 =>When writing to a phase register, Bit D15 and Bit D14 are set to 11.

  AD9837Write(0x2100);//0b 0010 0001 0000 0000 => Set D13(set frequency registers. B28 bit)and D8 (Reset=1)

  delay(100);

  AD9837Write(LSB);  //Write Freq lower 14 bits

  AD9837Write(MSB);  //Write Freq upper 14 bits

  AD9837Write(phase);  //mid-low
  delay(10);

 AD9837Write(0x2000); //sin wave
  //AD9837Write(0x2020); //square
  //AD9837Write(0x2002); //triangle
}


void AD9837Write(int dat)
{
  int x;
  FSYNCLOW;  //Set FSYNC low
  for (x = 0; x < 16; x++)
  {
    if (dat & 0x8000)
    {
    SDATAHIGH;   //Set SDATA according to MSB in cmd
    }
    else
   {
    SDATALOW;
   }
    SCLKLOW;  //CLK transistion to latch the bit into the AD9835
    SCLKHIGH;
    dat <<= 1;  //Shift to next bit in cmd
  }
  FSYNCHIGH;  //Set FSYNC high
}
kullandıgım kodlar
Bilenler bilir . Biz maraşlilar için şehir olarak şubat ay' i bayram ,kurtuluş ,yaz in gelmesiydi. Şimdi karalar in yas in ayı oldu.