CJMCU LM75 — модуль датчика температуры (Arduino)

Модуль CJMCU LM75 представляет собой цифровой датчик температуры на ИМС LM75A. Датчик температуры использует шину I2C, что дает возможность подключения одновременно до 8 температурных датчиков.

  • Диапазон температур:  -55°C … +125°C (±2°C)
  • Разрешение: 11 бит
  • Напряжение питания: 2.8 В … 5.5 В

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

Для установки адреса на шине отвечают выходы, A0, A1 и A2, перед подключением необходимо установить перемычки к VDD или GND.

Начальный адрес I2C 0x48, перемычки адреса позволяют менять три младших разряда адреса:

  • BIN 1001000 = 0x48 | A0 = 0, A1 = 0, A2 = 0
  • BIN 1001001 = 0x49 | A0 = 0, A1 = 0, A2 = 1
  • BIN 1001010 = 0x50 | A0 = 0, A1 = 1, A2 = 0
  • BIN 1001011 = 0x51 | A0 = 0, A1 = 1, A2 = 1
  • BIN 1001100 = 0x52 | A0 = 1, A1 = 0, A2 = 0
  • BIN 1001101 = 0x53 | A0 = 1, A1 = 0, A2 = 1
  • BIN 1001110 = 0x54 | A1 = 0, A1 = 0, A2 = 0
  • BIN 1001111 = 0x55 | A0 = 1, A1 = 0, A2 = 1

Управление LM75 осуществляется при помощи 4 регистров:

Регистр Conf определяет режим работы выхода OS, режим работы — запись 8 бит

Если бит OS_COMP_INT равен 0, то выход OS работает следующим образом:

Если температура поднимается выше значения в регистре Tos — выход OS переходит в активное состояние. Он останется в этом состоянии до тех пор, пока температура не упадет ниже значения в регистре Thyst. Это режим называется OS comparator mode.

Если бит OS_COMP_INT равен 1, то выход OS работает следующим образом:

Если температура поднимается выше значения в регистре Tos — выход переходит в активное состояние. И остается в нем до тех пор, пока не будет прочитано значение регистра Temp. Когда регистр температуры будет прочитан, OS  переключается в неактивное состояние и находится в нем до тех пор, пока температура не станет ниже значения в регистре Thyst. Тогда он опять переходит в активное состояние, пока не будет прочитано значение регистра Temp. В этом режиме можно контролировать уход температуры за пределы обозначенного регистрами Tos и Thyst диапазона. Нижней границей будет Thyst, а верхней — Tos. Это режим называется OS interrupt mode.

Бит SHUTDOWN отвечает за спящий режим. Если SHUTDOWN равен 0, то устройство активно. Если SHUTDOWN = 1, то устройство переходит в спящий режим. При этом ток потребления снижается до 100 мкА.

Бит OS_F_QUE определяет кол-во измерений температуры после которого будет опрос регистров Tos и Thyst.

Бит OS_POL меняет полярность выхода OS.

Регистр Temp содержит значение измеренной температуры, режим работы — чтение 16 бит

Чтение регистра Temp производится в два этапа, сначала читаем старший байт, потом младший. Так как регистр содержит информацию об температуре с разрешением 11 бит, то 5 младших битов младшего байта игнорируются.

При этом старший байт содержит целое число градусов, а младшие байт дробную часть градуса (1 бит = 0,125°C).

Регистры Tos и Thyst содержат температурные значения для срабатывания выхода OS, режим работы — запись 16 бит

Регистр Tos отвечает за верхнее значение диапазона регулировки температуры, регистр Thyst за нижнее значение.

Значение температуры записываемое в регистры Tos и Thyst кратно 0,5°С, при этом передается число int получаемое путем умножения на 2 числа float температуры регулировки. Например если температура регулировки 25,5°С, то передается число int 51.

Регистры Tos и Thyst 16 бит, но передаваемое значение температуры 9 бит. При этом старший байт содержит целое число градусов, а младший байт дробную часть градуса (1 бит = 0,5°C).

При отключении питания данные регистров Tos и Thyst не сохраняются (по умолчанию Tos = 80°C, Thyst = 75°С).

Ниже показан скетч демонстрирующий работу цифрового датчика температуры. В монитор порта выводится значение измеренной температуры и логическое состояние выхода OS. Состояние выхода контролируется входом D2 который подключен к OS.

#include <Wire.h>

float thyst_x = 29.0;
float tos_x   = 30.0;

void setup(){
  Wire.begin();
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  /// CONF REG
  Wire.beginTransmission(0x48);
  Wire.write(0x01);// conf reg
  Wire.write(0b00000000);// data 00000000
  Wire.endTransmission();
  
  ///  Thyst
  Wire.beginTransmission(0x48);
  Wire.write(0x02);
  Wire.write((int(thyst_x*2)) >> 1);
  Wire.write((int(thyst_x*2) & 1) << 7);
  Wire.endTransmission();
  
   ///  Tos
  Wire.beginTransmission(0x48);
  Wire.write(0x03);
  Wire.write((int(tos_x*2)) >> 1);
  Wire.write((int(tos_x*2) & 1) << 7);
  Wire.endTransmission();
}

void loop(){ 
  Serial.println( lm75() );
  Serial.println(digitalRead(2));
  delay(1000);
}

float lm75(){
   /// TEMP REG
  Wire.beginTransmission(0x48);
  Wire.write(0x00); // temp reg
  Wire.endTransmission();
  Wire.requestFrom(0x48, 2);
  while(Wire.available() < 2); 
  float value = (((Wire.read() << 8) | Wire.read()) >> 5)*0.125 ; 
  return value;
  }

В скетче указаны значения температуры регулирования:

float thyst_x = 29.0;

float tos_x   = 30.0;

Выход OS работает следующим образом — при включении датчика при температуре ниже 29°С выход OS активен, на его выходе лог. 1. Как только температура достигает 30°С выход OS переходит в неактивное состояние, на его выходе лог. 0. При достижении температуры ниже 29°С, выход OS снова переходит в активное состояние.

Температуры повысилась до 30 и выше °С, выход OS = 0

Температуры понизилась до 29 и ниже °С, выход OS = 1

lm75A.pdf

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

Войти с помощью: