NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4996 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 3 از 3

موضوع: درخواست راهنمایی برای noise canceling

  1. #1
    عضو جدید
    تاریخ عضویت
    Oct 2007
    نوشته ها
    13
    تشکر
    7
    تشکر شده 4 بار در 3 پست

    پیش فرض درخواست راهنمایی برای noise canceling

    با سلام.
    من یه پروژه دارم که در اون 2 تا LM35 دارم و باید دمای اونها رو هر 1 ثانیه بخونم اما موقع خوندن دما پرش خیلی زیاده . با اینکه سنسورها کنار هم هستن اختلاف دما 2-3 درجه دارن و هر بار دما 2-3 درجه با دفعه قبلی تفاوت داره و گاهی در مدت یک دقیقه تا 10 درجه دما را بالا پایین نشون می ده . تا جایی که می تونستم با انواع فیلترها ولتاژ میکرو و تغذیه آنالوگ و تغذیه سنسورها را صاف کردم اما مشکل حل نشد . اخرین راه استفاده از گزینه noise canceling میکرو به نظرم رسید.
    مطابق ویزارد کدویژن از این تابع استفاده کردم :

    کد:
    Read the AD conversion result
    // with noise canceling
    
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    #asm
        in   r30,mcucr
        cbr  r30,__sm_mask
        sbr  r30,__se_bit | __sm_adc_noise_red
        out  mcucr,r30
        sleep
        cbr  r30,__se_bit
        out  mcucr,r30
    #endasm
    return adc_data;
    و بعد برای خوندن مقدار از دستور زیر استفاده کردم :

    کد:
    Temp1=read_adc(1)
    اما با اولین فعال شدن این دستور میکرو هنگ می کنه و خروجی نمی ده . کسی می دونه اشکال کارم کجاست؟ این مساله خیلی برای من حیاتی و مهمه .
    کد کامل پروژم هم اینجاست :

    می تونید برنامه منو چک کنید و ایرادشو بگین؟ خیلی برام حیاتی و مهمه.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    فکر می کنم که اگه شما در مدت 1 ثانیه ده بار مقدار دمارو اندازه بگیرید و بعد از عدد بدست اومده میانگین بگیرید تا حدود زیادی مشکلتون حل بشه. این روش در کار با adc میکروکنترلرهای avr خیلی مرسومه.

    بدین ترتیب شما باید هر 100 میلی ثانیه یکبار مقدار دما رو بخونید و به مقدار قبلی اضافه کنید و این کار رو 10 بار انجام بدید. و در انتها عدد بدست اومده رو بر 10 تقسیم کنید. حاصل این تقسیم تقریبا عدد ثابتیه.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  4. کاربران : 2 تشکر کرده اند از شما morteza_rk برای ارسال این پست سودمند:


  5. #3
    عضو جدید
    تاریخ عضویت
    Oct 2007
    نوشته ها
    13
    تشکر
    7
    تشکر شده 4 بار در 3 پست

    پیش فرض

    ممنون این روش را هم امتحان می کنم اما راستش چون در پروژه من اندازه گیری دما خیلی حیاتیه بازم فکر می کنم استفاده از Noise Canceling قابل قبول تر باشه . جالبه چند تا پروژه دیدم همشون دقیقا از همین روش استفاده کردن و تو یه جزوه هم دقیقا همین روش را دیدم . اما نمی دوم چرا من به جواب نمی رسم و میکرو متوقف می شه .شاید نکته ظریفی هست که من نمی دونم .

موضوعات مشابه

  1. درخواست راهنمایی
    توسط spgpayam در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 28-08-2013, 20:05
  2. درخواست راهنمایی
    توسط masudz در انجمن گفت و گوي آزاد
    پاسخ: 1
    آخرين نوشته: 19-01-2013, 15:31
  3. درخواست راهنمایی
    توسط atrak در انجمن AVR
    پاسخ: 6
    آخرين نوشته: 13-08-2012, 10:25
  4. طرح پروژه و درخواست راهنمایی
    توسط alamdar در انجمن stm32
    پاسخ: 2
    آخرين نوشته: 01-05-2012, 09:48
  5. درخواست راهنمایی در مورد mmc
    توسط mihman در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 19-03-2012, 14:47

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •