اطلاعیه

Collapse
No announcement yet.

راه اندازی AD7715 (همراه با سورس و شماتیک)

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

    راه اندازی AD7715 (همراه با سورس و شماتیک)

    این مطالب رو قبلا توی سایت خودم گذاشته بودم ولی از اونجایی که بازدید کننده های اینجا بیشتره، اینجا هم میذارم شاید به درد کسی بخوره.
    ================================================== ===========

    AD7715 یک مبدل آنالوگ به دیجیتال ۱۶ بیتی از نوع سیگما دلتا است. این ADC از پروتکل SPI پشتیبانی میآ‌کند و آن را میآ‌توان به راحتی با میکروکنترلر مرتبط کرد.
    دارای رنج ولتاژ تغذیه ۳-۵ ولت ، قابلیت مدیرت توان مصرفی (مد استندبای)، و قابیلت دریافت ورودی در دوحالت تک قطبی و دیفرانسیلی است. همچنین میآ‌تواند سیگنالآ‌های ورودی را با بهرهآ‌ای قابل کنترل تقویت کند.
    ضریب غیر خطی بودن آن ۰٫۰۰۱۵ +/- است.
    این IC دارای ۴ رجیستر برای تنظیم ،تست و خروجی دیتا است.


    رجیسترهای AD7715:

    Communication Register

    Setup Register

    DATA Register

    Test Register

    توضیح رجیستر ها:

    Communication Register:

    G2 G1 STBY R/W RS0 RS1 Zero 0/DRDY


    0/DRDY:این بیت دارای دو کاربرد مختلف برای زمان های نوشتن و خواندن است.

    در زمان نوشتن در رجیستر ها، این بیت باید صفر شود تا بتوان تغییری در جیستر داد.

    در زمان خواندن، این بیت وضعیت پرچم(Flag) آماده بودن دیتا را نشان میآ‌دهد.یعنی هنگامی که این بیت صفر شد، دیتا آمادهآ‌ی ارسال است و میآ‌توان آن را از AD7715 دریافت کرد.

    Zero: برای نوشتن یا خواندن این بیت باید صفر باشد. در غیر این صورت نتایج معتبر نخواند بود.

    RS0 و RS1: توسط این بیت ها میآ‌توان طبق جدول زیر به کلیه رجیستر ها دسترسی داشت.

    RS0 RS1 رجیستر:
    ۰ ۰ ارتباط
    Setup 1 0
    TEST 0 1
    DATA 1 1



    R/W:این بیت برای انتخاب نوع عملیات به کار میآ‌رود. برای عمل نوشتن این بیت باید ۰ و برای عمل خواندن باید ۱ باشد.

    STBY : برای بردن AD7715 به مد استندبای، باید این بیت را ۱ کرد.

    G1 و G0 : توسط این بیت ها میآ‌توان طبق جدول زیر سیگنال ورودی را چند برابر تقویت کرد:
    Gain G2 G1
    1 0 0
    2 1 0
    32 0 1
    128 1 1


    Setup Register :

    FSYNC BUF B/U FS0 FS1 CLK MD0 MD1

    MD1 و MD0 :توسط این بیتآ‌ها میآ‌توان مد عملکرد AD7715 را طبق جدول زیر انتخاب کرد:

    MD0 MD1 وضعیت
    Normal Mode 0 0
    Self-Calibration 1 0
    Zero-Scale System Calibration 0 1
    Full-Scale System Calibration 1 1

    Normal Mode : مد نرمال برای عملکرد AD7715، مد پیشفرض بعد از راه اندازی یا ریست

    Self-Calibration: برای انتخاب Self-Calibration این بیت باید ۱ شود. بعد از اتمام عملیات، AD7715 به مد نرمال میآ‌رود.

    در زمان انجام Self-Calibration ، DRDY به سطح بالا رفته و هنگام پایان عملیات به سطح صفر میآ‌رود. در این هنگتم مقدار دیتا جدید آماده میآ‌باشد.

    Zero-Scale System Calibration: در این مد سیستم در مقدار ۰ کالیبره میآ‌شود.

    Full-Scale System Calibration: در این مد سیستم در حداکثر مقدار خود کالیبره میآ‌شود.


    CLK : د صورت استفاده از کلاک پالس با فرکانس ۱MHz ، این بیت باید ۰ باشد. برای کلاک پالس با فرکانس ۲٫۴۵۷۶Mhz ، مقدار ۱ انتخاب میآ‌شود.

    FS1 و FS0 : توسط این دو بیت ، حداکثر زمان تبدیل ، نمونه برداری و به روز رسانی خروجی ،طبق بر اساس جدول زیر تعیین میآ‌شود:


    B/U :در صورتی که ورودی به صورت تک قطبی باشد ،مقدار ۱ و در صورتی که ورودی دیفرانسیلی باشد، مقدار ۰ انتخاب میآ‌شود.

    BUF : توسط این بیت میآ‌توان بافر روی ورودی را فعال کرد.در صورت فعال کردن بافر، بافر به صورت سری با ورودی قرار میآ‌گیرد و امپدانس ورودی بیشتری را ارائه میآ‌کند. در نتیجه مقدار جریانی که از ورودی کشیده میآ‌شود کاهش خواد یافت و نویز خروجی به حداقل مقدار خود خواهد ر.

    برای مثال جریان مصرفی برای تمامی بهرهآ‌ها در فرکانس ۱MHz ، یا بهره ۱ و ۲ در فرکانس ۲٫۴۵۷۶MHz ، ۲۵۰uA و برای بهرهآ‌های ۳۲ و ۱۲۸ در فرکانس ۲٫۴۵۷۶MHz ، مقدار جریان مصرفی ۵۰۰uA خواهد بود.

    FSYNC: در صورتی که این بیت ۱ باشد، لاجیک کنترل فیلتر دیجیتال و لاجیک کنترل کالیبراسیون در وضعیت ریست نگه داشته خواهد شد.مدولاتور آنالوگ هم در وضعیت ریستآ‌اش خواهد بود. هنگامی که این بیت ۱ شود، فیلتر و مدولاتور شروع به پردازش دیتا خواهند کرد.

    Test Register:
    این رجیستر به منظور تست AD7715 به کار میآ‌رود و نباید توسط کاربر تغییر داده شود.

    DATA Register :
    دیتا آماده شده در این رجیستر قرار میآ‌گیرد.این رجیستر ۱۶ بیتی و فقط خواندنی است. اگر عملیات نوشتن بر روی این رجیستر انجام گیرد، نامعتبر بوده و توسط AD7715 نادیده گرفته خواهد شد.

    -------------
    پ.ن: با این که خیلی سعی کردم مطالب درست نمایش داده بشه، با این وجود به خاطر بدقلقیآ‌های ایدیتور فروم، بعضی جاها(مخصوصا جداول) یه مقدار به هم ریختگی داره.به بزرگواری خودتون ببخشید و یا به سایتم مراجعه کنید.

    #2
    راه اندازی AD7715 (همراه با سورس و شماتیک)

    مدار نمونه:

    در این مدار AD7715 به صورت تک قطبی ، با فرکانس ۲٫۴۵۷۶MHz ، نرخ به روز رسانی خروجی ۵۰Hz همراه با بافر ورودی به کار رفته است.


    ابتدا باید رجیستر ارتباط را مقدار دهی کرد:


    G2 G1 STBY R/W RS0 RS1 Zero 0/DRDY
    0 0 0 0 1 0 0 0


    Comm_reg = &B00010000

    با انتخاب ۰۱ برای بیت های RS ، رجیستر Setup برای مرحله بعد انتخاب شده است.

    حالب به مقدار دهی رجیستر Setup میآ‌پردازیم:
    FSYNC BUF B/U FS0 FS1 CLK MD0 MD1
    0 1 1 0 0 1 1 0

    توسط این رجیستر ، بافر ، مد تک قطبی،مد Self-Calibration ، منبع کلاک پالس۲٫۴۵۷۶MHz و نرخ به روز رسانی خروجی ۵۰ هرتز انتخاب شده است.

    Setup_reg = &B01100110


    بعد از مقدار دهی رجیستر ها، باید منتظر بمانیم تا دیتا اندازه گیری و آمادهآ‌ی ارسال گردد. با آماده شدن دیتا، پایه DRDY ، به سطح صفر خواهد رفت. در این هنگام میآ‌توانیم با ارسال مقدار زیر به IC ،دیتا را ۲بار و هر بار به صورت ۸ بیت دریافت کنیم.بایت پرارزش ابتدا و بایت کم ارزش در انتها دریافت خواهد شد.

    G2 G1 STBY R/W RS0 RS1 Zero 0/DRDY
    0 0 0 1 1 1 0 0

    Read_reg = &B00111000

    تبدیل دو بایت به یک اینتجر:

    Complete_data = Makeint(data_lsb , Data_msb)


    بعد از باز سازی عدد مورد نظر از بایت های دریافتی باید ولتاژ اندازه گیری شده را مشخص نماییم:




    ولتاژ مرجع میآ‌تواند به وسیله یک رگولاتور ،دیود زنر یا قطعات مخصوص تهیه ولتاژ مرجع مانند LM336 تهیه شود.

    بدیهی است که رنج اندازه گیری بین ۰ و مقدار ولتاژ رفرنس خواهد بود.

    دانلود سورس کد (Bascom-AVR):
    http://hrezaei.ir/Files/AD7715/AD7715.bas

    دانلود شماتیک (فایل پروتئوس،بدون امکان شبیه سازی):
    http://hrezaei.ir/Files/AD7715/AD7715.DSN

    دیدگاه


      #3
      پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

      تا به حال با این آی سی ها کار نکردم !
      تا چه فرکانسی رو می تونند نمونه برداری کنند ؟
      نرخ نمونه برداری اینا چقدره ؟

      دیدگاه


        #4
        پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

        نوشته اصلی توسط فرشاد اکرمی
        تا چه فرکانسی رو می تونند نمونه برداری کنند ؟
        نرخ نمونه برداری اینا چقدره ؟

        دیدگاه


          #5
          پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

          سلام.
          تشکر از دوستان عزیز که مطالب بسیار مفیدی در خصوص AD7715 در سایت گذاشتن. من حدود نیم ساعتی در سایت و اینترنت دنبال کتابخونه AD7715 برای التیم(پروتل قدیم) گشتم ولی متاسفانه چیز قابل استفاده ای پیدا نکردم. کتابخونه رو درست کردم و ضمیمه این پست کردم.
          امیدوارم مفید باشه(و چرخ رو از اول اختراع نکرده باشم :mrgreen

          کلمات کلیدی:
          AD7715 library، کتابخانه AD7715 و AD7715 Altium Library
          موفق باشید
          فایل های پیوست شده
          شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
          هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
          چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

          دیدگاه


            #6
            پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

            سلام داداش
            من هرچی تو این مقاله نگا کردم وظیفه پایه ریست رو نفهمیدم
            1-الان وقتی ریست می کنیم همه مقادیر ریجستر ها پاک می شن؟؟؟؟؟
            2-پایه cs دقیقا چیکار می کنه؟؟؟؟
            3-کسی با زبان c برنامه ای براش نوشته (کد ویژن)
            لطفا هر سه سوال رو پاسخ بدید...

            دیدگاه


              #7
              پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

              سلام
              این برنامه رو باتوجه به برنامه آقای رضایی نوشتم
              اما جواب نمی ده
              کمک کنید


              کد:
              
              /*****************************************************
              This program was produced by the
              CodeWizardAVR V1.24.6 Professional
              Automatic Program Generator
              © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
              http://www.hpinfotech.com
              e-mail:office@hpinfotech.com
              
              Project : 
              Version : 
              Date  : 7/9/2012
              Author : F4CG              
              Company : F4CG              
              Comments: 
              
              
              Chip type      : ATmega8
              Program type    : Application
              Clock frequency   : 16.000000 MHz
              Memory model    : Small
              External SRAM size : 0
              Data Stack size   : 256
              *****************************************************/
              
              #include <mega8.h> 
              #include <delay.h> 
              #include <stdlib.h> 
              #include <string.h> 
              unsigned char a ;
              unsigned char comm_reg =0b00010000;
              unsigned char setup_reg =0b01100110 ;
              unsigned char read_reg=0b00111000 ;
              unsigned char data_msb ;
              unsigned char data_isb  ;
              unsigned long int sum ;  
              char s1 [16] ;
              // Alphanumeric LCD Module functions
              #asm                
              
                .equ __lcd_port=0x12 ;PORTD
              #endasm
              #include <lcd.h>
              
              // SPI functions
              #include <spi.h>
              
              // Declare your global variables here
              
              void reset (void)
              {
              PORTC.1=0;
              
              PORTC.1=1;
              }
              char g  ;
              unsigned int n ;
              
               char javab (unsigned int a , unsigned int b )
               {
               g=0 ;
               while(g<=7){
               g++ ;
               a=a<<1 ;
               }
               n= a&b ;
               return n ;
               
               }
               
               
               
               
               
              
              
              void main(void)
              {
              // Declare your local variables here
              
              // Input/Output Ports initialization
              // Port B initialization
              // Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=In Func0=In 
              // State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=T State0=T 
              PORTB=0x00;
              DDRB=0x2C;
              
              // Port C initialization
              // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
              // State6=P State5=P State4=P State3=P State2=P State1=P State0=P 
              PORTC=0b100;
              DDRC=0b00000011;
              
              // Port D initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
              PORTD=0x00;
              DDRD=0x00;
              
              // Timer/Counter 0 initialization
              // Clock source: System Clock
              // Clock value: Timer 0 Stopped
              TCCR0=0x00;
              TCNT0=0x00;
              
              // Timer/Counter 1 initialization
              // Clock source: System Clock
              // Clock value: Timer 1 Stopped
              // Mode: Normal top=FFFFh
              // OC1A output: Discon.
              // OC1B output: Discon.
              // Noise Canceler: Off
              // Input Capture on Falling Edge
              // Timer 1 Overflow Interrupt: Off
              // Input Capture Interrupt: Off
              // Compare A Match Interrupt: Off
              // Compare B Match Interrupt: Off
              TCCR1A=0x00;
              TCCR1B=0x00;
              TCNT1H=0x00;
              TCNT1L=0x00;
              ICR1H=0x00;
              ICR1L=0x00;
              OCR1AH=0x00;
              OCR1AL=0x00;
              OCR1BH=0x00;
              OCR1BL=0x00;
              
              // Timer/Counter 2 initialization
              // Clock source: System Clock
              // Clock value: Timer 2 Stopped
              // Mode: Normal top=FFh
              // OC2 output: Disconnected
              ASSR=0x00;
              TCCR2=0x00;
              TCNT2=0x00;
              OCR2=0x00;
              
              // External Interrupt(s) initialization
              // INT0: Off
              // INT1: Off
              MCUCR=0x00;
              
              // Timer(s)/Counter(s) Interrupt(s) initialization
              TIMSK=0x00;
              
              // Analog Comparator initialization
              // Analog Comparator: Off
              // Analog Comparator Input Capture by Timer/Counter 1: Off
              ACSR=0x80;
              SFIOR=0x00;
              
              // SPI initialization
              // SPI Type: Master
              // SPI Clock Rate: 4000.000 kHz
              // SPI Clock Phase: Cycle Half
              // SPI Clock Polarity: Low
              // SPI Data Order: MSB First
              SPCR=0x50;
              SPSR=0x00;
              
              // LCD module initialization
              lcd_init(16);
              
                 
                 PORTC.0=0;
                 reset ();
                 spi (comm_reg);
                 spi (setup_reg);
                 PORTC.0=1;    
              
              
              
              
              while (1)
                 { 
                  PORTC.0=0;
                  reset (); 
                  spi (read_reg);
                  delay_ms(30); 
                  data_msb=spi (0);
                  data_isb=spi (0) ;
                  sum=javab (data_msb,data_isb) ; 
                  PORTC.0=1; 
                  itoa (sum , s1);
                  lcd_clear () ;
                  lcd_puts (s1) ; 
                  delay_ms (20);
                  
                 
                 
              
                 };
              }

              دیدگاه


                #8
                پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                نوشته اصلی توسط mmh1
                سلام داداش
                من هرچی تو این مقاله نگا کردم وظیفه پایه ریست رو نفهمیدم
                1-الان وقتی ریست می کنیم همه مقادیر ریجستر ها پاک می شن؟؟؟؟؟
                2-پایه cs دقیقا چیکار می کنه؟؟؟؟
                3-کسی با زبان c برنامه ای براش نوشته (کد ویژن)
                لطفا هر سه سوال رو پاسخ بدید...
                سلام.
                دارم یه کتابخونه برای این تراشه با پردازنده XMEGA آماده می کنم. انشاالله تستش کردم اینجا قرار میدم.
                در خصوص سوالات شما
                پایه ریست واسط سریال رو ریست میکنه و باعث میشه که تراشه به وضعت روشن شدن بازنشانی بشه یعنی بایتی که ارسال می شه برای نوشتن یا خوندن از رجیستر صفر یا همون رجیستر ارتباطی هست. این عمل به بقیه بخش های تراشه نداره ولی پایه CS کلا تراشه رو غیر فعال میکنه و خروجی ها رو های امپدانس می کنه.
                عین عبارت برگه اطلاعات تراشه به صورت زیر هست:
                The serial interface can be reset by exercising the RESET input on the part. It can also be reset by writing a series of 1s on the DIN input. If a Logic 1 is written to the AD7715 DIN line for at least 32 serial clock cycles, the serial interface is reset. This ensures that in three-wire systems that if the interface gets lost either via a software error or by some glitch in the system, it can be reset back into a known state.
                شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                دیدگاه


                  #9
                  پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                  با سلام خدمت دوستان

                  برای راه اندازی ad7715 یه کد نوشتم ولی جواب هایی که دریافت میکنم 0 هستش !!

                  من شماتیک و کدم رو باتوجه به مطلب جناب رضایی تنظیم کردم ، هر دو تا رو اینجا قرار میدم دوستانی که آشنایی کار با این IC رو دارند لطفا کمک کنن، با تشکر

                  کد:
                  /*****************************************************
                  This program was produced by the
                  CodeWizardAVR V2.05.3 Standard
                  Automatic Program Generator
                  © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
                  http://www.hpinfotech.com
                  
                  Project : 
                  Version : 
                  Date  : 2013-06-13
                  Author : Eric
                  Company : Techno-Electro
                  Comments: 
                  
                  
                  Chip type        : ATmega8
                  Program type      : Application
                  AVR Core Clock frequency: 8.000000 MHz
                  Memory model      : Small
                  External RAM size    : 0
                  Data Stack size     : 256
                  *****************************************************/
                  
                  #include <mega8.h>
                  #include <delay.h>
                  #include <stdlib.h>
                  // Standard Input/Output functions
                  #include <stdio.h>
                  
                  // SPI functions
                  #include <spi.h>
                  
                  //micros
                  #define Data_ready PORTB.1
                  #define Chip_select PORTD.7
                  #define Reset_chip PORTD.6
                  #define ad7715 PORTB.2
                  //#define num_sample 100
                  // Declare your global variables here
                  int result,result_sum,result_av,temp;
                  char a,s[6]; 
                  void ad7715_init()
                    {
                      spi(0x10);
                      spi(0x6C);
                    } 
                    
                  void reset()
                    {
                     Reset_chip=0;
                     Reset_chip=1;
                    }
                    
                  void main(void)
                  {
                  // Input/Output Ports initialization
                  // Port B initialization
                  // Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=In Func0=In 
                  // State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=T State0=T 
                  PORTB=0x00;
                  DDRB=0x2C;
                  
                  // Port C initialization
                  // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                  // State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                  PORTC=0x00;
                  DDRC=0x00;
                  
                  // Port D initialization
                  // Func7=Out Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                  // State7=1 State6=1 State5=T State4=T State3=T State2=T State1=T State0=T 
                  PORTD=0xC0;
                  DDRD=0xC0;
                  
                  // USART initialization
                  // Communication Parameters: 8 Data, 1 Stop, No Parity
                  // USART Receiver: Off
                  // USART Transmitter: On
                  // USART Mode: Asynchronous
                  // USART Baud Rate: 1200
                  UCSRA=0x00;
                  UCSRB=0x08;
                  UCSRC=0x86;
                  UBRRH=0x01;
                  UBRRL=0xA0;
                  
                  // SPI initialization
                  // SPI Type: Master
                  // SPI Clock Rate: 62.500 kHz
                  // SPI Clock Phase: Cycle Start
                  // SPI Clock Polarity: Low
                  // SPI Data Order: MSB First
                  SPCR=0x53;
                  SPSR=0x00;
                  
                  Chip_select=0;
                  reset();
                  ad7715_init();
                  Chip_select=1;
                  while (1)
                     { 
                       
                       
                            
                          while(Data_ready==1);
                          Chip_select=0;
                          reset(); 
                          spi(0x38); 
                          delay_ms(40);
                            
                          result=(spi(0)<<8);     //read MSB frist
                          result|=spi(0);      //read LSB and combine with MSB
                          delay_ms(30);
                          Chip_select=1;
                      
                          itoa(result,s);
                      
                          puts(s); 
                          
                          delay_ms(500);
                      
                      }
                     
                        
                  }

                  به رویاهات فکر کن!!

                  دیدگاه


                    #10
                    پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                    سلام من این برنامرو واسه راه اندازی AD7715 نوشتم اما خروجی دائم به ازای هر ورودی 1 میده لطفا اگه به ذهنتون میرسه چه مشکلی داره راهنمایی کنید.
                    کد:
                    This program was produced by the
                    CodeWizardAVR V2.05.3 Standard
                    Automatic Program Generator
                    © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
                    http://www.hpinfotech.com
                    
                    Project : 
                    Version : 
                    Date  : 7/11/2013
                    Author : Rouh
                    Company : SUTech
                    Comments: 
                    
                    
                    Chip type        : ATmega16A
                    Program type      : Application
                    AVR Core Clock frequency: 8.000000 MHz
                    Memory model      : Small
                    External RAM size    : 0
                    Data Stack size     : 256
                    *****************************************************/
                    
                    #include <mega16a.h>
                    
                    // Standard Input/Output functions
                    
                    #include <stdio.h>
                    #include <delay.h>
                    #include <stdlib.h>
                    // SPI functions
                    #include <spi.h>
                    
                    // Declare your global variables here
                    char comm_reg1 = 0b00000000;
                    char comm_reg2 = 0b00010000;
                    char setup_reg = 0b00011000;
                    char read_reg = 0b00111000;
                    int result=0;
                    char* a;
                    void main(void)
                    {
                    // Declare your local variables here
                    
                    // Input/Output Ports initialization
                    // Port A initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTA=0x00;
                    DDRA=0x00;
                    
                    // Port B initialization
                    // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
                    // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T 
                    PORTB=0x00;
                    DDRB=0xB0;
                    
                    // Port C initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTC=0x00;
                    DDRC=0x00;
                    
                    // Port D initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTD=0x00;
                    DDRD=0x00;
                    
                    // USART initialization
                    // Communication Parameters: 8 Data, 1 Stop, No Parity
                    // USART Receiver: On
                    // USART Transmitter: On
                    // USART Mode: Asynchronous
                    // USART Baud Rate: 9600
                    UCSRA=0x00;
                    UCSRB=0x18;
                    UCSRC=0x86;
                    UBRRH=0x00;
                    UBRRL=0x33;
                    
                    // SPI initialization
                    // SPI Type: Master
                    // SPI Clock Rate: 62.500 kHz
                    // SPI Clock Phase: Cycle Start
                    // SPI Clock Polarity: Low
                    // SPI Data Order: MSB First
                    SPCR=0x53;
                    SPSR=0x00;
                    PORTB.1=0;
                    PORTB.2=0;
                    result=spi(comm_reg1);
                    result=spi(comm_reg2);
                    result=spi(setup_reg);
                    PORTB.1=1;
                    PORTB.2=1;
                        PORTC.1=1;
                    while (1)
                       {
                       while(!(PINB.3)){
                       putchar('\n');
                       PORTB.1=0;
                       PORTB.2=0;
                       PORTB.2=1;
                       result=spi(read_reg);
                       delay_ms(40);
                       /* read the MSB using SPI */
                        result=(unsigned) spi(0)<<8;
                        /* read the LSB using SPI and combine with MSB */
                        result|=spi(0);
                            delay_ms(30);
                        PORTB.1=1;
                        itoa(result,a);
                         puts(a);
                                }
                       }
                    }

                    دیدگاه


                      #11
                      پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                      سلام آقای رضایی،واقعا ممنون که معلوماتتون رو بدون هیچ چشمداشتی به اشتراک گذاشتید.منم مثل آقا اریک بعد از راه اندازی فقط صفر ولت نشون می ده.البته برنامه رو برای اAtmega16 استفاده کردم.می خوام یه سنسور PT1000 رو بش وصل کنم.البته برای تسته مدار فعلا بجای pt1000 خودم یه ولتاژ به اندازه 0.758 ولت به پایه 7 دادم و GND شم به (-)AIN وصل کردم و (-)AIN رو هم که به GND مدار وصل کردم.اینم مقدار دهی communication and setup register

                      communication register : &B00010000
                      setup register : &B01100110
                      اینم برنامه به زبان بیسیک خودتون
                      کد:
                      Rem ************************************AD7715**************************
                      Rem             16bit Sigma-Delta ADC with SPI
                      Rem              Code By Hamidreza Rezaei
                      Rem               http:\\Hrezaei.ir
                      Rem *********************************************************************
                      
                      $regfile = "m16def.dat"
                      $crystal = 8000000
                      $baud = 19200
                      $hwstack = 128
                      $swstack = 128
                      $framesize = 128
                      
                      Config Lcd = 16 * 2
                      Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , _
                      Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
                      Cursor Off
                      Cls
                      Lcd "AD7715 Simple"
                      Print "AD7715 Simple Board"
                      Wait 5
                      Config Pinb.3 = Input
                      Config Portb.2 = Output
                      Config Portb.1 = Output
                      
                      Const Res = .3814
                      Const Res_div = .0001
                      
                      Dim Calc As Integer
                      '-----------------------Pins alias -----------------------------
                      Data_ready Alias Pinb.3
                      Chip_select Alias Portb.1
                      Reset_chip Alias Portb.2
                      
                      '-----------------------Registers alias-------------------------
                      Dim Setup_reg As Byte
                      Dim Read_reg As Byte
                      Dim Comm_reg As Byte
                      Dim Data_read As String * 16
                      '--------------------Dimension---------------------------------
                      Dim Data_msb As Byte
                      Dim Data_lsb As Byte
                      Dim Complete_data As Word
                      '--------------------registers codes------------------------
                      Comm_reg = &B00010000
                      Setup_reg = &B01100110                   
                      Read_reg = &B00111000                    
                      '----------------------------------------------------------------
                      
                      '------------------Spi Config -----------------------------------
                      Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , _
                      Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 0
                      '-----------------------------------------------------------------
                      
                      '---------------------Sendig Configurations Data To Registers------------------
                      Ad7715:
                                                                   'reset off
                      Spiinit
                      Chip_select = 0
                      Reset_chip = 0
                      Spiout Comm_reg , 1
                      Spiout Setup_reg , 1
                      Chip_select = 1
                      Reset_chip = 1
                      
                      Do
                      Bitwait Data_ready , Reset
                      Chip_select = 0
                      Reset_chip = 0
                      Reset_chip = 1
                      
                      Spiout Read_reg , 1
                      Waitms 40
                      
                      Spiin Data_msb , 1
                      Spiin Data_lsb , 1
                      Waitms 30
                      Chip_select = 1
                      
                      Complete_data = Makeint(data_lsb , Data_msb)
                      Data_read = Str(complete_data)
                      Calc = Complete_data * Res
                      Calc = Calc * Res_div
                      
                      Print Calc ; "Volt"
                      Print Data_read
                      Print
                      Print
                      Cls
                      Lcd Calc ; "Volt"
                      Print "------------------------------------------"
                      Waitms 500
                      
                      Loop
                      
                      End
                      آقای رضای
                      توروخدااااااااااااا کمکم کنید که بشدت به کمکتون نیاز دارم.

                      دیدگاه


                        #12
                        پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                        سلام
                        مشکل من اینه که وقتی ولتاژ 3.3 رو بهش میدم مقدار 65535 رو برمیگردونه که همون مقداریه که وقتی 5 ولت روبهش میدم، برمیگردونه.
                        ولی به ازای 2.5 ولت درسته و تقریبا نصف مقدار کل رو نشون میده. من این ای سی رو برای اندازه گیری ولتاژ بین 0 تا 5 ولت میخوام استفاده کنم.
                        نمیدونم ایرادش از کجاست

                        دیدگاه


                          #13
                          پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                          دو ستان عزیز اگه می خواین 7715 رو راه اندازی کنید اول در کد بسکام اقای رضایی متغییر رو Dim Calc As Single رو تغییر بدین
                          بعد اگه باز مقدار صفر ولت رو نمایش میداد پایه ریست 7715 رو به vcc وصل کنید ایشالله درست میشه. امید وارم کمکی کرده باشم

                          دیدگاه


                            #14
                            پاسخ : راه اندازی AD7715 (همراه با سورس و شماتیک)

                            شرمنده که نتونستم جوابی بدم.
                            من 4 سال پیش روی این قضیه کار کردم و الان هم اصلا جزئیات برنامه یادم نمیاد. حتی سورس ها هم توی هارد لپتاپم بود که سوخت و رفت پی کارش!!
                            الانم که تقریبا 3 ساله الکترونیک رو بوسیدم گذاشتم کنار...

                            دیدگاه

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