اطلاعیه

Collapse
No announcement yet.

نوشتن یک تابع جهت تعیین پایداری مقدار ADC

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

    نوشتن یک تابع جهت تعیین پایداری مقدار ADC

    سلام
    همونطور که از اسم تاپیک پیداست، تابعی نیاز دارم که هروقت مقدار ADC ثابت و پایدار شد 1 رو برگردونه در غیر این صورت 0 رو.
    یه روشی که به ذهن خودم رسید اینه که مدام مقدار ADC رو بخونه و تو متغیری ذخیره بکنه، مقدار فعلی با مقدار قبلی رو با هم مقایسه بکنه، اگه برابر بود یعنی پایداره و عدد 1 رو برگردونه.
    البته نتونستم جواب بگیرم، ممنون میشم کمک کنین. خیلی فوریه.
    از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

    #2
    پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار ADC

    بجای مقایسه 2 مقدار 1000 مقدار رو مقایسه کن البته به سرعت صدا زدن تابع adc شما هم ربط داره

    دیدگاه


      #3
      پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار ADC

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

      دیدگاه


        #4
        پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار ADC

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

        بهتره یک حلقه while محدود بنویسی که مدام adc رو بخونه و یک شرط که در صورت برابری adc ( هم میتونی بازه تعریف کنی و هم مقدار ثابت ) به یک متغییر یک واحد یک واحد اضاف کنه که با گذاشتن یک دستور delay در مدت زمان مورد نظر این کار رو انجام میده و در پایان حلقه که هم چنان این مقدار ثابت بود عمل مورد نظر رو انجام بده .
        که با اين درد اگر دربند درمانند درمانند
        فاميل دور : اشاره داره به درهايي که واقعا در نيستن ، مثل نقاشي در روي ديوار. يعني اين دردها مارو شبيه اون درها ميکنه .

        دیدگاه


          #5
          پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار

          نوشته اصلی توسط mehrdadttt
          سلام دوست خوبم

          بهتره یک حلقه while محدود بنویسی که مدام adc رو بخونه و یک شرط که در صورت برابری adc ( هم میتونی بازه تعریف کنی و هم مقدار ثابت ) به یک متغییر یک واحد یک واحد اضاف کنه که با گذاشتن یک دستور delay در مدت زمان مورد نظر این کار رو انجام میده و در پایان حلقه که هم چنان این مقدار ثابت بود عمل مورد نظر رو انجام بده .
          ممنون از راهنمایی..میتونم از این روشم استفاده کنم ولی مشکل اینجاست که دقیقا مشخص نیست تو چه مقداری ثابت خواهد موند...یه روش کلی میخوام
          یه مدتیه پروژه نسبتا سنگینی کار میکنم، تو چیزای ساده ای مثل این موندم، فکر بخواد از کار بیفته دیگه کاریش نمیشه کرد
          از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

          دیدگاه


            #6
            پاسخ : پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار

            سلام

            من یه روش عتیقه ای رو میگم شاید به دردتون خورد
            من حس میکنم که هدف از این کارتون اینه که یک مقدار مطمئنی رو از ADC بگیرید
            خب چرا میانگین گیری نمیکنی ؟؟؟
            پردازش هم زیاد نمیگیره . . .
            مثلا
            توی یک حلقه For ی 100 بار از ADC بخون و مقدار آنها را با هم جمع کن و در پایان عدد به دست آمده را بر 100 تقسیم کن :biggrin:
            این عدد شاید اعشار داشته باشه ولی میتونی عدد رو رند کنی ...
            این روش میتونه کمک خیلی زیادی بهت کنه . . . :agree:
            در ضمن
            چون خود ADC فرکانسش از اسیلاتور تامین میشه و خود اون فرکانس بالا هم تولید نویز میکنه حتما" سعی شود که فرکانس اسیلاتور و ADC پایین باشد .
            از مد خواب ADC Noise Reduction استفاده کنید
            از مدارهای فیلتر که نویز رو در ADC کاهش میدهد هم میتونی استفاده کنید
            موفق باشید
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


              #7
              پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار ADC

              دوتا روش تو ذهنم بود که هر دوتا بهش اشاره شده.
              یکی اندازه گیری و ذخیره و اندازه گیری مجدد و محاسبه ی اختلاف قبلی با فعلی
              دومی هم میانگین گیری.
              حالا شما روش اندازه گیری اختلاف رو چند بار تکرار کن؛ و نتیجه رو جدا ذخیره کن.برای مثلا 10 بار هم اینکار رو انجام بده.هر وقت اختلاف به اندازه ی مورد نظرت بود؛ اون نتیجه رو از بین تعداد نمونه ها بردار استفاده کن.

              دیدگاه


                #8
                پاسخ : نوشتن یک تابع جهت تعیین پایداری مقدار ADC

                دو جور شرط برای مققایسه داریم: یکی زمان، دیگری مقدار عدد ADC.
                می تونی از هر دو تاش استفاده کنی:
                کد:
                #define SAMPLE_COUNT 100
                #define MIN_DIFF 10
                #define N_AVERAGE 10
                .
                .
                .
                while(1)
                {
                 do_my_stuff();
                 .
                 x = read_adc();
                 new_value = do_average(x); //always keeps other old samples as global variables.
                 diff = abs(new_value - old_value);
                 if(diff<MIN_DIFF)
                 {
                  n++;
                  if(n>SAMPLE_COUNT)
                  {
                   do_something();
                  }
                 }
                 else
                 {
                  n=0;
                 } 
                 last_value = new_value;
                 .
                }
                بیایید با Google آشتی کنیم!

                دیدگاه

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