TMP102
Содержание
Описание
The TMP102 is a two-wire, serial output temperature sensor available in a tiny SOT563 package. Requiring no external components, the TMP102 is capable of reading temperatures to a resolution of 0.0625°C.
The TMP102 features SMBus and two-wire interface compatibility, and allows up to four devices on one bus. It also features an SMB alert function.
The TMP102 is ideal for extended temperature measurement in a variety of communication, computer, consumer, environmental, industrial, and instrumentation applications. The device is specified for operation over a temperature range of –40°C to +125°C.
Note that the TMP102 is a 3.3V device and will require a Logic Level Converter to connect it to a 5V Arduino.
Подключение
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 и другие.