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
Подключение
Вариант подключения TMP102(3.3V) к Arduino(5V)с Logic Level Converter:
- LV к 3.3V pin Arduino
- HV к 5V pin Arduino
- HV Канал 1 TXO к SDA pin Arduino (analog 4)
- HV Канал 2 TXO к SCL pin Arduino (analog 5)
- LV Канал 1 TXI к SDA pin of TMP102
- LV Канал 2 TXI к SCL pin of TMP102
- RX pins Logic Level Converter не используются
- V+ от TMP102 на 3.3V
- GND от TMP102 на землю
- ADD0 от TMP102 на землю
- ALT от TMP102 не подключаем
- Все земли соединяем между собой
Вариант подключения TMP102(3.3V) к Arduino(3.3V) без преобразований:
- V+ от TMP102 на 3.3V Arduino
- SDA от TMP102 на SDA pin (analog 4)
- SCL от TMP102 на SCL pin (analog 5)
- GND от TMP102 на землю
- ADD0 отTMP102 на землю
- ALT от TMP102 не подключаем
- Все земли соеденяем между собой
Расположение контактов при взгляде на верхнюю сторону:
Пример кода
Пример кода для 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 и другие.