ტემპერატურის სენსორი lm335
ტემპერატურა ერთ-ერთი მნიშვნელოვანი ფიზიკური სიდიდეა. იგი განიმარტება როგორც სხეულის შემადგენელი ატომების მოძრაობის სიჩქარე. კერზოდ, რაც უფრო სწრაფად მოძრაობენ ატომები, მით მეტია სხეულის ტემპერატურა და პირიქით, რაც უფრო ნელია ატომთა მოძრაობა მით ნაკლებია სხეულის ტემპერატურა.
ტემპერატურის გასაზომად იყენებენ ისეთ სიდიდეებს როგორებიცაა: ცელსიუსი, ფარენჰეიტი და კელვინი. 0 გრადუსი ცელსიუსით იგივეა რაც 273.15 გრადუსი კელვინით. თუ ცელსიუსების გადაყვანა გვინდა ფარენჰეიტებში შეგვიძლია გამოვიყენოთ ფორმულა f=(c*1.8)+32 სადაც f ტემპერატურაა ფარენჰეიტებში, ხოლო c ტემპერატურა ცელსიუსებში.
ელექტრულ ინჟინერიაში ხშირად გვჭირდება ტემპერატურის გაზომვა რაიმე პროექტზე მუშაობის დროს. მაგალითად ტემპერატურის სენსორებს იყენებენ მანქანის კლიმატკონტროლებში, სასტუმროებსა და ოფისებში ტემპერატურის დასადგენად და ასე შემდეგ. ტემპერატურის გასაზომად შეგვიძლია გამოვიყენოთ თერმისტორი, თუმცაღა დღეს ამ მიზნით უფრო დახვეწილი საშუალებებიც არსებობს.
ტემპერატურის ერთ-ერთი უმარტივესი სენსორია LM335, რომელსაც შეუძლია გაზომოს ტემპერატურა -40 ცელსიუსიდან 100 ცელსიუსამდე შუალედში. მას სამი ფეხი აქვს ესენია V-, V+, რომელსაც ასევე გამოსავალ პინსაც უწოდებენ და ADJ პინი. განვიხილოთ თითოეული მათგანის დანიშნულება.
V- პინი წარმოადგენს სენსორის კვების ფეხს, რომელიც უკავშირდება კვების ნულოვან პოტენციალს, V+ პინზე ვიღებთ ძაბვას, რომელიც ტემპერატურის მატებასთან ერთად იზრდება, თუმცა ამისთვის მასთან უნდა დავაკავშიროთ (pull up) ამწევი რეზისტორი. ასევე საჭიროა ამ ფეხზე არსებული ძაბვა დავაკონვერტიროთ შესაბამის ტემპერატურაში. ხოლო ADJ პინით შესაძლებელია სენსორის დაკალიბრება, რათა მიღებული შედეგი რეალობას შეესაბამებოდეს.
აღნიშნული სენსორი მარტივად შეგვიძლია დავუკავშიროთ არდუინოს და ვმართოთ ჩვენს მიერ დაწერილი კოდის საშუალებით. მოდით დავწეროთ მარტივი კოდი არდუინოსთვის სადაც გამოვიყენებთ აღნიშნულ სენსორს. კოდის მუშაობის პრინციპი ასეთია: თუ ტემპერატურა ნაკლებია 35 გრადუს ცელსიუსზე მაშინ ანთია მწვანე ნათურა, მაგრამ თუ ტემპერატურა გადაცდება აღნიშნულ რიცხვს მაშინ ჩაქრება მწვანე და აინთება წითელი ნათურა.
int sensorPin = 0; //სენსორი მიერთებულია A0 ფეხზე
float tempK, tempC, tempF; // ამ ცვლადებში ვიმახსოვრებთ ტემპერატურას კელვინებში ცელსიუსებში და ფარენჰეიტებში
float sensorValue, voltage; // ცვლადები სენსორის ინფორმაციის და მისი შესაბამისი ძაბვისთვის
//ნათურების პინები
int redLed = 2;
int greenLed = 3;
void setup() {
Serial.begin(9600);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin); //ვკითხულობთ სენსორიდან ინფორმაციას
voltage = sensorValue / 1023 * 5; //გადაგვყავს შესაბამის ძაბვაში
tempK = voltage * 100; //ვითვლით ტემპერატურას კელვინებში
tempC = tempK - 273.5; //ვითვლით ტემპერატურას ცელსიუსებში
tempF = (tempC * 1.8) + 32; //ვითვლით ტემპერატურას ფარენფეიტებში
// თუ ტემპერატურა ცელსიუსებში ნაკლებია 35 გრადუსზე ინთება მწვანე ნათურა თუ ნაკლებია ინთება წითელი
if (tempC < 35) {
digitalWrite(greenLed, HIGH);
digitalWrite(redLed, LOW);
}
else {
digitalWrite(greenLed, LOW);
digitalWrite(redLed, HIGH);
}
}