اطلاعیه

Collapse
No announcement yet.

کتابخانهآ‌ای برای چیپ AD7780-AD7730

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

    پاسخ : کتابخانهآ‌ای برای چیپ AD7730

    سوال: کاربرد پایه SYNC در آیسی هایی مثل 7710 و 7730؟
    فرض کنیم یه میکرو داریم و دوتا 7710 (که پایه ریست نداره!)، آیا میشه اول پایه SYNC اولی رو پایین ببریم و بعد از خوندن نتیجه تبدیل AD اول، پایه SYNC دومی رو پایین برده و نتیجه این یکی رو هم خوند؟

    دیدگاه


      پاسخ : کتابخانهآ‌ای برای چیپ AD7730

      نه دایی جان
      پایه SYNC بدرد این می خوره که چند AD7710 رو باهم سنکرون کنی.
      پایه DRDY هرکدوم که صفر شد همونو بخون.
      با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

      دیدگاه


        پاسخ : کتابخانهآ‌ای برای چیپ AD7730

        تو دیتاشیت رفرنس REF43G، نوشته که خروجی 2.5 ولت اون به میزان %0.1+- خطا داره.
        سوال: آیا %0.1، یعنی 0.001 ؟ در نتیجه در 2.5 ولت خروجی، 25+- میلی ولت خطا داریم یا 25+- میکرو ولت؟ اگه 25+- میلی ولت باشه که ظاهرا خطا خیلی بالا میره!

        اگه رابطه ولتاژ Vin و کد خروجی از ADC در حالت Bipolar بدین ترتیب باشه:
        CODE=2^(n-1)*[(Vin*Gain/Vref)+1]
        n=16 bit
        Vreff=2.5 v
        Vin=cte ثابت
        می تونیم تغییرات کد خروجی و Vreff رو اینجوری بنویسیم:
        Delta=[-32768*Vin*gain/(Vreff^2)]*Delta

        حال اگه خطا و تغییرات Vreff ما 25+- میلی ولت باشه (DeltaVreff=50 mv) و مقدار ثابتهای Vin و gain به ترتیب، Vin=12.135میلی ولت باشه و gain=16، داریم:
        DeltaCode=51
        سوال: رابطه بالا در محاسبه تغییرات کد و تغییرات ولتاژ رفرنس درسته ؟یعنی اگه هیچ نویزی نداشته باشیم همینطوری کد حاصل از تبدیل حدود 51 عدد پرش داره؟؟؟


        دیدگاه


          پاسخ : کتابخانهآ‌ای برای چیپ AD7730

          دمت دایی جان
          اینهمه حساب کتاب کردی تا به نتیجه اشتباه برسی.
          اگه دیتاشیت رو بدقت می دیدی متوجه چند نکته می شدی:
          1- برای اندازه گیری لودسل ، PT100 و ... نیازی به رفرنس دقیق نداریم و این رفرنس بدرد اندازه گیری ولتاژ می خوره.
          2- مقداری که بعنوان 0.1% نوشتی Initial Tolerance این رفرنس است. یعنی خطا از مقدار واقعی. این خطا با کالیبراسیون بطور کامل حذف می شود. محاسباتت هم درسته. 25 میلی ولته.
          3- خطایی که باید در نظر می گرفتی و نگرفتی Drift رفرنس بود که 20ppm/°C است.
          با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

          دیدگاه


            پاسخ : کتابخانهآ‌ای برای چیپ AD7730

            استاد خیلی ممنون از جوابهاتون!!
            اگه ممکنه یکم دیگه توضیح بدین
            1- برای اندازه گیری لودسل ، PT100 و ... نیازی به رفرنس دقیق نداریم و این رفرنس بدرد اندازه گیری ولتاژ می خوره.
            آره اینو متوجه شدم. هدف منم اندازه گیری دقیق ولتاژ و جریانه
            2- مقداری که بعنوان 0.1% نوشتی Initial Tolerance این رفرنس است. یعنی خطا از مقدار واقعی.
            1- خطا از مقدار واقعی بدین معنی هست؟
            2.5 ولت رفرنس ما ممکنه 2.525 الی 2.475 باشه. ولتاژ رفرنس یه جایی توی این بازه ثابت میمونه یا مدام در حال تغییر است؟
            این خطا با کالیبراسیون بطور کامل حذف می شود.
            وقتی منبع ولتاژ دقیقی نداریم چطور میشه کالیبراسیون انجام داد؟میشه بیشتر توضیح بدین.
            3- خطایی که باید در نظر می گرفتی و نگرفتی Drift رفرنس بود که 20ppm/°C است.
            آیا ppm مخفف part per million هست؟20ppm/°C یعنی 0.002%؟
            یعنی اگه دمای محیط 1 درجه بالاتر بره مقدار ولتاژ 20 میکرو ولت بالاتر میره؟
            این خطا رو چجوری میشه در نظر داشت و کنترل کرد؟

            دیدگاه


              پاسخ : کتابخانهآ‌ای برای چیپ AD7730

              دمت دایی
              1- دقیقا دایی جان. یه جایی توی این بازه ثابته و تغییر نمی کنه.
              2- کالبراسیون بدرد همینجا می خوره دایی جان. مثلا وقتی ولتاژ ورودی شما یک ولته عددی که می خونید باید 13107 باشه اما بخاطر خطای رفرنس این عدد 13120 شده. با کالیبراسیون کاری می کنید که آی سی این عدد رو 13107 بخونه. اینجوری تمام ولتاژهای دیگه رو هم درست می کنه. مهم اینه که رفرنس همیشه ثابت باشه و تغییر نکنه. اینجوری کالیبراسیون شما همیشگی خواهد بود.
              3- دقیقا دایی جان. این بدترین منبع خطا در علم الکترونیکه و تقریبا کاریش نمیشه کرد. آنالوگ دیوایس مقدارش اونقدر کم کرده که ناچیز باشه اما ما می تونیم با تثبیت دمای تابلوی برق کاملا از بین ببریمش.
              با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

              دیدگاه


                پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                کالبراسیون بدرد همینجا می خوره دایی جان. مثلا وقتی ولتاژ ورودی شما یک ولته عددی که می خونید باید 13107 باشه اما بخاطر خطای رفرنس این عدد 13120 شده. با کالیبراسیون کاری می کنید که آی سی این عدد رو 13107 بخونه. اینجوری تمام ولتاژهای دیگه رو هم درست می کنه. مهم اینه که رفرنس همیشه ثابت باشه و تغییر نکنه. اینجوری کالیبراسیون شما همیشگی خواهد بود
                1- استاد، همین 1 ولتی که از اون در کالیبراسیون میخوایم استفاده کنیم چقدر دقت باید داشته باشه؟
                2- اگه مثلا بتونیم با یک ولتمتر دیجیتال (اگه خود ولتمتره درست کالیبره باشه!!!)یه منبع ولتاژ ثابت 1 ولتی با دقت 1 میلی ولت داشته باشیم، یعنی تنها از حدود 11 بیت از دقت ADC داریم استفاده می کنیم!
                Full scale voltage: 2.5 v=+-1.25V
                2.5/0.001=2500~=2^11
                درحالی که ما توقع داشتیم در 16 بیت حدود 40میکرو ولت رزولوشن داشته باشیم؟
                2.5/65535~=40 میکروولت
                3-اصلا آیا بهتر نیست از همین رفرنس 1 ولتی با دقت 1 میلی ولت، بجای REF43G (که دقت 25 میلی ولتی داره) استفاده کنیم؟
                4- پس مزیت قطعاتی که بعنوان REFRENCE معرفی می شوند مثل همین REF43G (که اتفاقا جزء دققیقترین رفرنسهای AD است) چیه؟
                5- REF43، مقدار Drift ی برابر با 20ppm/°C داره، اگه با مولتی ترن بیایم ولتاژ 2.5 ولتیشو کم کنیم تا به ولتاژ دقیق 1.000 برسه، واسه مولتی ترن و مقاومتها هم Drift اضافه میشه؟دریفت مقاومتها و مولتی ترنه بیشتره؟؟
                6-قاطی کردم!!!! :angry:
                استاد ! بهترین راه برای داشتن یک رفرنس ولتاژ خوب و توپ چیه؟

                دیدگاه


                  پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                  1- کالیبراسیون باید با دقیقترین رفرنس انجام بشه وگرنه بی معنی میشه. شرکتهای بزرگ به اداره استاندارد رجوع می کنند که رفرنس های دقیق داره و certificate کالیبراسیون هم میده تا مشتری شما مطمئن بشه دستگاه دقیق داره می خره.
                  هرچی دقت رفرنس بیشتر باشه کالیبراسیون شما دقیقتره. اما باید ببینی به چقدر دقت نیاز داری.
                  2- فکر می کنم پست های این تاپیک رو نخوندی دایی جان. دقت و روزلوشن دو چیز متفاوتند. اگه به سایت آنالوگ دیوایس رجوع کنی رفرنس های ولتاژ بسیار دقیقتر هم پیدا می کنی.
                  3- دقت رفرنس به مقدار اولیه اون بستگی نداره بلکه به تغییرات دمایی اون مربوطه.
                  4- همین PPM پایین نسبت به تغییر دما
                  5- صددرصد دایی جان. این رفرنس های دریفت بسیار کمتری نسبت به مقاومت یا پتانسیومتر معمولی دارند. تو کارهای دقیق هیچوقت از این چیزها استفاده نمیشه.
                  6- رفرنسی انتخاب کنیم که نسبت به دما کمترین تغییرات رو داشته باشه. به نظرم چون با کالیبراسیون سر و کار نداشتی قاطی کردی. من تابحال مداری نساختم که نیاز به کالیبراسیون نداشته باشه. البته عموما کمیت های فیزیکی بعنوان مرجع کالبراسیون بکار میرن. مثلا وقتی من یه لودسل و AD7780 دارم حتما با وزنه استاندارد کالیبرش می کنم. با اینکه AD7780 بسیار دقیقتر از AD7710 است.
                  با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                  دیدگاه


                    پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                    این برتامه برای spi سخت افزاری هستش
                    #include <18F452.h>
                    #FUSES HS
                    #FUSES BORV20
                    #use delay(clock=20000000)
                    #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bi ts=8)
                    //************************************************** *****************
                    #include <stdio.h>
                    #include <LCD.h>
                    #ZERO_RAM

                    unsigned int8 data_0,data_1,data_2,data_3;

                    //************************************************** ****


                    void main()
                    {
                    unsigned int16 word;
                    port_b_pullups(TRUE);
                    setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H| SPI_CLK_T2);
                    setup_timer_0(RTCC_INTERNAL);
                    setup_timer_2(T2_DIV_BY_16,255,1);
                    setup_oscillator(OSC_NORMAL);
                    cls();

                    delay_ms(200);
                    while(TRUE){

                    data_0=spi_read (1);
                    data_1=spi_read (1);
                    data_2=spi_read (1);
                    data_3=spi_read (1);
                    printf("1=%u ",data_0);
                    printf("1=%u ",data_1);
                    printf("1=%u ",data_2);
                    printf("1=%u ",data_3);
                    printf("\r"
                    printf("\r"
                    if(data_3==73){
                    word=MAKE16(data_0, data_1);
                    com(0x80);
                    printf(WRITE,"AD_READ=%lu ",word);
                    }
                    delay_ms(100);
                    printf("\f"
                    }


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

                    دیدگاه


                      پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                      اینم برنامه spi نرم افزاری امیدوارم به دردتون بخوره موفق موید باشید

                      #include <18F452.h>
                      #FUSES HS
                      #FUSES BORV20
                      #use delay(clock=20000000)
                      #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bi ts=8)
                      #use spi(DI=PIN_D0, DO=PIN_C1, CLK=PIN_D1, BITS=8,CLOCK_LOW=150,IDLE=1)
                      //************************************************** *****************
                      #include <stdio.h>
                      #include <LCD.h>
                      #ZERO_RAM
                      //************************************************** ***********
                      unsigned int8 data_0,data_1,data_2,data_3,co;

                      //************************************************** ***********
                      void re_sp();
                      void read_sp();
                      //**********************************************





                      void main()
                      {

                      port_b_pullups(TRUE);
                      setup_oscillator(OSC_NORMAL);
                      cls();

                      delay_ms(200);
                      while(TRUE){


                      read_sp();
                      printf("\f"


                      }

                      }

                      //************************************************** *****
                      void read_sp(){

                      data_0=spi_xfer(5);
                      data_1=spi_xfer(5);
                      data_2=spi_xfer(5);
                      data_3=spi_xfer(5);

                      printf("\n1=%u ",data_0);
                      printf("\n1=%u ",data_1);
                      printf("\n1=%u ",data_2);
                      printf("\n1=%u ",data_3);
                      printf("\n1=%u ",co);
                      co++;


                      if(data_3==73) re_sp();


                      delay_ms(100);
                      }

                      //************************************************** *****
                      void re_sp(){

                      unsigned int16 word;

                      printf("\nhadi=%u ",data_0);
                      printf("\nhadi=%u ",data_1);
                      printf("\nhadi=%u ",data_2);
                      printf("\nhadi=%u ",data_3);
                      word=MAKE16(data_0, data_1);
                      com(0x80);
                      printf(WRITE,"AD_READ=%lu ",word);
                      co=0;

                      }

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

                      دیدگاه


                        پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                        سلام
                        من یه پروژه کامل با AD7730 راه اندازی کردم و خیلی خوبه تغریبا 17 بیت دقت ازش می گیرم.
                        فقط مشکلم اینه که مدارم به تخلیه بار الکتریکی خیلی حساسه و وقتی که یه جسم فلزی رو برای اولین بار می زارم روی لود سل ADC هنگ میکنه و باید مدار رو ریست کنم.
                        راه حلی به نظرتون می رسه؟

                        اینم مدارمه:
                        http://www.mediafire.com/i/?oifssdhmho2fx38

                        دیدگاه


                          پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                          سلام دایی جان
                          یکی از راههای پایدار کردن AD7730 استفاده از کلاک خارجیه. من از کلاک خروجی میکرو استفاده می کردم. یعنی کریستال میکرو را 4.9152 میگذاشتم و پایه CLKO میکرو رو به CLKin مبدل وصل می کردم بعد فیوز بیت مخصوص کلاک میکرو رو پروگرام می کردم.
                          با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                          دیدگاه


                            پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                            با عرض خسته نباشید به همه دوستان
                            تا اینجا ما ad7730 رو pcb زدیم
                            طبق نقشه اول پست pcb رو طراحی کردیم
                            در ابتدا پرش بسیار زیادی داشت و ناپایدار
                            کم کم نقشه رو به اخرین نقشه ای که جناب ahmadmn دادن تبدیل کردیم ولی همچنان از کدهای پست اول استفاده میکنیم
                            در اینجا با اعمال تغییرات ،تقریبا میشه گفت که ad7730 دیگه استارت نمیشه و عدد -1 رو داریم
                            از کد زیر استفاده کردیم
                            کد:
                             while(butt==0)
                               {
                            
                            	AD_InitHW();										// Initial AD7730
                            	AD_writeReg24(AD_REG_w_FILTER, 0x0040, 0x0000);		// Write into Filter Register
                            	AD_writeReg(AD_REG_w_MODE, 0x2098, 16);				// CONTINUOUS mode for read data
                            	
                            	AD_writeReg(AD_REG_RC_DATA ,0 ,8);
                                   //delay_ms(1000);
                               } 
                               
                               // while(PINA.5==0)
                               {
                                     sprintf(str,"van:%d  %d",AD_readCont16(),PINA.7);
                                lcd_puts(str);
                                   delay_ms(100);	
                              lcd_clear();
                              AD_stopReadCont();
                               }
                            وقتی کلید butt خورده میشه پایه rdy هر 20 ثانیه تقریبا یکبار 1 میشه ولی همچنان -1 رو در lcd داریم
                            و مورد دوم در کد جناب ahmadmn در پاسخ #19 چند متغیری تعریف نشده اند
                            از جمله ADC_GAIN2 وADC_GAIN0 و چند متغییر دیگه
                            اگه زحمت تعریف متغییرهارو بکشید ممنون
                            همیاری یعنی همکاری و دوستی

                            دیدگاه


                              پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                              همینه دیگه پروژه رو میزاریم برا شب اخر
                              خب بازم عذر خواهی تا اینجا برنامه تو پاسخ 19 جناب ahmadmn رو روی ای سی ریختم
                              متغییر هایی هم که ناشناس بودن با char تعریف کردم
                              خوب همچی درست و پرگرم کردم
                              اما اتفاقی که افتاد اینه که ad7730 ریجیستر نمی شه
                              و پایه rdy تو ی 1 گیر کرده
                              تابع ADC_FILTER_SET کار پیکربندی رو انجام میده دیگه
                              ولی انگار بی اثره
                              فقط تنها نکته ای که هست اینه که مگا 32 است و ریجیستر spi با تنظیمات شده SPCR=0x5C;
                              در جایی که در فایل SPCR=0x58; بود
                              و از کریستال استفاده شده
                              همیاری یعنی همکاری و دوستی

                              دیدگاه


                                پاسخ : کتابخانهآ‌ای برای چیپ AD7730

                                کل برنامه رو میزارم:
                                http://eca.ir/sharing/uploads/13621197511.rar
                                با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                                دیدگاه

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