آردوینو Arduinoمطالب علمی

معرفی و راه اندازی ماژول سیگنال ژنراتور AD9850 با آردوینو

این ماژول می تواند خروجی های سینوسی و مربعی تولید کند. دارای دو خروجی سینوسی و دو خروجی مربعی است. فرکانس شکل موج سینوسی بین صفر تا 40 مگاهرتز بوده و فرکانس شکل موج مربعی بین صفر تا 1 مگاهرتز است. فرکانس تولیدی بعد از حدود 20 تا 30 مگاهرتز هارمونیک های فرکانسی کمی افزایش می یایند. به دلیل وجود یک فیلتر پایین گذر 70 مگاهرتزی، سیگنال تولیدی خروجی از لحاظ سیگنال به نویز بهتر می شود. ورودی دیتا می تواند به صورت سریال و موازی بوده که توسط جامپر قابل انتخاب می باشد.

ماژول سیگنال ژنراتور AD9850 دارای یک درگاه 8 بیتی دیجیتال و یک درگاه ارتباط سریال جهت ارتباط با میکروکنترلر ها یا کامپیوترها می باشد.
دامنه شکل موج خروجی به دلیل وجود پایه PIN12 به راحتی قابل تنظیم است. ولتاژ ورودی مرجع مقایسه کننده توسط یک مقاومت متغیر تولید شده، مقاومت می تواند Duty Cycle سیگنال مربعی را روی مقادیر مختلفی تنظیم کند. این ماژول ار یک اسیلاتور کریستالی 125 مگاهرتزی فعال استفاده می کند.

ویژگی ها:

  • پروتکل های ارتباطی: سریال و پارالل
  • ولتاژ کاری: 3.3v و 5.5v
  • تولید پالس مربعی و موج سینوسی صاف از 0 تا 40 مگاهرتز
  • قابل اتصال به بردهای آردوینو
  • دو خروجی پالس مربعی و دو خروجی موج سینوسی
  • دارای کریستال داخلی 125 مگاهرتزی

کاربردها:

  • سیگنال ژنراتورهای آزمایشگاهی
  • اسیلاتورهای دستگاه های مخابراتی

ماژول سیگنال ژنراتور AD9850 توان تولید فرکانس با دقت بسیار بالا و با شکل موج های مختلف و به ویژه «موج سینوسی» را دارا می باشد. افزون بر این، این ماژول. به وسیله ی «میکروکنترلر»ها و «آردوینو» به صورت کامل قابل مدیریت و کنترل می باشد. خروجی این آی.سی. تا 20 مگاهرتز دارای خلوص و پایداری ممتازی است. روشن است که هر چه فرکانس درخواستی بالاتر رود، به کارگیری مدارهای اصلاحی برای تصحیح و بهبود شکل موج خروجی ناگزیر خواهد بود. البته برای کاربرانی که فرکانس های بالاتر را در نظر دارند، ماژول 9851 نیز در دسترس می باشد.


اساس کار این ماژول با فرکانس متغیر با استفاده ازDDS میباشد…

DDS مخفف عبارت Direct Digital Synthesis است و اصولا به «کاربرد یک ابزار برای تولیدِ سیگنال» از طریق یک «مولد فرکانس دیجیتالِ پایه» اطلاق می گردد. کاربرد عمده چنین ابزارهایی در فرستنده ها، گیرنده ها، سامانه های مخابراتی، ماهواره ای و آزمایشگاهی می باشد.

جهت کسب اطلاعات بیشتر در مورد DDS به تاپیک انجمن به لینک زیر مراجعه فرمائید :

تنها با چهار سیم می توانید این ماژول را به بردهای آردوینو متصل کنید.

 

dds ad9850 uno 600

 

ad

نمونه کد جهت راه اندازی ماژول سیگنال ژنراتور AD9850 با آردوینو:

// DDS AD9850 Board und Arduino Uno
// Serielle Ansteuerung des DDS Board
// Fest-Frequenz-Ausgabe oder Frequenz-Sweep
//
// Matthias Busse Version 0.4 vom 30.11.2013

//Arduino Uno > AD9850 Board Anschlüsse        
#define RST     11 // Arduino 11 > Board RST - Reset
#define FQ      10 // Arduino 10 > Board FQ - Frequenz Update
#define CLK      9 // Arduino  9 > Board CLK - Takt
#define DATA     8 // Arduino  8 > Board DATA - Daten

// Dann noch anschliessen
// Arduino 5V > Board VCC
// Arduino GND > Board GND

#define pulseHigh(pin) {digitalWrite(pin, 1); digitalWrite(pin, 0); }

void setup(){
  AD9850_Init();
  AD9850_Reset();
//  Wenn nur eine feste Frequenz ausgegeben werden soll:  
//  AD9850_Frequenz(200000); // Frequenz in Hz einstellen
}

void loop(){
  while(1) {
    sweep(100000, 400000, 20, 1000); // wenn Frequenzen durchgesweept werden sollen
    delay(1000);
  } 
}

void sweep(long int fstart, long int fstop, int nstep, int tms) {
// Die Frequenz linear durch sweepen
// ca. 2 ms pro Schritt werden mindestens benötigt. 
//
// fstart: Startfrequenz
// fstop: Stopfrequenz
// nstep: Anzahl der Schritte
// tms: Sweepzeit in ms
//
// Matthias Busse Version 1.0 vom 27.11.2013

  long int i, f, fdelta, tdelta;
  unsigned long t1;
  
  fdelta=(fstop-fstart)/(nstep-1);
  tdelta=tms/(nstep-1);
  for(i=0; i<nstep; i++) {
    t1=millis();
    f=fstart+(i*fdelta);
    AD9850_Frequenz(f);
    while((millis()-t1) < tdelta){}
  }
}

void AD9850_Init(){
// Ausgänge definieren  
// Matthias Busse Version 1.0 vom 27.11.2013

   pinMode(RST, OUTPUT); // alles Ausgänge
   pinMode(FQ, OUTPUT);
   pinMode(CLK , OUTPUT);
   pinMode(DATA, OUTPUT);
   digitalWrite(RST, 0); // alles 0
   digitalWrite(FQ, 0);
   digitalWrite(CLK, 0);
   digitalWrite(DATA, 0);
}

void AD9850_Reset(){
// DDS zurück setzen
// Matthias Busse Version 1.0 vom 27.11.2013

  pulseHigh(RST); //Reset Signal
  pulseHigh(CLK); //Clock Signal
  pulseHigh(FQ);  //Frequenz Update Signal
}

void AD9850_Frequenz(double frequenz){
// Die Frequenz übertragen und DDS starten  
// Matthias Busse Version 1.0 vom 27.11.2013

  long int y;
  
  frequenz=frequenz/1000000*4294967295/125; //für ein 125 MHz Quarz
  y=frequenz;
  AD9850_SendData(y);     // w4 - Frequenzdaten LSB übertragen
  AD9850_SendData(y>>8);  // w3
  AD9850_SendData(y>>16); // w2
  AD9850_SendData(y>>24); // w1 - Frequenzdaten MSB
  AD9850_SendData(0x00);  // w0 - 0x00 keine Phase
  pulseHigh(FQ);          // Die neue Frequenz ausgeben
}

void AD9850_SendData(unsigned char c) {
// 8 Bit Daten senden mit CLK Impuls
// Matthias Busse Version 1.0 vom 27.11.2013

  int i;
  
  for(i=0; i<8; i++) {
    digitalWrite(DATA, (c>>i)&0x01);
    pulseHigh(CLK);
  }
}

 

جهت استفاده از برنامه نمونه برای راه اندازی این ماژول با آردوینو از لینک های زیر استفاده کنید :

اگر در مراحل راه اندازی و انجام پروژه با مشکل روبرو شدید میتوانید در صفحه مربوط به پروژه در انجمن تخصصی برق و الکترونیک ECA  سوال خود را مطرح کنید تا توسط کاربران عزیز به جواب مورد نظر برسید.

https://www.eca.ir/forums/thread78083.html

نوشته های مشابه

1 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا