با سلام خدمت همه دوستان و همراهان گرامی مایکروالکام. سنسور LM35 یکی از معروف ترین سنسور های موجود در بازار برای اندازه گیری دما می باشد. این سنسور دارای خروجی آنالوگ می باشد. در این مطلب قصد دارم نحوه اندازی گیری دمای منفی و مثبت بوسیله سنسور دما LM35 را بررسی کنم. پس با من تا ادامه مطلب همراه باشید. همچنین شما میتونید سایر مطالب من رو از این لینک مطالعه و بررسی کنید.
بررسی سنسور دما LM35
این سنسور دارای 3 پین است که در تصویر زیر ترتیب آنها مشخص شده است.
به کارگیری آن در مدارات بسیار ساده است. کافیست تغذیه 5 ولت به پین های تغذیه آن اعمال کرده و خروجی آنالوگ آن را توسط مبدل ADC قرائت کنیم.
مدار راه انداز سنسور دما LM35
مدار پایه برای راه اندازی این سنسور به صورت شکل زیر میباشد.
ولتاژ خروجی این سنسور به ازای هر 1 درجه سانتیگراد، به اندازه 10 میلی ولت تغییر میکند. به عنوان مثال، اگر دمای محیط 25 درجه سانتیگراد باشد، ولتاژ خروجی سنسور طبق فرمول 250mv ،(10mvx25) خواهد بود.
این مدار تا زمانی که محدوده دمای مورد نظر برای اندازه گیری بیشتر از 2 درجه سانتیگراد باشد، مناسب است. اما اگر حداقل دما کمتر از این مقدار باشد، باید از مدار دیگری که در دیتاشیت پیشنهاد شده است استفاده کنیم.
با استفاده از این مدار، حتی تا دمای 55- درجه را نیز می توان اندازه گیری نمود. ولتاژ خروجی سنسور در این حالت، برای دما های منفی، منفی خواهد بود.
چالش اصلی
همانطور که حدس زدید، استفاده از این مدار دو چالش اساسی برای مدارات میکروکنترلری ایجاد میکند. اول نیاز داشتن به تغذیه منفی و دوم عدم امکان اندازه گیری ولتاژ منفی توسط ADC میکروکنترلر.
اندازه گیری دمای مثبت و منفی با LM35
در دیتاشیت سنسور، مداری معرفی شده است که کمتر مورد توجه قرار میگیرد. در این مدار، هر دو چالش گفته شده در بالا حل شده اند. به این مدار توجه نمایید:
در این مدار، از تغذیه تکی استفاده شده و توانایی اندازه گیری دما های منفی را نیز دارد. نکته اصلی طراحی این مدار، وجود دو عدد دیود در پایه GND سنسور است. برای تحلیل این مدار، ابتدا باید نسبت ولتاژ ها در سنسور را خوب درک کرده باشیم.
نکته مهم در این باره این است که ولتاژ خروجی سنسور، همیشه نسبت به پایه GND خود سنسور تولید میشود و نه لزوما GND مدار. به این معنا که وقتی ولتاژ پایه GND سنسور صفر ولت باشد، برای تولید ولتاژ معادل دمای منفی، باید در خروجی ولتاژی کمتر از پایه GND یعنی صفر ولت تولید کند که عددی منفی خواهد شد.
حال اگر ولتاژ پایه GND به جای صفر، 1 ولت باشد، همه ولتاژ های تولید شده در خروجی نیز به اندازه 1 ولت شیفت پیدا میکند. مثلا اگر در حالت عادی (اتصال پایه GND و صفر ولت) برای دمای 25 درجه، ولتاژ 0.25 ولت در خروجی ایجاد میشد، با اعمال ولتاژ 1 ولت به پایه GND، در همان دما، ولتاژ خروجی معادل 1+0.25 ولت یعنی 1.25 ولت خواهد بود.
به همین ترتیب اگر دما به منفی 25 درجه کاهش یابد، در حالت عادی (مدار دوم) ولتاژ خروجی 0.25- ولت میشد که توسط میکروکنترلر قابل اندازه گیری نبود. اما در مدار جدید، ولتاژ خروجی برابر (1v)+(0.25v-)=(0.75v) ولت خواهد بود که براحتی توسط میکرو قابل اندازه گیری میباشد.
اندازه گیری مقدار دما توسط میکروکنترلر با سنسور دما LM35
در این مدار، ولتاژ پایه GND سنسور، توسط دو دیود سری شده که هر کدام حدود 0.5 ولت بر روی آنها افت میکند جمعا حدود 1 ولت نسبت به GND مدار شیفت داده شده است.
چرا از کلمه “حدود” استفاده می کنم؟ به این دلیل که ولتاژ افت کرده روی دیود ها تقریبی میباشد و براحتی با دما تغییر میکند. به همین دلیل نمی توان مقدار ثابتی را برای آن در نظر گرفت.
برای حل این مشکل، باید ولتاژ خروجی، نسبت به پایه GND سنسور اندازه گیری شود نه نسبت به GND مدار. برای این منظور، علاوه بر اتصال ولتاژ خروجی سنسور به ADC میکرو، ولتاژ پایه GND سنسور نیز باید توسط ADC میکرو اندازه گیری شود. در این صورت، حتی با تغییر کردن ولتاژ افت دیود ها، چون مقدار دقیق آن هر بار توسط میکرو اندازه گیری میشود، تاثیر این تغییرات در تفاضل ولتاژ خروجی و پایه GND خنثی می گردد.
پس از اندازه گیری ولتاژ خروجی سنسور (Vo) و ولتاژ پایه گراند سنسور (Vgnd) توسط میکرو، ولتاژ نهایی خروجی سنسور از تفاضل دو ولتاژ Vtemp=Vo-Vgnd بدست می آید.
برنامه نویسی
در نمونه کد زیر نحوه اندازه گیری دما مثبت و منفی را مانند آنچه که در بالا به آن اشاره شد و شبیه سازی آن را مشاهده میکنید. این کد ها در محیط برنامه نویسی MikroC Pro For AVR نوشته شده است. این نرمافزار از جمله کامپایلر های مشهوری میباشد که برای میکروکنترلر های مختلف و به زبان های بیسیک، سی و پاسکال ارائه شده و دارای انواع کتابخانه های کاربردی میباشد. در این مثال از میکروکنترلر ATMEGA8 استفاده شده است.
unsigned int ADC_Vout_Sample; unsigned int ADC_Vgnd_Sample; float ADC_Vout_Voltage; float ADC_Vgnd_Voltage; float Temp_Value; float ADC_Voltage; float ADC_Scale_Factor = 5.0/1024.0; char txt[15]; void main() { UART1_Init(9600); ADC_Init(); while (1){ ADC_Vout_Sample = ADC_Read(0); ADC_Vgnd_Sample = ADC_Read(1); ADC_Vout_Voltage = ADC_Vout_Sample * ADC_Scale_Factor; ADC_Vgnd_Voltage = ADC_Vgnd_Sample * ADC_Scale_Factor; Temp_Value = (ADC_Vout_Voltage - ADC_Vgnd_Voltage) / 0.01; FloatToStr(Temp_Value, txt); UART1_Write_Text("Temp: "); UART1_Write_Text(txt); UART1_Write(13); UART1_Write(10); delay_ms(100); } }
از دستورات زیر برای تبدیل مقدار اعشار به رشته و نمایش آن برروی سریال ماینتور در محیط نرم افزار شبیه سازی استفاده شده است.
FloatToStr(Temp_Value, txt); UART1_Write_Text("Temp: "); UART1_Write_Text(txt);
مشاهده نتیجه
نتیجه گیری
سنسور LM35 همیشه جزو اولین انتخاب ها برای اضافه کردن قابلیت اندازه گیری دمای محیط به دستگاه ها میباشد. اما با توجه به مشخصات سنسور، برای اندازه گیری دما های منفی، باید تغذیه منفی به مدار راه اندازی سنسور اضافه کرد. همچنین توانایی اندازه گیری ولتاژ منفی نیز توسط میکرو وجود داشته باشد.
برای حل این دو مشکل، با استفاده از دو دیود معمولی، ولتاژ پایه گراند سنسور را حدود 1 ولت آفست دادیم تا ولتاژ های منفی خروجی نیز با این افزایش، به محدوده ولتاژ های مثبت بازگردند. در این حالت برای اندازه گیری دقیق میزان آفست، علاوه بر ولتاژ خروجی سنسور، ولتاژ افت کرده روی دیود ها نیز توسط پایه دیگری از ADC اندازه گیری میکنیم. ولتاژ اصلی خروجی سنسور، از تفاضل این دو ولتاژ قرائت شده بدست خواهد آمد. با استفاده از این روش، بدون نیاز به تغذیه منفی، می توان دمای منفی را توسط LM35 اندازه گیری کرد.
امیدوارم که این مطلب مورد رضایت شما قرار گرفته باشد. چنانچه در این خصوص سوال، نظر و یا اطلاعات و تجربه ای دارید، آن را از قسمت کامنت ها با ما در میان بگذارید تا در اسرع وقت پاسخ داده شود و از تجربیات و اطلاعات شما هم استفاده شود. همچنین ما را در پیج اینستاگرام مایکروالکام دنبال کنید.
بسیار خوب بود.
خیلی روان و ساده و دقیق توضیح داده شد.
از نویسنده بسیار تشکر میکنم.
لطفاً اگر در مورد سنسورهای دما نظیر این سنسور مطلبی دارید ارائه فرمائید
بسیار خوب بود.
خیلی روان و ساده و دقیق توضیح داده شد.
از نویسنده بسیار تشکر میکنم.
از اینکه مطلب مفید واقع شده خوشحالیم.
تشکر توضیحات جامع و مسئولانه ای دادید
از اینکه مطلب مفید واقع شده براتون خوشحالیم. شما هم میتونید اگر مطلبی بود منتشر کنید.
سلام جناب جعفری ممنون از توضیحات خوبتون.
فقط منظور از مقاومت ۱۸K 10% که در شکل آمد چیست؟
و اینکه میشود به جای دیود ۱N914 از دیود ST4148 استفاده کرد؟
سلام. وقت بخیر
مقاومت ۱۸ کیلو به عنوان بار حداقلی برای خروجی سنسور در دیتاشیت اومده. مقدارش زیاد مهم نیست. منتها نباید خیلی کم باشه که باعث افت ولتاژ خروجی بشه.
از هر مدل دیود معمولی میتونید استفاده کنید. ولی بهتره دیودهایی که حدود ۰.۷ ولت افت دارن استفاده کنید تا ولتاژ خروجی سنسور به اندازه کافی آفست مثبت داده شود.
موفق باشید.