اطلاعیه

Collapse
No announcement yet.

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

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

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

    باید قبل از فرستادن عدد به LCD یه متن خالی بفرستی روش تا پاک بشه. مثلا اگه عدد نهایی 5 رقمیه باید ' ' یعنی 5 تا خالی بفرستی روی LCD و سپس عدد رو بفرستی
    با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

    دیدگاه


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

      این کار هم جواب نداد همان طوری است فکر کنم نرم افزاری باید داده های ریجیستر adc رو صفر کنم ولی نمی دان چی عددی رو بفرستم

      البته این رو فرستادم جواب نگرفتم

      b00000010
      b11000000
      b10100001

      اگر راهی دیگر است یا کارم اشکال داره بگین خواهش می کنم
      کسی کوه را برداشت که از سنگ ر یزه ها شروع کرد

      http://www.eca.ir/forum2/index.php/topic,10159.0.html


      یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

      دیدگاه


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

        سلام بچه ها من تازه دارم با این ای سی(ad7730) کار می کنم چند هفته ای می شه مطالعه در مورد این ای سی رو شروع کردم اولش فکر می کردم کار باهاش راهت تر از این حرفا باشه ولی مثل اینکه اشتباه می کردم .
        راستش من درست نفهمیدم که این ای سی چه جوری کار می کنه؟ من با بسکام کار می کنم یه سری برنامه هم از یه سایت خارجی دانلود کردم ولی برنامه رو اصلا درک نمی کنم همش از رایت کردن تو رجیستر ارتباطلات و مد و فیلتر و ... نوشته من دقیقا نمی دونم این رجیستر های این ای سی چه جوری کار می کنن اصلا باید چه اطلاعاتی را به رجیسترها بفرستیم چند بایت باید بفرستیم اصلا لزوم این ارسال اطلاعات چیه ؟ چه جوری باید اطلاعات رو بخونیم ؟ من در مورد خواندن توسط پورت spi اطلاعاتی دارم ولی اینکه باید تو رجیستر های ad7730 اعدادی رو بفرستیم چیزی نمی دونم از بروبچ با سواد خواهش می کنم منو راهنمایی کنن البته من چون تو انگلیسی کمی ضعیفم دیتا شیتش رو هم خوب نفهمیدم با تشکر
        www.ElectronShop.ir

        دیدگاه


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

          با سلام. :smile:

          عجب اصطلاحی بکار بردید: "این آیسی دیوونه کننده!" :agree:

          1- من فایل رو در سایت 4shared.com هم پلود کردم(در آدرس زیر).

          2- بله همانطور که بطور مفصل در این تاپیک این موضوع شرح داده شده، این آیسی بگونه ای عمل می کنه که برای آنکه هر کاری انجام دهد شما باید برای او دستوری ارسال نمایید، حالا این دستور یک عدد یا کد است. چه فرقی میکند Firmware باشد یا یک کد مثل 8F هگز. بنابراین برای اینکه آیسی عملیات مورد نظر شما(نظیر خواندن از رجیستر دیتای آیسی) را انجام دهد شما می بایست کد مربوط به این عملیات بخصوص را برای آن از طریق SPI ارسال نمایید. این کدها ثابت اند و شما می توانید آنها را از دیتا شیت پیدا کنید و یا اینکه از نمونه برنامه ای که پلود کردم چند نمونه را الگوبرداری نمایید. و اما استفاده از پروتکل SPI در بسکام حایز اهمیت است که در زیر مختصری به آن اشاره نموده ام.

          3- مسیر انتقال اطلاعات در SPI بصورت یک حلقه است. یعنی اگر می خواهید 8 بیت از وسیله Slave دریافت نمایید باید 8 بیت برای آن ارسال کنید که این مطلب در فایل زیر نمایش داده شده است. در بسکام شما می توانید پروتکل SPI را هم بصورت نرم افزاری و هم بصورت سخت افزاری استفاده نمایید. در حالت نرم افزاری شما می توانید هر کدام از پایه های عادی میکرو را برای این منظور استفاده کنید و شما آنها را با کانفیگ کردن Soft Spi تعریف می کنید. در حالت سخت افزاری شما تنها باید از پایه های MISO, MOSI, CLK میکرو استفاده کنید و نه پایه دیگر و نیز باید در Firmware خود SPI را سخت افزاری کانفیگ نمایید. در help بسکام توضیحات کافی، مختصر و مفیدی در مورد پروتکل SPI آورده شده است.

          4- روند کلی کار با آیسی AD7730 بدین صورت است:
          چون این توضیحات کمی طولانی شد، آن در فایل زیر قرار دادم.

          5- البته من پیشنهاد می کنم تمامی ارسال های این تاپیک را مطالعه نمایید زیرا با خطاهای احتمالی که ممکن است در هنگام کار با این آیسی روبرو شوید آشنا خواهید شد.

          با آرزوی موفقیت شما.

          دیدگاه


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

            با سلام. :smile:

            اگر منظورتون شماتیک پروتکل SPI در دیتاشیت میکروکنترلر یا Help بسکام است، که این تنها یک شماتیک جهت نمایش نحوه برقراری ارتباط در SPI است و منظور از Master Device و Slave Device دو آیسی ای است که شما می خواهید بین آن دو ارتباط SPI برقرار نمایید. یکی را به عنوان Master برگزینید و دیگری را به عنوان Slave. در این شماتیک ها معمولا سیستم کلاک نیز ترسیم می شود تا سنکرون بودن یا نبودن پروتکل را بیان نماید. که در اینجا با سیستمی آسنکرون یا غیرسنکرون سروکار داریم. یعنی هرگاه Master سیستم کلاکش را فعال کند ارتباط به دستور Master برقرار خواهد شد.

            با آرزوی موفق باشید.

            دیدگاه


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

              با سلام خدمت دوستان
              و تشکر ویژه از اقا مجید رافعی که جواب منو دادن من مطالبی که شما برام فرستادید رو تست می کنم بازم نیازمند کمک شما هستم چون فکر می کنم این ای سی قلق سختی داشته باشه و فقط اونایی که خیلی پشتکار داشتن از پسش بر اومده باشن امیدوارم منم بتونم . راستی آقا مجید من اینو برای بک پروژه صنعتی می خوام یک ب***** 100 تنی . این ای سی برای این جور موارد جواب می ده یا باید ای سی بهتری استفاده کنم با تشکر مجدد
              www.ElectronShop.ir

              دیدگاه


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

                با سلام. :smile:

                آیسی AD7799 ساخته شده در سال 2005 است ولی AD7730 ساخته شده در سال 1998 است. خوب با پیشرفت های بسیار شگرف الکترونیک می توان گفت کارآیی AD7799 بهتر از AD7730 خواهد بود، در ضمن اینکه قیمت AD7730 حدود 3 برابر AD7799 است(البته وقتی وارد ایران میشه این اختلاف کمتر میشه). و این روند در دنیای الکترونیک تازگی ندارد. بنابراین حالا که در ایران هم به AD7799 دسترسی داریم چه بهتر که از این آیسی استفاده بشود.

                در مورد استفاده از AD7730 در صنعت(البته این آیسی ها جزو بهترین ها در صنعت اند) هم فکر میکنم دوست عزیزمون ahmadmn اطلاعات جامعتر و دقیقتری دارند.

                با آرزوی موفقیت شما.

                دیدگاه


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

                  سلام
                  من یک برنامه برای ad7799 پیدا کردم از اساتید می خوام که صحت این برنامه را تاید کنند.
                  اگر هم میتونید در مورد امکانات و توضیح در مورد دیتا شید این آِ سی بدید تا همگی بتونیم ازش استفاده کنیم.
                  Code:

                  //************************************************** ************************
                  // long Read_ADC(void)
                  //
                  // Parameters: NONE
                  // Returns: long result - ADC conversion value
                  //
                  // Purpose: Read ADC conversion and return value
                  //
                  //************************************************** ************************
                  signed long Read_ADC(void)
                  {
                  signed long result;

                  result = 0L; // clear result

                  spi(0x58); // read data command
                  result = result * 256L + spi(0); // byte 1
                  result = result * 256L + spi(0); // byte 0
                  result = result - 0x800000; // offset binary to binary
                  return(result); // return result
                  }




                  Code:

                  //
                  // start up the ADC
                  //
                  ADC_CS = 0; // enable ADC
                  spi(0x08);
                  spi(0x10); // turn on Load Cell
                  spi(0x0A); // 16 Hz





                  Code:
                  //
                  // Read the data
                  //
                  j = PINB;
                  if ((j & 0x08) == 0) { // if EOC low, valid data
                  val = Read_ADC(); // read ADC value
                  if (val != 0) { // if valid data point

                  // PROCESS DATA HERE

                  }
                  }




                  Code:
                  //
                  // shut down the AD7799
                  //
                  spi(0x08);
                  spi(0x00); // turn off device
                  spi(0x0A);
                  ADC_CS = 1; // disable ADC [/left] [/left] [/left] [/left]

                  دیدگاه


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

                    اینم یک برنامه با pic
                    #include <18F452.h>
                    #fuses XT,NOWDT,PUT,BROWNOUT,NOLVP
                    #use delay(clock=4000000)
                    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)

                    // SPI chip select pin
                    #define AD7799_CS PIN_C0

                    // SPI mode definitions (for 16F and 18F PICs).
                    #define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
                    #define SPI_MODE_1 (SPI_L_TO_H)
                    #define SPI_MODE_2 (SPI_H_TO_L)
                    #define SPI_MODE_3 (SPI_H_TO_L | SPI_XMIT_L_TO_H)

                    // AD7799 commands
                    #define AD7799_READ_DATA_CMD 0x58
                    #define AD7799_WRITE_CONFIG_CMD 0x10

                    //---------------------------------------
                    // Call this function to read the 24-bit A/D result
                    // from the AD7799.
                    int32 ad7799_read_data(void)
                    {
                    int32 retval;
                    int8 msb, mid, lsb;

                    output_low(AD7799_CS);
                    spi_write(AD7799_READ_DATA_CMD);
                    msb = spi_read(0); // Data comes out MSB first
                    mid = spi_read(0);
                    lsb = spi_read(0);
                    output_high(AD7799_CS);

                    // Convert the data bytes into a 32-bit value.
                    retval = make32(0, msb, mid, lsb);

                    return(retval);
                    }

                    //---------------------------------------
                    // Call this function to write a 16-bit value
                    // to the AD7799 Configuration register.
                    void ad7799_write_config(int16 config)
                    {
                    output_low(AD7799_CS);
                    spi_write(AD7799_WRITE_CONFIG_CMD);
                    spi_write(config >> 8); // Write MSB first
                    spi_write(config); // then write the LSB
                    output_high(AD7799_CS);
                    }

                    //---------------------------------------
                    // Setup the hardware SPI module in the PIC.
                    // The AD7799 uses SPI mode 3. The maximum SPI clock
                    // rate is 2.5 MHz. For a 20 MHz PIC, the closest
                    // clock divisor that will work is 16, giving 1.25 MHz.
                    // Initialize the chip select pin to the inactive state.
                    // Do the required 500 ms initial delay mentioned on
                    // page 19 of the AD7799 data sheet.
                    void ad7799_init(void)
                    {
                    setup_spi(SPI_MASTER | SPI_MODE_3 | SPI_CLK_DIV_16);

                    output_high(AD7799_CS);

                    delay_ms(500); // Startup delay

                    // Channel = 0, Gain Select = 0, Unipolar, 2.5v input range
                    ad7799_write_config(0x0010);
                    }

                    //====================================
                    void main()
                    {
                    int32 result;

                    ad7799_init();

                    // Read the AD7799 every 500ms and display the result.
                    while(1)
                    {
                    result = ad7799_read_data(); // Get 24-bit A/D value
                    printf("%lx \n\r", result);
                    delay_ms(500);
                    }

                    }

                    دیدگاه


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

                      سلام خدمت همه دوستان
                      و خدمت آقای رافعی من سوالات زیادی در مورد ad7730 تو ذهنم هست امیدوارم به کمک شما جواب همشون رو بگیرم چند تا شو اینجا مطرح می کنم اگه کسی دیگه ای از دوستان هم می توانه جوابمو بده ممنون می شم :
                      1- وقتی ما از طریق بورت spi بایتی رو به ad7730 میفرستیم تو کدوم رجیستر قرار می گیره . منظورم اینه که ما چندین رجیستر داریم که هر کدام کار خاصی رو انجام می دن وقتی ما می نویسیم spiout b,0 و b هر عددی باشه چطور معلوم میشه که این عدد b تو کدوم رجیستر قرار می گیره ( ارتباطات ، مد و ..)
                      2- جناب رافعی شما در توضحاتی که برای من گذاشته بودید نوشته بودید در spi تا بیتی ار مستر فرستاده نشود بیتی از اسلیو برگردانده نمی شود چطور در برنامه تون در قسمت خواندن رجیستر مد یک بایت فرستادید و لی دو بایت دریافت می کنید .
                      3- جناب رافعی در برنامه تون در ابتدا مقادیر &H58 رو به Spdr و &H00 رو به Spsr نسبت دادید اینها چی هستند ؟
                      4- اگه می شه قسمت Getting out from continuous conversion رو کمی توضیح بدید این قسمت چکار می کنه و عددی که می فرستیم تو کدوم رجیسیتر قرار می گیره
                      5- من مدارمو روی برد برد بستم مشکلی از این لحاظ وجود نداره ار کریستال 4.9152 هم استفاده کردم گفتم شاید تو فرکانسهای بالا برد برد جواب نده

                      هنوز سوالات زیادی دارم که امیدوارم با کمک شما به جواباشون برسم
                      با تشکر فراوان
                      www.ElectronShop.ir

                      دیدگاه


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

                        سلام شرمنده یادم رفت آقای رافعی و دیگر دوستان چنتا سوال دیگم داشتم
                        من مدار ad7730 رو بستم و برنامه ی شما رو روی یک میکرو ریختم فکر می کنم اطلاعاتی که میکرو از روی ad7730 می خونه درست نیست . مثلا وقتی داخل مد رجیستر می نویسیم دو باره اونا می خونیم چیزی خوندیم با چیزی که فرستادیم یکی نیست وقتی هم که برق مدار و قطع و وصل می کنیم اعداد با دفعه قبل فرق داره معمولا همشون یک و یا صفر هستند منظورم بایت هایی است که از روی ad7730 می خونیم یعنی اگه ما دو بایت مثلا 10010000و 10100000 را به مد رجسیتر بفرستیم وقتی مد رجیستر رو می خونیم یا همه صفرند یا همه یک
                        مشکل از ad7730 هست یا پورت spi
                        با تشکر
                        www.ElectronShop.ir

                        دیدگاه


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

                          جناب رافعی و همچنین دیگر دوستان سلام
                          راستش من یک روز کامل روی کاتالوگ ad7730 و برنامه شما وقت گذاشتم و تقریبا فهمیدم که رجیسترها چطوری عمل می کنند و چظوری باید توی رجیستر ها نوشت و اونارو خوند مشکلم در این مورد که حل شد ولی من برنامه رو که اجرا می کنم مثلا برنامه شمارو اجرا می کنم و به یک لودسل هم به مدار وصل کردم تو خروجی هیچ عددی نمیاد همیشه Data is = 0 البته یه تغییراتی تو برنامه شما دادم مثلا ولتاژ انالوگ ورودی که انتخاب کردم -10 تا 10+ میلی ولت است و بقیه تنظیمات مانند برنامه شماست ولی بازم خروجی صفر هست علت چیه ؟ بعدش هم اگر هم میشه در مورد رجیستر های فیلتر کمی توضیح بدید مثلا CHP اگر صفر یا یک باشه چه فرقی دارن یا FAST چیه ؟ بقیه بیت ها چکار می کنن ؟ اگه توضیح مختصری بدید ممنون می شم
                          با تشکر
                          www.ElectronShop.ir

                          دیدگاه


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

                            سلام دایی جان
                            خوشحالم خودت دست بکار شدی
                            بهتره ولتاژ رو روی 20 + و 20- میلی ولت بگذاری چون بعضی از لودسل ها افست ولتاژ بالا دارند و ممکنه خاز از رنج باشن. ولتاژ های خروجی لودسل رو با یه ولتمتر دیجیتال می تونی اندازه بگیری.
                            هر دو باید 2.5 ولت باشن و با اعمال نیرو یکی چند میلی ولت ازش کم بشه و دیگری چند میلی ولت بهش اضافه بشه.
                            CHP برای رفع خطاهای افست داخلی AD7730 بکار میره. اگه جایی که آی سی کار می کنه تغییرات دما زیاده بهتره CHPآ‌ رو 1 کنی و اگه دما ثابته صفرش کن. 1 بودن CHPآ‌ سرعت نمونه برداری را 3 برابر کاهش میده پس اگه بکارت نمیاد حتما صفرش کن.
                            FAST هم برای مواقعی استفاده میشه که ما می خواهیم سرعت نمونه برداری رو کم کنیم اما دوست داریم بسرعت از تغییرات نیرو مطلع بشیم. در مصارف توزین صنعتی که قراره رله ای توسط یک لودسل فرمان قطع یا وصل بگیره FAST خیلی بدرد می خوره. اما در کارهای عادی چندان بکار نمیاد.
                            بقیه بیتها مربوط به تنظیم فیلتر هستند که هم توی دیتاشیت و هم توی برنامه ای که در این تاپیک گذاشتم میشه مطالعه کرد.
                            با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                            دیدگاه


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

                              سلام دوستان. چند تا سوال:
                              1. وقتی که از یک منبع ولتاژ ساده + 5 استفاده می کنیم، میشه input Range رو bipolar مثلا -20 تا +20 انتخاب کنیم؟
                              2. اصلا چه فرقی می کنه که input range رو مثلا+80 انتخاب کنیم یا +10؟
                              3. منظور از zero calibration و full calibration چیه؟
                              4.فرق system calibration با self calibration چیه؟
                              5.اگه امکانش هست یه نفر یه توضیح کامل در مورد رجیستر فیلتر بده. خیلی گنگه، اصلا نمی فهمم. -3dB که تو فرکانی نوشته یعنی چی؟
                              6.جداول صفحات 10 و 11 چی میگن؟
                              7.طبق جدول XIII صفحه 18، حالت ها چه فرقی با هم دارن؟
                              8.منظور از SF Range چیه و جدول XV صفحه 19 چی میگه؟

                              ببخشید که سوالاتم زیاد شد. هرکدوم از دوستان اگر حتی یکیشو جواب بدن من به جواب همه سوالاتم می رسم. پیشاپیش ممنون

                              دیدگاه


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

                                سلام دایی
                                1- بله که میشه. جهت ولتاژ تفاضلی خروجی لودسل بسته به جهت اعمال بار داره. با تغذیه 5 ولت در حالت بی باری هر دوخروجی لودسل 2.5 ولت دارند. اگر به لودسل در جهت مثبت نیرو اعمال کنیم خروجی +sig لودسل از 2.5 ولت بیشتر و خروجی -sig از 2.5 ولت کمتر میشود. تفاضل ایندو مثبت خواهد بود. اما اگر به همین لودسل در خلاف جهت نیرو اعمال کنیم ولتاژ +sig کمتر از 2.5 و ولتاژ -sig بیشتر از 2.5 ولت میشه که در نتیجه ولتاژ تفاضل ایندو منفی خواهد بود.
                                تجربه نشون میده حتی اگه قراره به لودسل در یک جهت نیرو اعمال بشه بهتره رنج را روی bipolar بگذاریم. زیرا بیشتر لودسل ها افست یا خطای ولتاژ دارند که اگر منفی باشد ما نمی توانیم در در حالت unipolar آنها را بخوانیم. لودسلی که در حالت بی باری خروجی 1- میلی ولت تفاضلی دارد را نمی توان در مد unipolar قرائت کرد.

                                2- اگر رنج را بدرستی انتخاب نکنیم از تمام دقت آی سی استفاده نمی کنیم. لودسلهای استاندارد خروجی 3mV/V دارند. یعنی به ازای 1 ولت ولتاژ تحریک در بار کامل 3 میلی ولت خروجی دارند. پس با تغذیه 5 ولت 15 میلی ولت در بار کامل خروجی ولتاژ تفاضلی لودسل خواهد بود. بنابراین بهتر رنج 20 میلی ولت را انتخاب کنیم تا از تمام دقت AD7730 استفاده کنیم.

                                3- کالیبراسیون همانطور که از اسمش پیداست تنظیم آی سی برای نشان دادن عدد صحیح می باشد. اگر هیچ نیروی به لودسل اعمال نکنیم و باز هم عدد خوانده شده از آی سی صفر نباشد با zero calibration می توانی آی سی را صفر کرد. اگر می خواهیم در نیروی 100 کیلو بیشترین عدد را از آی سی بخوانیم با full calibration اینکار انجام می شود.
                                امروزه با میکروهای پیشرفته ای مثل AVR دیگر نیاز چندانی به full calibration نداریم چون می توان بسادگی عدد خوانده شده را در یک ضریب دلخواه ضرب کرد. اما دستور zero calibration برای صفر کردن AD7730 هنوز بکار می رود.

                                4- self calibration تنظیم داخلی آی سی می باشد و ارتباطی به لودسل ندارد اما system calibration تنظیم ای سی براساس لودسل می باشد.

                                5- تغییر اعداد رجیستر فیلتر باعث تغییر در سرعت نمونه برداری خواهد شد. 3db- فرکانس قطع فیلتره. وقتی سرعت نمونه برداری رو کم و زیاد می کنیم فرکانس قطع فیلتر هم تغییر می کنه. مثلا اگه عدد فیلتر رو روی بشترین مقدار یعنی 2048 بگذارید سرعت نمونه برداری به پایین ترین حد خودش میرسه و فرکانس قطع فیلتر هم کمترین میشه. بنابراین اگه شما با سرعت بالا به لودسل نیرو اعمال کنید نمی تونید انتظار داشته باشد آی سی با همون سرعت نیروی شما رو بخونه. برای درک بیشتر باید مبحث فیلترهای دیجیتال را مطالعه کنید.

                                6-
                                با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                                دیدگاه

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