ش | ی | د | س | چ | پ | ج |
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
ویژگیهای سنسور دمای LM35اندازهگیری دما در رنج ۵۵- تا ۱۵۰+ درجه سانتیگراد با حداکثر خطای ۰٫۵ درجه سانتیگراد خروجی به صورت خطی ، ۱۰ میلی ولت به ازای تغییر هر درجه سانتیگراد خروجی دما به صورت درجه سانتیگراد کالیبره شده است ولتاژ کاری بین ۴ تا ۳۰ ولت توضیحات ترتیب پین های این سنور همانند شکل زیر میباشد :
در دیتاشیت این سنسور دو نمونه مدار ساده از این سنسور قرار گرفته است.
مدار شماره ۱ : با استفاده از این مدار ساده فقط میتوان دما را در رنج ۲+ تا ۱۵۰+ درجه سانتیگراد اندازهگیری نمود و عملا اندازه گیری دمای منفی توسط این مدار غیرممکن میباشد. در این مدار به ازای هر ۱۰ میلی ولت ، یک درجه سانتی گراد دما تغییر میکند.
مدار شماره ۲ : توسط این مداز میتوان در بازه کامل سنسور lm 35 یعنی ۵۰- تا ۱۵۰+درجع سانتیگراد دما را اندازهگیری نمود. مقدار مقاومت R1 در این مدار از تقسیم ولتاز تعذیه سنسور بر ۵ میکرو آمپر بدست میآید.توسط این مدار میتوان ولتاژی بین ۵۵۰- میلی ولت و همچنین ۱۵۰۰ میلی ولت بدست آورد.ولی مشکل اینجاست که ADC فقط میتواند مقادیر مثبت را بگیرد ، و عملا اعمال ولتاژهای منفی به پین های ADC (آنالوگ به دیجیتال ) آردوینو غیر ممکن است.برای این منظور از مدار شماره ۳ استفاده میکنیم.
با استفاده از این مدار و انجام عملیات ADC تفاضلی میتوان دما را در رنج ۵۵- تا ۱۵۰+ درجه سانتی گراد محاسبه نمود . روش کار اینگونه است که Vout+ و Vout- را به طور جداگانه به دو پین آنالوگ دیجیتال آردوینو متصل میکینم و مقدار آنالوگ هر کدام را بدست میآوریم.سپس ابن دو مقدار را از هم کم میکنیم.
بعد از محاسبات فوق مقدار differenceValue را توسط فرمول زیر به ولتاژ تبدیل میکنیم.
با توجه به دیتاشیت این سنسور ، به ازای هر ۱۰ میلی ولت ، یک درجه سانتیگراد تغییر دما داریم . بنابراین مقدار diffferenceVlotage را در ۱۰۰ ضرب میکنیم تا دمای اندازهگیری شده بدست آید.
کدهای برنامه#include <LiquidCrystal.h> LiquidCrystal lcd(6, 7, 8, 9, 10, 11, 12); float adcValue0 , adcValue1, vlotage0 , voltage1 , difference , differenceVoltage , temp; void setup() { lcd.begin(16, 2); Serial.begin(9600); } void loop() { adcValue0 = analogRead(A0); adcValue1 = analogRead(A1); difference = adcValue0 - adcValue1; differenceVoltage = (difference * 5) / 1023; temp = differenceVoltage * 100; lcd.print("Dama : "); lcd.print(temp); lcd.print("C"); delay(500); lcd.clear(); } |
دریافت فایل های پروژه |
float temp; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() { temp = analogRead(tempPin); temp = temp * 0.48828125; Serial.println(temp); delay(1000); } |