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_91 hocam, AD5932 entegeresi ile uğraşacağım da programlanması hakkında bir kaç soru sorabilir miyim?
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.
Ad9833 için kullandigin kodları paylasabirmisin.
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 (http://www.vwlowen.co.uk/arduino/AD9833-waveform-generator/AD9833-waveform-generator.htm)
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
1 Khzde ürettiği sinüs sinyalin scop görüntüsünü yayınlayabilir misiniz?
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
olsun hocam benim gibi dertli insanları görmek mutluluk veriyor :)
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?
(http://hizliresim.com/R1YJdR)
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