اطلاعیه

Collapse
No announcement yet.

مشکل در خواندن ورودی در adc

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

    مشکل در خواندن ورودی در adc

    سلام دوستان
    من از یک سنسور فاصله سنج که خروجی آنالوگ داره در پروژم استفاده کردم ، سنسورم رو با استفاده از ولتمتر چک کردم و رابطه ی بین خروجی و فاصله رو بدست آوردم
    وقتی این رابطه رو در برنامه می نویسم به مشکل بر می خورم
    من با دستور
    کد:
    a=read_adc(0);
    ورودی رو از adc گرفتم و با دستور
    کد:
     sprintf(str,"d=%d  ",a);
      lcd_puts(str);
    این مقدار رو بر روی ال سی دی نشون دادم
    و هم چنین با یک ولت متر خروجی adc رو مشاهده کردم
    اما عددی که ال سی دی نشون می ده با عددی ولتمتر نشون می ده زمین تا آسمون فرق داره
    اگه ممکنه بگید کجای کار رو اشتباه کردم؟!

    #2
    پاسخ : مشکل در خواندن ورودی در adc

    دوست عزیز این مشکل می تونه از خیلی چیزا باشه مثل:
    اتصال غلط AVCC ، معرفی ولتاژ مرجع اشتباهی به ADC، اشتباه در کل سخت افزار و یا خطاهایی ناشی از برنامه نویسی.
    اگر می خواین سریع به نتیجه برسین بهتره شماتیک و سورس برنامه رو بزارید.
    من که بدون اونا نمی تونم کمکی بکنم :sad:
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : مشکل در خواندن ورودی در adc

      عزیز عددی رو که از ADC میخونی اول باید تبدیل به ولتاژ کنی (اون عدد موجود در رجیسترهاست که با توجه به ولتاژ رفرنس و رزولوشن ADC باید به ولتاژ تبدیل بشه. در میکروهای AVR با ولتاژ رفرنس 5 ولت و رزولوشن 10 بیتی تبدیل اینطوری میشه)
      float volt;
      volt=a*5.0/1024.0;

      دیدگاه


        #4
        پاسخ : مشکل در خواندن ورودی در adc

        من از اتمگا8 استفاده کردم و 8 بیت رو برای شیز انتخاب نکردم اگه اشتباه نکنم باید 16 بیتی باشه من برای تبدیل از فرمولی که گفته بودین استفاده کردم اما باز هم به یک عدد بزرگ تر از قبل رسیدم :-؟؟

        دیدگاه


          #5
          پاسخ : مشکل در خواندن ورودی در adc

          نوشته اصلی توسط m a h 3 a
          من از اتمگا8 استفاده کردم و 8 بیت رو برای شیز انتخاب نکردم اگه اشتباه نکنم باید 16 بیتی باشه من برای تبدیل از فرمولی که گفته بودین استفاده کردم اما باز هم به یک عدد بزرگ تر از قبل رسیدم :-؟؟
          طبق اون چیزی که جناب "mojalan " گفتن باید جواب درست باید بدست بیاد، عددی که شما میخوین چنده؟ و ولتاژی که اعمال میکنین چنده؟ ولتاژ رفرنس رو چی گرفتین؟ نکنه رفرنس رو 3.6 ولت داخلی انتخاب کردین؟

          دیدگاه


            #6
            پاسخ : مشکل در خواندن ورودی در adc

            ولتارژ رو 5 ولت و به vref دادم
            عددی که می خونم مثلا .05 هست ولی تو خروجی 10 می بینم
            و با این فرمولی که دوستمون گفت یه عدده خیلی بزرگ تر!

            دیدگاه


              #7
              پاسخ : مشکل در خواندن ورودی در adc

              نوشته اصلی توسط m a h 3 a
              ولتارژ رو 5 ولت و به vref دادم
              عددی که می خونم مثلا .05 هست ولی تو خروجی 10 می بینم
              و با این فرمولی که دوستمون گفت یه عدده خیلی بزرگ تر!
              رفرنس رو 5 انتخاب کردین؟
              ولتاژ ورودی به کانال adc ،چند ولت هست؟
              عدد حاصل از adc چنده؟ عددی که از رجیستر ADCW میخونین؟
              این عدد باید عدد بزرگی باشه، مثلا اگه رفرنس 5 ولت باشه، و ولتاژ در ورودی کانال adc ، یک ولت باشه، باید عددی که از رجیستر adc میخونین، حدود 204 یا 205 باید باشه، که اگر از فرمولی که دوستمون گفتن استفاده کنین، ولتاژ 1 ولت بدست می آد. یه جای کار رو اشتباه میکنین.
              ولتاژ رفرنس رو روی vref خارجی تنظیم کردین دیگه؟
              هنگامی که تبدیل رو شروع میکنین، منتظر اتمام تبدیل میمونین یا نه؟

              دیدگاه


                #8
                پاسخ : مشکل در خواندن ورودی در adc

                راستش من درست سر در نمی یارم نمن تنظیمات رو اینجوری انجام دادم
                :angry: :angry: :angry: :angry:

                دیدگاه


                  #9
                  پاسخ : مشکل در خواندن ورودی در adc

                  نوشته اصلی توسط m a h 3 a
                  ولتارژ رو 5 ولت و به vref دادم
                  عددی که می خونم مثلا .05 هست ولی تو خروجی 10 می بینم
                  و با این فرمولی که دوستمون گفت یه عدده خیلی بزرگ تر!
                  1023.0 / (5.0*10) = 0.0489
                  که جواب درستیه!
                  شما تو فرمولت حتما ممیز 1023.0 , 5.0 رو بذار.
                  علاوه بر این
                  1- توصیه شده برای عملکرد بهتر ؛ فرکانس تبدیل ADC بین 50k تا 150K باشه که شما 31.250K .
                  2- اگه ولتاژ ورودیتون همواره نسبت به ولتاژ رفرنس خیلی کوچیکه مثل همین 0.05؛ بهتره از رفرنس های کمتر استفاده بشه تا دقت تبدیل بالا بره. میتونی از رفرنس 2.56 ولتی داخلی استفاده کنی

                  دیدگاه


                    #10
                    پاسخ : مشکل در خواندن ورودی در adc

                    نوشته اصلی توسط mojalan
                    2- اگه ولتاژ ورودیتون همواره نسبت به ولتاژ رفرنس خیلی کوچیکه مثل همین 0.05؛ بهتره از رفرنس های کمتر استفاده بشه تا دقت تبدیل بالا بره. میتونی از رفرنس 2.56 ولتی داخلی استفاده کنی
                    میشه در این باره کمی توضیح بدید ( نمونه کدی شماتیکی ... )

                    و یه سوال اگه ولتاژ همه رو یکی بگیریم چی باز اختلاف ایجاد می شه ؟
                    منظورم اینه که یه ولتاژ داریم مثلا همون 5 ولت حالا این رو هم به میکرو هم به AREF AVCC وصل کردیم هم به ورودی مثلا LM35 حالا خروجی LM35 باز خطا خواهد داشت یا نه ؟
                    ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
                    غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

                    دیدگاه


                      #11
                      پاسخ : مشکل در خواندن ورودی در adc

                      نه مشکلی پیش نمیاد اگه ولتاژ تغذیه میکرو و مبدل و رفرنس یکی باشه. ولتاژ رفرنس باید از بالاترین ولتاژ ورودی بزرگتر باشه.
                      در مورد استفاده از ولتاژ رفرنس 2.56 ولت داخلی هم تو همین عکسی که گذاشتین در قمست vref تنظیم میشه

                      دیدگاه


                        #12
                        پاسخ : مشکل در خواندن ورودی در adc

                        ممنون دوستان
                        مشکل من حل شد
                        همون فرومولی که گفتین جواب داد :applause:

                        دیدگاه

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