Главная » Автоэлектроника » LM75 — датчик температуры. Описание, подключение к Ардуино

LM75 — датчик температуры. Описание, подключение к Ардуино

Сегодня мы рассмотрим датчик температуры CJMCU-75, также известный как датчик температуры LM75 или LM75A с поддержкой шины I2C. С помощью этого датчика вы можете считывать температуру как в градусах Цельсия, так и в градусах Фаренгейта. Температурный диапазон составляет от -55 до +125 градусов по Цельсию.

LM75A представляет собой цифровой датчик температуры промышленного стандарта со встроенным сигма-дельта аналого-цифровым преобразователем (АЦП). LM75A имеет 9-битное разрешение с точностью ±2°C в диапазоне от –25°C до 100°C и с точностью ±3°C в диапазоне от –55°C до 125°C.

LM75A работает с однополярным питанием от 2,7 В до 5,5 В. Благодаря такому широкому диапазону питающего напряжения его можно легко использовать с платами контроллеров, совместимыми с напряжением 3,3 В, такими как ESP8266, ESP32 и т. д., а также с платами контроллеров, совместимыми с питанием 5 В.

Связь осуществляется по двухпроводному интерфейсу, работающему на частоте до 400 кГц. LM75A имеет три вывода A0, A1 и A2 для установки логического адреса, что позволяет подключить к одной шине до восьми датчиков LM75A. LM75A имеет специальный выход защиты от перегрева (OS) с программируемым пределом и гистерезисом.

Датчик температуры LM75A можно использовать в базовых станциях, электронном контрольно-измерительном оборудовании, офисной электронике, персональных компьютерах, средствах мониторинга окружающей среды и любых других системах, в которых управление температурным режимом имеет решающее значение в плане производительности.

Теперь давайте посмотрим на принципиальную схему подключения LM75A к Arduino с Oled дисплеем.

Подключение LM75A к Arduino

Подключение LM75A к Arduino - схема

Выводы SCL и SDA датчика температуры LM75A и модуля дисплея Oled соединяются вместе, а затем подключаются к контактам A5 и A4 Arduino. A5 — это SCL, а A4 — это SDA. Контакты VCC и GND соединены с контактами Arduino 5В и GND.

Зуммер на 5В управляется транзистором 2n2222, который через резистор 10 кОм подключен к выводу D3 Arduino.

Питание схемы построено на стабилизаторе напряжения LM7805. Входное напряжение стабилизатора может быть в диапазоне от 7 до 28 вольт. Выход стабилизатора подключен к выводу Vin платы Arduino.

Необходимые библиотеки для LM75

Прежде чем приступить к программированию, в первую очередь убедитесь, что вы скачали и установили все необходимые библиотеки:

  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • LM75A

Скачать библиотеки (940,5 KiB, скачано: 137)

Как установить библиотеку в IDE Arduino смотрите здесь.

Скетч

Данная программа считывает температуру в градусах Цельсия и Фаренгейта и выводит на дисплей. Так же программа проверяет, находится ли температура выше или ниже порогового значения. Если температура превысила 45 градусов по Цельсию, включается зуммер, а если температура ниже 45 градусов по Цельсию, зуммер отключается.

#include <SPI.h>              // подключаем библиотеки
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LM75A.h>

// создаем экземпляр I2C LM75A
LM75A lm75a_sensor(false,  // A0 LM75A (подключен к земле = false)
                   false,  // A1 LM75A (подключен к земле  = false)
                   false); // A2 LM75A (подключен к земле  = false)

#define SCREEN_WIDTH 128 // Ширина OLED-дисплея, в пикселях
#define SCREEN_HEIGHT 64 // Высота OLED-дисплея, в пикселях

// SSD1306, подключенный к I2C (контакты SDA, SCL)
#define OLED_RESET     -1 // Номер вывода сброса (или -1 при совместном использовании вывода сброса Arduino)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int buzzer = 3;

void setup() {
Serial.begin(9600);
  Serial.println("Temperatures will be displayed every second:");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
  pinMode(buzzer, OUTPUT);
}

void loop() {
  float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
  if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE)
  {
    Serial.println("Error while getting temperature");
  }
  else
  {
    Serial.print("Temperature: ");
    Serial.print(temperature_in_degrees);
    Serial.print(" degrees (");
    Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
    Serial.println(" fahrenheit)");

       if ( temperature_in_degrees >= 45 )
 {
  digitalWrite( buzzer, HIGH);
  Serial.println(" Temperature Alert! ");
 }

    if ( temperature_in_degrees < 45 )
 {
  digitalWrite( buzzer, LOW);
 }
 
display.clearDisplay();
  display.setCursor(25,0);  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println(" Temperature");
  display.setCursor(10,20);
  display.setTextSize(2);
  //display.print("C: ");
  display.print(temperature_in_degrees);
  display.print((char)247);
  display.print("C");
 
  display.setCursor(10,45);
  display.setTextSize(2);
  //display.print("F: ");
  display.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
  display.print((char)247);
  display.print("F");
    display.display();
  }
  delay(1000);
}

 






Добавить комментарий