ترمیستور نوعی مقاومت با ضریب منفی است که مقاومت آن بیشتر از مقاومت های استاندارد به دما بستگی دارد. مقاومت یک ترمیستور ضریب دمای منفی NTC ( https://en.wikipedia.org/wiki/Thermistor ) با افزایش دما کاهش می یابد. معادله ترمیستور Steinhart-Hart یا معادله مدل بتا را می توان برای همبستگی مقاومت ترمیستور با دمایی که سنسور در معرض آن قرار دارد استفاده کرد.
![](https://i.ytimg.com/vi/0bmSLNp3b6I/hqdefault.jpg)
این کتابخانه معادله ترمیستور Steinhart-Hart یا معادله مدل بتا را برای تبدیل مقدار adc خوانده شده از ورودی آنالوگ به دما پیاده سازی می کند.
دمای خروجی آن بر حسب سانتیگراد یا فارنهایت است.
ESP8266 دارای یک ADC 10 بیتی ، 0 تا 1 ولت است، می توانید از ESP8266 ADC برای این کتابخانه استفاده کنید . فرض کنید به ADC داخلی می روید و NTC قرار است بین -20 و +100 درجه سانتیگراد استفاده شود. مقاومت NTC توسط دیتاشیت در -20 درجه 100k و در 100 درجه 100 است. برای ارزیابی مقاومت pullup باید در نظر بگیرید که خروجی ولتاژ در پایه ADC Vout = Vpullup*(Rntc/Rntc+Rpullup) خواهد بود. برای در نظر گرفتن حداکثر Vout، که از حداکثر مقاومت ارائه شده توسط NTC Voutmax = Vpullup*Rntcmax/(Rntcmax+Rpullup) به دست می آید ، باید یک Rpullup را انتخاب کنیم که Voutmax < 1V باشد، بنابراین: Rpullup = Vpullup*Rntcmax/Voutmax – Rntcmax جایگزینی با نمونه NTC مورد نظر ما:
Rpullup = 3.3*100000/1 – 100000 = 230000.
یک مقاومت 220k این کار را انجام می دهد.
در مثالی که در اینجا پیشنهاد میکنم، من از یک مقایسهکننده آنالوگ به دیجیتال 12 بیتی ADS1015 استفاده میکنم که بسیار دقیقتر از ESP8266 ADC داخلی است.
من از کتابخانه Adafruit ADS1X15 برای این آی سی استفاده می کنم، در بالای آن کتابخانه یک کمکی ساخته ام که فقط مقدار خام ADC را که از ADS1x15 می آید به مقدار مقاومت یا ولتاژ تبدیل می کند.
هنگامی که مقاومت NTC را به دست آوردیم، می توانیم از معادله ترمیستور Steinhart-Hart یا معادله مدل بتا برای تبدیل مقدار مقاومت به دما استفاده کنیم.
یک فیلتر iir دیجیتال برای حذف خطاهای خواندن ناخواسته پیاده سازی شده است.
این کتابخانه بر روی Atom+PlatformIO توسعه یافته است که esp8266/Arduino کامپایل شده است.
کد
بیشتر بخوانید: کتابخانه esp8266/Arduino NTC (ضریب دمای منفی)