Высокоточный аналоговый датчик температуры LM35, Подключение к Arduino

LM35 — Прецизионный аналоговый датчик температуры, на выходе которого формируется напряжение пропорционально температуре по шкале Цельсия.

Характеристики датчика:

  • Диапазон температур: − 55°C  …  150°C ±0.5 при 25°C, доступный 0°C … 110°C
  • Разрешение: 10.0 mV/°C
  • Напряжение на выходе при 25°C: 250мВ.
  • Напряжение питания: от 4.0 В до 30 В.

Особенности работы с датчиком:

На выходе датчика формируется напряжение пропорционально температуре по шкале Цельсия, величина напряжения 10.0 mV на 1°C, то есть, если температура датчика 25°C на выходе датчика будет 250mV. С этим связаны сложности при работе с Arduino.

  • Не возможно измерение отрицательных температур, 0°C это 0 вольт на выходе датчика, чтобы измерять весь диапазон нужно подавать отрицательное напряжение, но даже если оно будет подано, встроенный аналого-цифровой преобразователь в Arduino не может измерять отрицательное напряжение.
  • Низкое разрешение встроенного АЦП Arduino и нестабильность опорного напряжения в случаи использования в качестве опорного напряжение питания 5 вольт. Решается использованием встроенного в Arduino UNO источника опорного напряжения 1.1 вольт, в этом случаи верхний придел температур, которые могут быть измерены, 110°C

При использовании датчика с Arduino UNO, доступный диапазон температур 0°C … 110°C.

Схема подключения датчика:

Датчик аналоговый и соответственно подключать его нужно на аналоговый вход Arduino, в данном случаи подключен на вход А0. Дополнительные библиотеки для Arduino не требуются, просто загружаем код ниже.

//http://playground.arduino.cc/Main/LM35HigherResolution

float tempC;
int reading;
 
void setup()
{
  analogReference(INTERNAL);        // включаем внутрений источник опорного 1,1 вольт
  Serial.begin(9600);
}

void loop()
{
  reading = analogRead(A0);        // получаем значение с аналогового входа A0
  tempC = reading / 9.31;          // переводим в цельсии 
  Serial.print(tempC);            // отправляем в монитор порта
  Serial.println(" C");
  delay(1000);                     // ждем секунду
}

Открываем «монитор порта» и видим точные показания температуры с высоким разрешением.


Видео:


Пример с использованием текстового экрана


код
/*
 

  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)

 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


float tempC;
int reading;

void setup() {
  analogReference(INTERNAL);        // включаем внутрений источник опорного 1,1 вольт
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
   
}

void loop() {

  reading = analogRead(A0);        // получаем значение с аналогового входа A0
  tempC = reading / 9.31;          // переводим в цельсии 
  lcd.setCursor(0, 0);             // устанавливаем курсор
  lcd.print(tempC);                // отправляем данные на жк
  lcd.print(" C   ");
 
  delay(100); 
  
 
}