اطلاعیه

Collapse
No announcement yet.

آموزش اندازه گیری دما با NTC

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

    آموزش اندازه گیری دما با NTC

    با سلام و احترام ،
    در اکثر پروژه های موجود در اینترنت ،از ماژول ها و سنسور هایی مثل LM35 , SHT11 , Type K و ... برای اندازه‌گیری دما استفاده میشه که مسلماً سنسور های اقتصادی و ارزان قیمتی نیستن.
    استفاده از NTC برای اندازه‌گیری دما عموما یک روش تجاری تلقی میشه و بیشتر افراد به علت عدم آشنایی با محاسبات مورد نیاز از این روش استفاده نمیکنن.
    تصمیم بر این شد که در این تاپیک نحوه اندازه‌گیری دما با استفاده از NTC به شکل مرحله به مرحله و تا حد امکان ساده توضیح داده بشه.
    روشی که در ادامه این پست توضیح داده میشه ، برای هر میکروکنترلر دارای ADC قابل پیاده‌سازی هست.
    ​آشنایی با سخت افزار :
    Click image for larger version  Name:	circuit1_9m14.png Views:	0 Size:	10.8 کیلو بایت ID:	1153070
    همونطور که میبینید ، صرفا از یک مقاومت ، یک NTC و یک خازن ( برای کاهش نویز ) استفاده شده.
    VIN به ولتاژ تغذیه میکروکنترلر که عموما 5 ولت هست متصل میشه و VOUT هم به ADC میکروکنترلر متصل میشه.
    مقدار مقاومت R1 نسبت به NTC میتونه بسته به شرایط استفاده بین 0.5 تا 5 برابر مقدار اسمی NTC باشه ، برای افزایش دقت اندازه گیری در دما های بالا ، بهتره مقدار R1 کمتر باشه و برای دما های پایین ، بهتره مقدار R1 بیشتر بشه.

    در گام اول ، مقدار خوانده شده توسط ADC را تبدیل به ولتاژ میکنیم ، احتمال زیاد قبلا از این فرمول استفاده کردید:
    Click image for larger version  Name:	formula1_1gcs.png Views:	0 Size:	16.1 کیلو بایت ID:	1153071
    ADC_Value : مقدار خوانده شده توسط ADC
    V_REF : مقدار ولتاژ مرجع انتخاب شده برای ADC (بر حسب ولت)
    Q_ADC : تفکیک پذیری ( کوانتیزاسیون ) ADC ، اگر ADC میکروکنترلر 10 بیتی باشه این مقدار 1023 هست و اگر ADC از نوع 12 بیتی باشه این مقدار 4095 هست.
    V_OUT : مقدار ولتاژ به دست آمده (ولت)

    در گام دوم ، مقدار مقاومت NTC را با فرمول تقسیم مقاومتی اندازه میگیریم :
    Click image for larger version  Name:	formula2_127x.png Views:	0 Size:	13.0 کیلو بایت ID:	1153072
    R1 : مقدار مقاومت انتخاب شده برای R1 (بر حسب اهم) که در اینجا 33000 اهم هست.
    VIN : ولتاژ تغذیه مدار (بر حسب ولت) که در اینجا 5 ولت هست.
    R_NTC : مقدار مقاومت اندازه گیری شده NTC

    در گام سوم ، محاسبه دما بر حسب کلوین انجام میشه:
    Click image for larger version  Name:	formula3_8jrx.png Views:	0 Size:	18.1 کیلو بایت ID:	1153073
    T0 : دمایی که در اون مقدار اسمی NTC اعلام شده (بر حسب کلوین) ، تقریبا در تمام موارد 25 درجه سانتی گراد معادل 298.15 کلوین هست.
    B : ضریب منحنی تغییر مقاومت NTC نسبت به دما ، که در دیتاشیت یا روی بسته بندی NTC نوشته میشه که پارامتر مهمی هست و عموما بین 3000 تا 4500 هست.
    ln : لگاریتم طبیعی
    R_NTC_0 : مقدار مقاومت اسمی NTC ( بر حسب اهم )
    T : دمای به دست آمده (بر حسب کلوین)

    در گام آخر ، دمای به دست آمده بر حسب کلوین رو با استفاده از فرمول معمول فیزیک ، تبدیل به سانتی گراد میکنیم :
    Click image for larger version

Name:	formula4_vw9h.png
Views:	46
Size:	6.9 کیلو بایت
ID:	1153075
    تتا : دمای نهایی به دست آمده بر حسب سانتی گراد
    جدیدترین ویرایش توسط HS1386; ۱۹:۵۷ ۱۴۰۳/۰۶/۱۳.

    #2
    پیاده سازی محاسبات در زبان C :
    برای محاسبه لگاریتم از تابع ()log در کتابخانه math.h استفاده میشه( یکی از کتابخانه های پیشفرض زبان C )
    یک نمونه کتابخانه شامل تابعی که محاسبات پست بالا رو انجام میده :
    کد:
    #include <math.h>
     
    #define T0      298.15
    #define R1      33000
    #define B       3500
    #define NTC0    10000
    #define V_IN    5.00
    #define V_REF   2.56
    #define Q_ADC   1023
    
    #define ADC_Value  Read_ADC() // Read ADC Value
    
    float NTC_TEMP (void){
        float V_OUT,R_NTC,T,Theta;
        V_OUT = (ADC_Value * V_REF) / Q_ADC;
        R_NTC = (V_OUT * R1)/(V_IN - V_OUT);
        T = (T0 * B)/(T0 * log(R_NTC/NTC0) + B);
        Theta = T - 273.15;
    
        return Theta;
    }​
    نکته مهم این هست که
    کد:
    Read_ADC()
    باید با تابع خواندن ADC میکروکنترلر مد نظر جایگزین بشه.
    جدیدترین ویرایش توسط HS1386; ۲۱:۴۷ ۱۴۰۳/۰۶/۱۳.

    دیدگاه


      #3
      نوشته اصلی توسط HS1386 نمایش پست ها
      پیاده سازی محاسبات در زبان C :
      .
      ممنون از کد ها
      برای کم کردن تلفات ناشی از راه اندازی خود NTC چه پیشنهادی دارید؟

      دیدگاه


        #4
        نوشته اصلی توسط axiom2600 نمایش پست ها

        ممنون از کد ها
        برای کم کردن تلفات ناشی از راه اندازی خود NTC چه پیشنهادی دارید؟
        با سلام و خسته نباشید،
        در حالت عادی تلفات توان ایجاد شده در NTC به حدی نیست که بتونه باعث تغییر دمایی محسوس و خطای اندازه گیری بشه.
        مگر اینکه از NTC و مقاومت سری با مقدار کم ، مثلا ۱۰۰ اهم استفاده بشه ( که باعث افزایش جریان عبوری،افزایش تلفات توان و گرم شدن NTC میشه ) که این کار اصولی نیست و انجام نمیشه.

        دیدگاه

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