اطلاعیه

Collapse
No announcement yet.

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

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

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

    ممنون از راهنمائیتون دائی جان
    اینرسی حرارتی توی سیستم خیلی کم هست .
    میخوام از روش دوم که رد کردن یک تعداد معین از سیکل برق شهر هست استفاده کنم .
    واسه سوئیچ هم از SSR استفاده میکنم .
    فرمان SSR هم توسط یک پالس PWM ایجاد میشه .
    از فرکانس PWM خیلی پایین استفاده میکنم . چیزی حدود 0.3 هرتز .
    سخت است حرفت را نفهمند،

    سخت تر این است که حرفت را اشتباهی بفهمند

    دیدگاه


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

      سلام استاد ahmadmn عزیز.
      استاد من از 7780 استفاده می کنم اما اشکال بزرگی دارم. من به خوبی مقادیر را بوسیله SPI سخت افزار می خونم اما چون 2 تا 7780 را باید بخونم ناچارم از SPI نرم افزاری استفاده کنم.
      قبلا شما این کد را گذاشته بودین :

      کد:
      unsigned char softspi(unsigned char invar) 
        {
        unsigned char j,outvar;
        outvar=0;
        j=128;
        while(j>0)
          {
        SPI_Do_pin=(invar&j==j);
          SPI_clk_pin=0;
          SPI_clk_pin=1;
          if(SPI_Di_pin) outvar|=j;    
          j>>=1;    
          }
        return(outvar);
        };

      من یه نمونه مدار مطابق SPI سخت افزاری بستم و بعد از کد شما استفاده کردم با این تنظیمات(البته در Atmega 32):

      کد:
      SPI_clk_pin=PINB.7
      SPI_Di_pin=PINB.6
      SPI_Do_pin=PINB.5

      اما این کد خروجی 0 به من می ده. اما در حالت خواندن سخت افزاری مقادیر صحیح می گیرم. حالا می خواستم بپرسم کد درسته؟
      دیگه اینکه چون اینجا ما چیزی به 7780 ارسال نمی کنیم پس فکر می کنم مقادیر invar و SPI_Do_pin قابل حذف هستن درسته؟


      مورد بعد اینکه من خودم برای خوندن SPI نرم افزاری این کد را نوشتم :

      کد:
      unsigned char SoftSPI()
      {
      unsigned char Data;
      int I;
      
      PORTB.7=1;
      Data=0b00000000;
      
      while(PINB.6==0)
      {
      for(I=0;I<=7;I++)
      {
      PORTB.7=0;
      Data<<=1;
      Data=Data|PINB.6 ;
      PORTB.7=1;
      }
      return(Data);
      }

      بعد 4 بار این روال را می خونم برای خوندن 4 بایت
      کد:
      Data1=SoftSPI();
         Data2=SoftSPI();
         Data3=SoftSPI();
       Data4=SoftSPI();
      اما اشکال اینه که فقط گاهی درست می خونه مثلا اگه درست بخونه ترکیب بایت ها این هست :
      77-231-146-110
      که با مقدار خوندن SPI سخت افزاری هم مطابقت داره اما مثلا دفعه بعدی اینجوری می خونه :
      146-146-146-110
      در واقع بایت های 3 و 4 تکرار بایت 2 هستن! گاهی حتی 3 بایت آخر تکرار بایت اول هستن !
      110-110-110-110
      به نظرم اشکال از اینه که در لحظه ای که 7780 داره مقدار را تغییر می ده و عدد جدید را جایگزین می کنه عمل خوندن انجام می شه که باعث اشکال می شه .هر چند که پایین بودن DRY را هم چک می کنم اما بازهم اشکال در خوندن مقادیر هست !

      خلاصه اینکه گیج شدم. شما می تونید یه کد از خوندن نرم افزاری 7780 بزارین؟

      ببخشید یه سوال دیگه آیا برای SPI نیازی به PullUp یا PullDown کردن پورت های CLK,DRY هست؟ آخه هر جایی یه چیزی نوشته تو بعضی مدارها هم پول پ کرده تو بعضی نه .من که بدون تغییر و اتصال پول پ یا پول دان مقادیر رو می خونم.


      دیدگاه


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

        من هردو رو با 10 کیلواهم اهم پول پ می کنم.
        پایه clk رو پول پ می کنیم تا در لحظه ای که میکرو ریست میشه، اشکالی توی AD7780 پیش نیاد و آماده به خدمت باشه.
        DRY رو پول پ می کنیم چون open drain است و باید پول اپ بشه.
        منم هرچا که چند تا AD7780 دارم از SPIآ‌ نرم افزاری استفاده می کنم. اما تابحال مشکلی برام پیش نیومده.
        اینم روتین SPI نرم افزاری و روتین اصلی که ازش استفاده می کنه:
        کد:
        //********************************************************
        unsigned char ADCspi(void) 
        	{
          unsigned char j,outvar;
          outvar=0;
          j=128; 
          while(j>0)
            {
            ADC_CLK=0;
            ADC_CLK=1;
            if(ADC_RDY) outvar|=j;    
            j>>=1;    
            }
          return(outvar);
          };
        //********************************************************
        unsigned int ADC_READ_DATA(void)
          {
          unsigned int adc_val;
          adc_val=ADCspi();
          adc_val=adc_val*256+ADCspi(); 
          ADCspi();
          ADC_STATUS=ADCspi(); 
          return(adc_val);
          }; 
        //********************************************************
        با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

        دیدگاه


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

          سلام استاد.
          خیلی ممنون با بررسی کد برنامه شما متوجه اشتباهم شدم و اصلاحش کردم و دقیقا به جوابی که می خواستم رسیدم. اما سوالات ما و دانش شما انتها نداره !
          من برای اندازه گیری PT100 می خواستم از 7780 استفاده کنم. تا به حال در مدارم از منبع ولتاژ ثابت استفاده می کردم. به اینصورت که یه پ امپ LM358 را به صورت ولتاژ فالوئر می بستم تا یه منبع ثابت ولتاژ به من بده . اما با راهنمایی های دوستان متوجه شدم صحیح تر اینه که از منبع جریان ثابت استفاده کنم. سرچ کردم بیشتر منابع جریان ثابت از رگولاتور استفاده می کنند و در واقع برای جریانهای بیش از 1mA هستن. اگه من بخوام یه منبع کمتر از 1mA داشته باشم با استفاده از پ امپ باید چکار کنم؟

          دیدگاه


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

            دمت دایی
            برای اتصال PT100 به AD7780 به هیچ منبعی نیاز نداریم. نه ولتاژ نه جریان. چون AD7780 یک مبدل تناسبیه و پایه ref اون دست ماست.
            همین باعث میشه با یک مقاومت بشه PT100 رو بایاس کرد و خوند. مثل شکل زیر:

            در این شکل مقاومت های RB جریان بایاس PT100 را تعیین می کنند. در واقع رنج دمایی که PT100 اندازه می گیره بستگی به مقدار RB داره.
            نکته مهم اینه که RB پایینی که به ref+ آی سی وصله باید از نوع دقیق باشه.
            با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

            دیدگاه


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

              سلام احمد آقا.
              1-می خواستم برد ad7780 رو به صورت پک dil24 در بیارم تا بشه تو هر مداری به صورت سوکتی استفاده کرد و هر بردی مختص به سنسور خاصی باشه (loadcell,4-20 ma,k type,pt 100) !به نظرتون نویزش چه طوری میشه؟ لطفا اگه میشه نحوه کنسل کردن نویزشم تا حد قابل قبول رو بگین؟ :redface:

              2-چه طوری سنسورهای pt100 ,k type , 4-20 ma به ورودی 74hc4052 شبکه کنم؟(نوع فیلتر کردن) :redface: :redface:

              متشکر.
              ز دست دادن فرصت غصه می آورد.

              دیدگاه


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

                سلام احمد آقا.
                من شماتیک برای load cell رو این طوری کشیدم:
                http://www.4shared.com/photo/MhoZYsUI/1_online.html
                1-آیا برای شبکه بندی لودسلها درست عمل می کنه؟
                2-دو مقاومت پول پ 10کیلو اهم رو میشه حذف کرد و از پول پ داخلی میکرو استفاده کرد؟
                3-در pcb که شما گذاشتین خازن های 10uf وجود ندارن و به جاش از خازن عدسی 1uf موازی با 100 نانو استفاده کردین،که با app note آنالوگ دوایس نمی خونه،مشکلی که پیش نمی یاد؟
                4-لطفا نحوه شبکه بندی نرم افزاری چند تا AD7780 رو با فلوچارت برنامه نویسیش بزارین؟
                4-سلفی که تو pcb که کشیدین،از کجا می تونیم تهیه کنیم؟

                PCB اولیه برای ماژولار کردAD7780
                http://www.4shared.com/photo/uSwDm1ij/pcb.html

                1-دایی لطفا شماتیکای استفاده کردن از چند سنسور PT100 ,K-TYPE ,4-20 ma رو با یک 74hc4052 رو بزارین تا تبدیل به بردش کنم؟

                متشکر از وقت گذاشتن و صرف انرژیتون برای بچه های سایت. :redface: :applause: :agree:



                ز دست دادن فرصت غصه می آورد.

                دیدگاه


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

                  سلام دایی جان
                  همونطور که خودت گفتی بهتره که برای هر سنسوری یه برد مجزا داشته باشی.
                  1- بردی که کشیدی کاملا درسته دایی جان.
                  2- بله میشه از پول پ داخلی میکرو استفاده کرد. فقط مقدارش بیشتر از 30 کیلواهمه و در محیطهای صنعتی براحتی نویز می گیره.
                  3- مقدار خازن بزرگ بسته به نزدیکی یا دوری منبع از AD7730 داره. در بردی که من استفاده می کنم منبع تغذیه کنار AD7730 قرار گرفته.
                  4- چشم دایی جان
                  5- فروشگاه سلف الکترونیک توی پاساژ عباسیان.
                  با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                  دیدگاه


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

                    سلام احمد آقا.
                    1
                    -با توجه به اینکه پایه PDRST ریست و خاموش کننده AD7780 هستش می تونیم همچین شبکه بندی با AD7780 داشته باشیم؟(وقتی یکی از AD7780 ریست بشه خروجیهاش TRI ASTATE میشه،مشکلی که برای AD7780 دیگه به وجود نمی یاد)؟

                    2-لطفا اگه مشکلی به وجود نمی یاد یه روتین برنامه نویسی مثال بزنین؟

                    http://www.4shared.com/photo/6uk2cbUg/Network.html
                    ز دست دادن فرصت غصه می آورد.

                    دیدگاه


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

                      1- دقیقا دایی جان
                      2- مثلا برای 10 کانال روتین زیر استفاده میشه:
                      آغاز روتین
                      اگه RDY صفر نبود برو به انتهای روتین.
                      ADC رو بخون و در آرایه شماره channel ذخیره کن.
                      یکی به متغیر channel اضافه کن.
                      اگه channel مساوی با 10 شد صفرش کن.
                      PDRST شماره channel را صفر کن.
                      PDRST شماره channel را یک کن.
                      پایان روتین
                      با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                      دیدگاه


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

                        سلام احمد آقا.خسته نباشید!!!

                        مدار چاپی لودسل رو تو پروتئوس (ver 7.8_sp2) کامل کردم:

                        متشکر میشم نظرات تکمیلیتونو در موردش بگین تا در ماژول های بعدی اصلاح کنم. :redface:
                        لینک دانلود فایل:

                        http://eca.ir/sharing/uploads/13621194541.zip

                        شرمنده که وقت تونو می گیریم.
                        ز دست دادن فرصت غصه می آورد.

                        دیدگاه


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

                          ای ول دایی جان
                          مشکلی نداره فقط GND باید کمی قطورتر بشه، خصوصا جایی که خازنها بهش وصل میشه.
                          پروتئوس ندارم تا خودم ادیت کنم. من با پروتل نسخه 2 که تولید سال 1994 است کار می کنم.
                          با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                          دیدگاه


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

                            سلام احمد آقا.

                            متشکر که سوالاتمونو جواب میدین.

                            یک سوال دیگه در مورد pt100 داشتم?
                            من pt100 رو با وروردی ad7780 به صورت مدار زیر بستم :

                            http://www.4shared.com/photo/urwKG22D/sim_PT100.html

                            1-باید روی ref+ و ref- به ترتیب 5ولت وحدود صفر ولت داشته باشیم؟
                            2-ایا سنسور pt100 دارای مقاومت متغیر حدود 0.385 اهم بر درجه سانتیگراد هست؟اگه اینطوری باشه و سنسور و مدار بایاس رو درست شبیه سازی کرده باشیم خروجی در 850 درجه حدود 150 میلی ولت داره و با بهره 128 داخلی ad7780 به اشباع میره.اگرم بهره رو روی 1 تنظیم کنیم می تونیم با دقت 1درجه سانتی گراد از صفر تا 850 درجه رو بخونیم؟(باید چه رزولوشنی داشته باشیم؟)

                            3-برای نوشتن بر نامشم برای گرفتن دمای با دقت بالاتر بهتر از فرمول استفاده کنیم یا بهتر یک tabel تعریف کنیم تا مقدار مقاومت رو از جدول بخونه و تبدیل به دما بکنه؟

                            بازم تشکر.




                            ز دست دادن فرصت غصه می آورد.

                            دیدگاه


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

                              سلام استاد
                              با راهنمایی های شما مدار 7780 را راه انداختم اما 2 تا سوال دارم.
                              1- با تمام تمهیداتی که برای رفع نویز به کار بردم در حالت گین 128 از 3 بایتی که از آیسی می خونم بایت اول صحیحه مثلا 125 می خونم اما بایت دوم تا 2 شماره پرش داره مثلا یه بار 170 می خونه دفعه بعد 172 می خونه .طبیعتا بایت سوم به کلی غیر قابل قبوله . البته این مقدار خطا برام قابل قبوله اما سوالم اینه که آیا مدار شما هم در بایت دوم پرش مقادیر داره یا اینکه مدار من مشکل داره ؟
                              2-سوال دومم اینه که برای نمایش اعداد بزرگ روی lcd از چه روشی استفاده می کنید؟
                              من خودم از این روش استفاده می کنم:
                              کد:
                              sprintf(Datatxt,"%u",Data);
                              lcd_clear();
                              lcd_puts(Datatxt);
                              اما اشکالش اینه که اعداد بزرگتر از 65000 را صحیح نشون نمی ده. شما برای نمایش عدد های بزرگ مثلا 1000000 چه روشی استفاده می کنید؟

                              دیدگاه


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

                                ای ول دایی
                                1- اگه تاپیک رو خونده بودی چند جا ذکر کردم که دقت بیشتر از 16 بیت نمیشه گرفت. پس بایت آخر پر.
                                دقت 16 بیت هم فقط در شرایط خاصی امکان پذیره. مثلا تغذیه بسیار صاف و جعبه فلزی و ... من چند باری به این دقت رسیدم اما با کمال تاسف لودسلی پیدا نکردم اینقدر دقت داشته باشه! درواقع لودسل های معمولی بازار کمتر از 11 بیت دقت دارند پس با دقت 16 بیت خوندنشون بی معنیه.
                                الان شما داری با دقت 14 بیت می خونی که به نظر من عالیه.
                                2- من تابحال اعداد بزرگتر از 65535 رو روی LCD نمایش ندادم. کتابخانه LCD رو هم خودم نوشتم. برای نمایش اعداد بزرگ میشه رقم رقم نمایش داد. عدد رو بر 10 تقسیم می کنیم و باقیمانده تقسیم رو نمایش میدیم.
                                با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                                دیدگاه

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