Аналоговый датчик температуры LM35.
Этот датчик имеет следующие характеристики:
- напряжение питания: 2.7-5.5В;
- погрешность: 2 градуса;
- измеряемая температура: от 10°C до 125°C
- потребляемый ток: 50мкА.
Датчик подключаем к аналоговым входам А0-А5.
НАМ ПОНАДОБИТСЯ
- Плата Arduino Uno
- Температурный датчик LM35
- Провода
- Макетная плата
СХЕМА ПОДКЛЮЧЕНИЯ
Значение температуры отправляем в последовательный порт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int tempPin = 0; // Присваиваем имя tempPin аналоговому выводу А0, к которому подключен датчик LM35 int analogValue; // переменная считывания данных с аналогового входа float tempC; // переменная значений температуры void setup() { Serial.begin(9600); // Задаем скорость работы монитор порта } void loop() { analogValue = analogRead(tempPin); //записываем в переменную analogValue данные с аналогового входа tempC = analogValue *0.488; //Коэф. пересчета в градусы Цельсия (5.0/1024.0)*100; Serial.println(tempC); // отправляем значение температуры в порт delay(1000); // Пауза 1 секунда } |
Для увеличения точности измерения можно использовать функцию analogReference(INTERNAL);, которая включает использование встроенного опорного напряжения 1.1V для контроллеров ATmega168 и ATmega328.
Это будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int tempPin = 0; // Присваиваем имя tempPin аналоговому выводу А0, к которому подключен датчик LM35 int analogValue; // переменная считывания данных с аналогового входа float tempC; // переменная значений температуры void setup() { analogReference(INTERNAL);//включаем использование встроенного опорного напряжения 1.1V Serial.begin(9600); // Задаем скорость работы монитор порта } void loop() { analogValue = analogRead(tempPin);//записываем в переменную analogValue данные с аналогового входа tempC = analogValue /9.31; //Коэф. пересчета в градусы Цельсия Serial.println(tempC); // отправляем значение температуры в порт delay(1000); // Пауза 1 секунда } |
Подключим светодиод. Он будет включаться при превышение температуры, больше заданной. Например 30 градусов Цельсия.
СХЕМА ПОДКЛЮЧЕНИЯ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int ledPin = 11; // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод int tempPin = 0; // Присваиваем имя tempPin аналоговому выводу А0, к которому подключен датчик LM35 int analogValue; // переменная считывания данных с аналогового входа float tempC; // переменная значений температуры void setup() { pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход analogReference(INTERNAL);//включаем использование встроенного опорного напряжения 1.1V Serial.begin(9600); // Задаем скорость работы монитор порта } void loop() { analogValue = analogRead(tempPin);//записываем в переменную analogValue данные с аналогового входа tempC = analogValue /9.31; //Коэф. пересчета в градусы Цельсия Serial.println(tempC); // отправляем значение температуры в порт if (tempC > 30) //если температура выше 30 гр.Цельсия, digitalWrite(ledPin, HIGH); //то светодиод включаем else digitalWrite(ledPin, LOW); //иначе, выключаем. delay(1000); // Пауза 1 секунда } |
Вместо светодиода можно использовать реле, которое будет включать или выключать какую-нибудь нагрузку, например вентилятор, обогреватель и т.п.