TMP102
Содержание
Описание
TMP102 это цифровой термометр с интерфейсом I2C(TWI) в миниатюрном корпусе SOT563. TMP102 не нуждается в обвязке, и считывает температуру с шагом 0.0625°C.
TMP102 поддерживает SMBus и I2C(TWI), что позволяет использовать до 4х таких датчиков на одной шине. Так же поддерживает такую функцию как "SMB alert".
TMP102 это идеальный датчик для измерения изменений температуры, шаг измерения 0.0625°C, качество 0.5°C, диапазон от –40°C до +125°C.
Внимание: TMP102 это устройство с рабочим напряжением 3.3V, для подключения к 5V Arduino непроходимо преобразование уровней например при помощи Logic Level Converter
Подключение
The TMP102 is a 3.3V device and therefore it is connected to the Arduino board through a Logic Level Converter[1]:
- LV to the 3.3V pin of the Arduino
- HV to the 5V pin of Arduino
- HV Channel 1 TXO to the SDA pin (analog 4)
- HV Channel 2 TXO to the SCL pin (analog 5)
- Low voltage Channel 1 TXI to the SDA pin of TMP102
- Low voltage Channel 2 TXI to the SCL pin of TMP102
- The RX pins of the Logic Level Converter are not used
- V+ of TMP102 connected to 3.3V
- ADD0 of TMP102 connected to ground
- ALT of TMP102 not connected
- All grounds connected together.
Component side with test overlay:
Пример кода
Пример кода для Arduino который показывает как считать данные с TMP102, преобразовать их в градусы по Цельсии и по Фарингейту. Полученные результаты выводятся на ЖКИ дисплей и дублируются в последовательный порт.
#include <LiquidCrystal.h> #include <Wire.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte res; byte msb; byte lsb; int val; float tC; // temperature in Celsius float tF; // temperature in Fahrenheit void setup() { // set up the LCD's number (col,row): lcd.begin(20, 2); lcd.print("Temp"); Serial.begin(9600); Wire.begin(); } void loop() { lcd.clear(); /* get new value from TMP102 */ res = Wire.requestFrom(72,2); if (res == 2) { msb = Wire.receive(); /* Whole degrees */ lsb = Wire.receive(); /* Fractional degrees */ val = ((msb) << 4); /* MSB */ val |= (lsb >> 4); /* LSB */ /* calculate temperature */ tC = val*0.0625; tF = (tC * 9/5) + 32; /* show temperatures on display */ lcd.print(tC); lcd.print("\xdf""C"); lcd.setCursor(0, 1); lcd.print(tF); lcd.print("\xdf""F"); Serial.print(tC); Serial.print("C "); Serial.print(tF); Serial.println("F"); } else { lcd.print("ERR"); Serial.println("ERROR"); } delay(1000); }
Материалы
- Источник: TMP102 Wiring
- Описание: TMP102 Datasheet
- Схема отладочной платы: TMP102 Breakout
- Подключение к Arduino(5v) используя преобразователь уровней Sparkfun Logic Level Converter: http://forum.sparkfun.com/viewtopic.php?f=8&t=20938&p=97163
- Где купить Sparkfun, 4Robots и другие.