اطلاعیه

Collapse
No announcement yet.

کمک!!عدم پایداری A/D

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

    کمک!!عدم پایداری A/D

    سلام به همه دوستان.
    به جرات می تونم بگم شاید این انجمن از مفیدترین انجمن های توی نت باشه.با تشکر از همه دوستان موثر در این مورد. :applause: :applause: :applause: :applause:
    سوال: :question:
    من از سه کانال A/D میکرو (16f877a) میزان مقادیر سه مقاومت رو هر 1 ثانیه می خونم.اما وقتی اونها رو روی lcd نمایش میدم مثلا اگه مقاومت 118 اهم و میکرو تقریبا باید این مقدار رو نمایش بده ، مدام بین 110 تا 125 اهم تغییر میکنه و ثابت نمیشه.به نظر دوستان راه حل چیه؟؟؟(در ضمن کامپایلرم ccs)

    #2
    پاسخ : کمک!!عدم پایداری A/D

    سلام

    با پروتوس تست میکنید یا عملی

    پیشنهاد میکنم برنامه تون رو بزارید این جوری بهتر می شه کمک کرد.

    دیدگاه


      #3
      پاسخ : کمک!!عدم پایداری A/D

      از اینکه دیر کردم عذر مخوام.
      #include <16f877a.h>
      #FUSES HS
      #device ADC=10
      #use delay(clock=20000000)
      #include <lcd420.c>
      #define use_portb_lcd TRUE
      void main(){
      float temp,t,Tc,p;
      lcd_init();
      setup_adc_ports(AN0_AN1_AN4_VREF_VREF );
      setup_adc(ADC_CLOCK_INTERNAL);
      while(true){
      set_adc_channel(0);
      delay_us(20);
      t=read_ADC();
      t=(t*.977)/1000;
      lcd_gotoxy(1,1);
      printf(lcd_putc,"T_ch=%F",t);
      set_adc_channel(1);
      delay_us(20);
      Tc=read_ADC();
      tc=(Tc*.977)/1000;
      tc=((900*tc)/(5-tc));
      lcd_gotoxy(1,2);
      printf(lcd_putc,"T_care=%F",tc);
      set_adc_channel(4);
      delay_us(20);
      p=read_ADC();
      p=(p*.977)/1000;
      lcd_gotoxy(1,3);
      printf(lcd_putc,"p-ch=%2F",p1);
      delay_ms(1200);
      }
      }
      در ضمن مدار رو دارم عملی تست میکنم. :read: :read: :read: :question:

      دیدگاه


        #4
        پاسخ : کمک!!عدم پایداری A/D

        مشکل از برنامتون نیست.چون محدوده vref+,vref- پنج ولت هست دقت کمه و مدام اینجوری میشه.شما اگر این 2 پایر به وسیله تقسیم ولتاژ به 2 ولت یا 1 ولت وصل کنین خییییییییلی دقتتون بالاتر میره و دیگه انقد عددا عوض نمیشه
        طب اسلامی

        دیدگاه


          #5
          پاسخ : کمک!!عدم پایداری A/D

          سلام دوست عزیز
          برای خوندن مقاومت از a/d از پل استفاده کردید؟
          حرف آقا مهدی هم درسته هم درسته
          ولی اگه مشکلت فقط نوسانه میتونی یه کار دیگه هم انجام بدی سرعت نمونه برداریتو کم کن مثلا 2 ثانیه
          کلاک میکروت هک زیاده از 8 استفاده کن

          دیدگاه


            #6
            پاسخ : کمک!!عدم پایداری A/D

            سلام
            من قبلا این مشکل رو داشتم ایراد هم از تغذیه ام بود نویز روی تغذیه خطا توی سمپل گیری بوجود میاورد
            راه حلش هم گذاشتن فیلتر برا تغذیست مثلا یه دونه electrolytic 1000uوcer 100n کنار میکرو

            دیدگاه


              #7
              پاسخ : کمک!!عدم پایداری A/D

              مشکل از نویز هست. اگر داری 10 بیتی میخونی تاثیر روش زیاد میشه. پیشنهاد من اینه که اول از همه تو codewizard بزن که 8 بیتی بخونه adc رو، بعدم از یه فیلتر LC (تو کتاب ره افروز هست) برای AVCC استفاده کن


              ببخشید من وقتی این رو جواب دادم اصلاً حواسم نبود که اینجا انجمن PIC ه. با AVR قاطی کردم.
              مدیران محترم یا اعضایی که می تونن، اگه مشکلی نیست این ارسال رو حذف کنید.
              دانش فني تا به عمل تبديل نشده، ذره اي ارزش نداره. اما بعضي وقت ها بايد از دانش براي باز کردن مرزهاي جديدي در علم استفاده کرد، نه اينکه اونها رو صرفاً فقط به عمل تبديل کرد.

              دیدگاه


                #8
                پاسخ : کمک!!عدم پایداری A/D

                سلام
                دوست عزیز راهنمایی شما کاملا صحیح هست و هر دو این کارها که گفتید در مورد میکرو کنترلر pic قابل اجراست . :rolleyes: اصل موضوع یکیه با کمی تفاوت در حاشیه ها.
                دوستمون ISV 10 با کامپایلر CCS کار میکنن و این کامپایلر هم به اندازه Codevision هم قدرتمند و هم انعطاف پذیره و هم به pic wizard که عملکرد مشابه codewizard در نرم افزار codevision داره ، مجهز هست. ضمن اینکه ورودی ولتاژ مرجع هم VREF+ و VREF- هستند .
                بنده ضمن تشکر از شما ، این پست رو به فال نیک میگیرم .اگر که احتمالا با این کامپایلر آشنا نیستید ، این باب آشنایی باشه با pic و ccs


                در ادامه خدمت دوست عزیزمون ISV 10 عرض کنم که :
                * با توجه به کاربرد مدارتون تا حد امکان فرکانس اوسیلاتور و نمونه برداری و درجه تفکیک adc (که هشت یا 10 بیت هست) رو پایین بیارید چون هرچه فرکانس پایین تر باشه با تدابیر کمتر و ساده تری میتونید ADC رو تثبیت کنید . به طور مثال حتی فرکانس 1Mhz هم مشکلی برای اجرای بسیاری از پروژه ها بوجود نمیاره(در این صورت زمان تاخیر بین مراحل قرائت ADC و سایر خطوط باید به بیشتر از 20 میکرو افزایش پیدا کنه).
                به خاطر داشته باشید که هر چه ما از ابزار به نحوه خاص تری استفاده کنیم دردسر های کاربرد اونها اضافه میشه پس سرعت و دقت رو بر حسب نیاز به حد اقل قابل قبول برسونید .
                *در ورودی رگولاتور 5 ولت از خازن 1000 میکرو الکترولیتی به همراه 100 نانو سرامیکی استفاده کنید .همچنین در خروجی این رگولاتور خازن 100 میکرو و 100 نانو تاثیر گذار هستند .
                *استفاده از یک فیلتر شامل یک سلف سری 10 میکرو هانری بین +5 ولت و مداری که قرار هست ولتاژ مرجع رو بسازه(مثلا مقسم ولتاژ )و همینطور خازن فیلتر 100 نانو به همراه یک خازن الکترولیتی 100 میکرو که با ورودی های ولتاژ مرجع موازی میشن ، هم با رعایت سایر تدابیر گفته شده ، به طور واضح تاثیر گذار هست.
                به طور کلی اگر قصد نمونه برداری بسیار سریع از ADC رو ندارید قرار دادن خازن های صافی با مقادیر مناسب در بخشهای مهم مدار امکان پذیر هست . حتی ورودی های ADC هم از این امر مثتثنی نیستند و قرار دادن خازن الکترولیتی در حدود 10 میکرو فاراد تاثیر گذار هست.

                ***کاهش ولتاژ مرجع باعث افزایش دقت ADC (با کوچک شدن درجه تفکیک : 1024/Vref) میشه اما این مساله با پایداری ADC رابطه عکس داره و پیشنهاد بنده استفاده از حداکثر مقدار ولتاژ مجاز که باید 5 ولت باشه هست و کاهش اون بعد از رفع مشکل پایداری توصیه میشه.

                *مساله دیگه زمان مورد نیاز برای نمونه برداری واحد ADC هست که اگر کافی نباشه خطاهایی رو ایجاد میکنه . تاخیری که بین قرائت ADC و ادامه برنامه قرار داده می شه برای جلوگیری از همین مساله هست.
                بدون وارد شدن به بحث محاسبات باید به این نکته اشاره کرد که این زمان بر حسب موارد مختلف و پیکر بندیهای متفاوت ADC ممکن هست تا 250 میکرو ثانیه هم طول بکشه oo:
                به این ترتیب پیشنهاد میکنم تاخیر بیشتر از 20 میکرو ثانیه (که در برنامه قرار دادید) رو هم آزمایش کنید.

                ***مطالبی که گفته شد مشروط بر ثابت بودن شرایط مدار و پایداری نسبی مقدار مقاومتها در فواصل اندازه گیری هست.***

                اگر مشکل باقی بود لطفا شماتیک مدارتون رو با کمی توضیح بیشتر برای دوستانمون بگذارید تا از راهنماییهای بیشتر اونها استفاده کنید.

                با ارزوی موفقیت :nerd:

                موفقیت یک فرایند است نه یک اتفاق...

                ******** استفاده از گزينه تشكر نشانه اهميت و احترام شما به پيگيري شخص نظر دهنده است ********

                دیدگاه


                  #9
                  پاسخ : کمک!!عدم پایداری A/D

                  اگر سرعت نمونه برداری کمه ( فکر کنم گفتی 1 ثانیه یه باره که خوبه باید کم باشه) میتونی از قبل از وصل کردن به پایه a/d میکروت یه فیلتر Rc بزاری مثلا یه مقاومت 5.6k و یه خازن 1uf به صورت قابل توجهی مقدار خونده شده پایدار میشه

                  دیدگاه


                    #10
                    پاسخ : کمک!!عدم پایداری A/D

                    با سلام خدمت همه ی دوستان و اساتید محترم.
                    دوستان بنده قصد دارم تا خروجیه یه سنسور رو که از جنس پتانسیومتر هست، با A/D دیکد کنم، ولی چون بنده تا حالا با A/D کار نکردم به توصیه ی دوست با تجربمون جناب arvinfx میخوام با یه ولوم اول کار کنم و رو A/D خروجی رو ببینم.
                    راستی سنسوری که من میخوام باهاش کار کنم میدونم که خروجیه ولتاژش از 0.3 تا 4.8 ولت هست، اما من میخوام بازای مقاومتهای مختلف ولتاژها رو روی A/D ببینم.

                    حالا این سوالات برام پیش اومدن:
                    1. ولومی که انتخاب میکنم فرقی نمیکنه چند اهم باشه؟
                    2.این ولتاژ مرجعی که گاهی اوقات به پایه های A.2 , A.3 اعمال میشن داستانشون چیه و کی باید این ولتاژ اعمال بشه؟ مقدارشو از کجا باید بفهمیم؟ و اینکه راه ایجاد ولتاژ تقسیم مقاومتی هست؟
                    3. جایی خوندم که عددی که رو A/D میخونیم معادل واقعیه ولتاژ نیست و باید از فرمول زیر برا بدست آوردن ولتاژ واقعی استفاده کنیم اما راستشو بخواید من اصلا ازش سر در نیاوردم!

                    ولتاژ واقعی=حاصل تبدیل/*تراز کوانتیزه

                    میدونم سوالاتم خیلی زیاد و کلی هستند، ولی با تمام این وجود بسیار ممنون میشم از دوستان و اساتیدی که تو این زمینه کار کردن لطف کنن و بنده رو راهنمائی کنن.
                    زندگی برگ بودن در مسیر باد نیست
                    امتحان ریشه هاست
                    ریشه هم هرگز اسیر باد نیست
                    زندگی چون پیچک است
                    انتهایش میرسد پیش خدا!

                    دیدگاه


                      #11
                      پاسخ : کمک!!عدم پایداری A/D

                      نوشته اصلی توسط pama
                      حالا این سوالات برام پیش اومدن:
                      1. ولومی که انتخاب میکنم فرقی نمیکنه چند اهم باشه؟
                      من با 10 کبلو اهم آزمایشی انجام دادم و مشکلی نداشت
                      ولی هرچی مقاومت بیشتر باشه بهتره . حدود 50 کیلو اهم (چون جریان میاد پایین) :rolleyes:

                      نوشته اصلی توسط pama
                      2.این ولتاژ مرجعی که گاهی اوقات به پایه های A.2 , A.3 اعمال میشن داستانشون چیه و کی باید این ولتاژ اعمال بشه؟ مقدارشو از کجا باید بفهمیم؟ و اینکه راه ایجاد ولتاژ تقسیم مقاومتی هست؟
                      ولتاز مرجع یکی از دلیلاش جلو گیری ار تاثیر نویز منبع تغذیه در مقدار اندازه گیری است
                      یکی دیگه برای بالا بردن دقت مثلا
                      اگر سنسوری داشته باشید که 0 تا 2 و لت تغیرات داشته باشه با 0 و 5 ولت مرجع دقت کمی دارد
                      در این صورت میتونید پایه های مرجع را به 0 و 2+ وصل کنید تا دقت بالا بره
                      من نبودم آنکه از من در خیالت ساختی ...
                      پس تو هم چون دیگران چندان مرا نشناختی

                      دیدگاه


                        #12
                        پاسخ : کمک!!عدم پایداری A/D

                        با عرض سلام خدمت همه اساتید محترم

                        عددی که در خروجی AD می بینی یه عدد هگز است که با توجه به فرکانس مرجع و رزولوشن (تعداد بیت) باید اون رو به مقدار واقعیش برگردونی به طور مثال اگر از AD هشت بیتی با فرکانس مرجع 5 ولت استفاده میکنی و عدد FE رو می خونی مقدار ولتاژ برابر است با :

                        اول باید مقدار دسیمال FE رو محاسبه کنی که می شه 254
                        دقت AD هم با تقسیم 5 ولت بر 8^2 به دس می آد که میشه 0.01953
                        مقدار ولتاژ برابر است با 254*0.01953 که میشه 4.96
                        مشکل داشتن بدنیست , در مشکلات موندن بده

                        دیدگاه


                          #13
                          پاسخ : کمک!!عدم پایداری A/D

                          از بنده هم سلام و بسیار ممنونم از هر دو بزرگواری که لطف کردن و پاسخ دادن.

                          نوشته اصلی توسط shokrii
                          من با 10 کبلو اهم آزمایشی انجام دادم و مشکلی نداشت
                          ولی هرچی مقاومت بیشتر باشه بهتره . حدود 50 کیلو اهم (چون جریان میاد پایین) :rolleyes:

                          ولتاز مرجع یکی از دلیلاش جلو گیری ار تاثیر نویز منبع تغذیه در مقدار اندازه گیری است
                          یکی دیگه برای بالا بردن دقت مثلا
                          اگر سنسوری داشته باشید که 0 تا 2 و لت تغیرات داشته باشه با 0 و 5 ولت مرجع دقت کمی دارد
                          در این صورت میتونید پایه های مرجع را به 0 و 2+ وصل کنید تا دقت بالا بره
                          ok مهندس، الان درست شد که کی و چرا باید به این دو پایه ولتاژ داد :agree:
                          پس حالا که سنسور بنده خروجیش از 0.3 تا 4.8 ولت تغییرات خروجیش هست نیازی نیست به این 2 پایه چیزی وصل کنم و همون 5 ولت مرجع کافیه؟!
                          راستی نگفتید با همون تقسیم مقاومتی باید ولتاژ داده بشه درسته؟!

                          نوشته اصلی توسط majid1232
                          با عرض سلام خدمت همه اساتید محترم

                          عددی که در خروجی AD می بینی یه عدد هگز است که با توجه به فرکانس مرجع و رزولوشن (تعداد بیت) باید اون رو به مقدار واقعیش برگردونی به طور مثال اگر از AD هشت بیتی با فرکانس مرجع 5 ولت استفاده میکنی و عدد FE رو می خونی مقدار ولتاژ برابر است با :

                          اول باید مقدار دسیمال FE رو محاسبه کنی که می شه 254
                          دقت AD هم با تقسیم 5 ولت بر 8^2 به دس می آد که میشه 0.01953
                          مقدار ولتاژ برابر است با 254*0.01953 که میشه 4.96
                          از شما هم بسیار متشکرم مهندس، کمک بزرگی کردید، فقط اینکه فرکانس مرجعی که میفرمائید رو درست نفهمیدم :redface: A/D ی بنده 10 بیتی هست، اما فرکانس مرجعی که میفرمائید، منظور همون ولتاژ مرجعی هست که مهندس shokrii توضیح دادن؟!
                          زندگی برگ بودن در مسیر باد نیست
                          امتحان ریشه هاست
                          ریشه هم هرگز اسیر باد نیست
                          زندگی چون پیچک است
                          انتهایش میرسد پیش خدا!

                          دیدگاه


                            #14
                            پاسخ : کمک!!عدم پایداری A/D

                            نوشته اصلی توسط pama
                            فقط اینکه فرکانس مرجعی که میفرمائید رو درست نفهمیدم :redface: A/D ی بنده 10 بیتی هست، اما فرکانس مرجعی که میفرمائید، منظور همون ولتاژ مرجعی هست که مهندس shokrii توضیح دادن؟!
                            آره منظور همونه
                            شما باید 5 رو تقسیم به 2به توان10 کنی(چون A/D ده بیتی داری)که حاصل یک عدد میشه
                            بعد اون عدد رو ضرب در (مقدار تبدیل شده) کنی
                            همین :agree:
                            من نبودم آنکه از من در خیالت ساختی ...
                            پس تو هم چون دیگران چندان مرا نشناختی

                            دیدگاه


                              #15
                              پاسخ : کمک!!عدم پایداری A/D

                              سلام. من هم یک بار برای کسی با این میکرو یک دماسنج درست کردم ، اصلا خوب جواب نداد. البته در پروتئوس خوب بود ولی در عمل چند درجه اختلاف داشت. آخرش هم ندونستم که چرا اینجوری شده.

                              دیدگاه

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