اطلاعیه

Collapse
No announcement yet.

سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

    سلام دوستان برای هر جوونی مثل ماها یک سیگنال ژنراتور تو محیط کارگاه لازمه منم به این فکر افتادم که این ایسی رو درایو کنم وقعا این ایسی فوق العاده است باورتون نمیشه چقدر عالی کار میده تو هر رنج فرکاسی از 1. هرتز تا 12.5 مگا هرتز جواب میده مدل های بلاترش تا 40 مگه امیدوارم لذتش رو ببرید نوع شکل موج هایی رو که با ایسی خودم گرفتم براتون میزارم تا خیالتون از این ای سی راحت بشه موفق موید باشید التماس دعا

    #include "main.h"
    #include <stdio.h>
    #include <math.h>
    #include <LCD.h>
    #ZERO_RAM
    #use spi(DI=PIN_C0, DO=PIN_D0, CLK=PIN_D1, BITS=16,CLOCK_LOW=150,IDLE=1)
    #define FSYNC PIN_C3
    #define RESEt_AD9833 0x0100 //0000 0001 0000 0000
    #define Sinusoid_0 0x0000 //0000 0000 0000 0000
    #define Sinusoid_1 0x0800 //0000 1000 0000 0000
    #define Triangle_0 0x0002 //0000 0000 0000 0010
    #define Triangle_1 0x0802 //0000 1000 0000 0010
    #define square_0_MSB_d_2 0x0020 //0000 0000 0010 0000
    #define square_1_MSB_d_2 0x0820 //0000 1000 0010 0000
    #define square_0 0x0028 //0000 0000 0010 1000
    #define square_1 0x0828 //0000 1000 0010 1000
    #define frequency_0 0
    #define frequency_1 1
    //************************************************** **********
    void init_FREQ0_AD9833();
    void init_FREQ1_AD9833();
    void write_command_AD9833(int16 c_o_m);
    void load_FREQ_AD9833(float fe,int1 cs);

    //************************************************** **********
    void main()
    {


    port_b_pullups(TRUE);
    setup_timer_0(RTCC_INTERNAL);
    setup_oscillator(OSC_NORMAL);
    cls();
    delay_ms(100);

    init_FREQ0_AD9833();
    delay_ms(5000);
    write_command_AD9833(Triangle_0);
    delay_ms(5000);
    write_command_AD9833(square_0);
    delay_ms(5000);
    write_command_AD9833(Sinusoid_0);
    delay_ms(5000);
    load_FREQ_AD9833(200.0,frequency_0);

    while(TRUE);
    }

    //************************************************** **************
    void init_FREQ0_AD9833(){

    output_low (FSYNC);
    spi_xfer(0x2100);// 0010 0001 0000 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0x4230);// 01 00 0010 0011 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0x4000);// 01 00 0000 0000 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0xC000);// 1100 0000 0000 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0x0000);// 0000 0000 0000 0000
    output_high(FSYNC);

    }

    //************************************************** *
    void init_FREQ1_AD9833(){

    output_low (FSYNC);
    spi_xfer(0x2900);// 0010 1001 0000 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0x8230);// 10 00 0010 0011 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0x8000);// 10 00 0000 0000 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0xC000);// 1100 0000 0000 0000
    output_high(FSYNC);
    output_low (FSYNC);
    spi_xfer(0x0800);// 0000 1000 0000 0000
    output_high(FSYNC);
    }



    //************************************************** ******
    void write_command_AD9833(int16 c_o_m){


    output_low (FSYNC);
    spi_xfer(c_o_m);
    output_high(FSYNC);

    }

    //************************************************** ******
    void load_FREQ_AD9833(float fe,int1 cs){


    float32 res;
    int32 res_f;
    int16 l_b=0,m_b=0,LSB=0,MSB=0;
    int8 i=0;
    int1 te_0[28];


    res=((fe*pow (2,28.0))/24E+6);
    res = floor (res);
    res_f=res;

    while(i<14){
    te_0[i]=bit_test(res_f,i);
    i++;
    }
    while(i<28){
    te_0[i]=bit_test(res_f,i);
    i++;
    }
    i=0;
    while(i<14){
    if(te_0[i]==1) bit_set(l_b,i);
    i++;
    }
    while(i<28){
    if(te_0[i]==1) bit_set(m_b,i-14);
    i++;
    }


    if(cs==0){

    LSB=0x4000;
    MSB=0x4000;
    LSB|=l_b;
    MSB|=m_b;
    write_command_AD9833(0x2100);
    write_command_AD9833(LSB);
    write_command_AD9833(MSB);
    write_command_AD9833(0xC000);
    write_command_AD9833(0x0000);
    }
    if(cs==1){

    LSB=0x8000;
    MSB=0x8000;
    LSB|=l_b;
    MSB|=m_b;
    write_command_AD9833(0x2900);
    write_command_AD9833(LSB);
    write_command_AD9833(MSB);
    write_command_AD9833(0x0800);
    }

    }

    فهبني صبرت علی عذابک فکیف اصبرعلی فراقک
    گیرم که برعذاب توصبر کنم ،چگونه بر جدایی ات شکیبایی ورزم

    #2
    پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

    خیلی ممنون دوست عزیز! اگه براتون امکان داره شماتیک مداری که ساختین رو هم قرار بدین و یا لااقل بدین از چه اپ امپی برا تقویت خروجی این چیپ استفاده کردین؟

    دیدگاه


      #3
      پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

      سلام شما میتونید از اپ امپ هایی استفاده کنید که فرکانس کاریش بالاست میتونید سرچ بزنید ببینید فر کانس این ای سیه که معلومه حداکثر 12.5 مگ والا من فقط درایو ش کردم
      و با یک lm358 معمولی تا 2 مگ هم از مایش کردم موج جواب داد ولی همینجوری الکی بدون مطالعه دیتا شیت این کارو کردم هنوز بردش رو طراحی نکردم چون وقت نکردم خودتون هر مداری که فکر میکنید به دردتو میخوره میتونید با هر گین تقویتی استفاده کنید خروجیش 600 میلی ولته دیگه خود دانید یا علی در پناه حق
      فهبني صبرت علی عذابک فکیف اصبرعلی فراقک
      گیرم که برعذاب توصبر کنم ،چگونه بر جدایی ات شکیبایی ورزم

      دیدگاه


        #4
        پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

        می تونید از ad 844 استفاده کنید .

        دیدگاه


          #5
          پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

          این ad844 کجا پیدا میشه؟

          دیدگاه


            #6
            پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

            پایا الکترونیک به مبلغ 5000 تومان .

            دیدگاه


              #7
              پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

              آقا با اس پی آی 16 بیتی باید راهش بندازیم حتما؟

              دیدگاه


                #8
                پاسخ : سیگنال ژنراتور قابل برنامه ریزی با میکرو ad9833

                اگه spi 16 بیتی ندارید فکر کنم با بدست گرفتن کنترل cs (chip select ) قطعه بتونید با استفاده از 8 بیتی یک spi 16 بیتی داشته باشید .

                دیدگاه

                لطفا صبر کنید...
                X