meta data for this page
LamaPLC: D6T Omron Non-Contact Thermal Sensors with I²C communication
The Omron D6T series consists of highly sensitive MEMS thermal sensors that measure surface temperature non-contact via infrared detection. Unlike conventional motion sensors, they can detect stationary humans based on their body heat, making them suitable for energy conservation and security applications.
- Non-Contact Measurement: Uses thermopile elements to absorb radiant energy from objects and convert it into a temperature reading.
- Presence Detection: A key strength is the ability to detect both moving and stationary humans and objects, unlike typical pyroelectric sensors that rely solely on motion.
- High Signal-to-Noise Ratio (SNR): Omron's unique MEMS and ASIC technology delivers a high SNR, ensuring stable, accurate temperature measurements.
- Digital Output: Provides a direct digital temperature value via an I²C interface, simplifying software design and enhancing noise immunity.
- Compact Size: The sensors integrate all components (silicon lens, thermopile, ASIC) into a compact, space-saving package suitable for embedded applications.
- Various Array Options: Available in different configurations, including single-element (1×1), strip (1×8), and array (4×4, 32×32) formats, to suit various field-of-view (FoV) requirements.
Operation
The sensor directs far-infrared (radiant heat) onto a thermopile, producing an electromotive force proportional to temperature. An internal ASIC then converts this into a digital temperature reading, which is sent through the I²C bus, easing software development. Unlike pyroelectric sensors that only detect motion, the D6T can detect stationary objects and humans based on their body heat.
| Type of measurement | Model | Power voltage | Measurement, range, accuracy | Communication | Note |
|---|---|---|---|---|---|
![]() Non-Contact Thermal Sensor | Omron D6T-32L ![]() | 5V | Number of elements: 1024 (32 × 32) Current consumption: 19 mA Object temperature detection: D6T-32L-01A: 0 to 200°C | I²C | Response time: 200 msec Arduino lib |
![]() Non-Contact Thermal Sensor | Omron D6T-44L ![]() | 5V | Number of elements: 16 (4 × 4) Current consumption: 5 mA Object temperature detection: D6T-44L-06: 5 .. 50°C D6T-44L-06H: 5 .. 200°C | I²C | Response time: 300 msec Arduino lib |
![]() Non-Contact Thermal Sensor | Omron D6T-8L ![]() | 5V | Number of elements: 8 (1 × 8) Current consumption: 5 mA Object temperature detection: D6T-8L-09: 5 .. 50°C D6T-8L-09H: 5 .. 200°C | I²C | Response time: 250 msec Arduino lib |
![]() Non-Contact Thermal Sensor | Omron D6T-1A ![]() | 5V | Number of elements: 1 (1 × 1) Current consumption: 3.5 mA Object temperature detection: D6T-1A-01: 5 .. 50°C D6T-1A-02: -40 .. 80°C | I²C | Response time: 100 msec Arduino lib |
If you'd like to support the development of the site with the price of a coffee — or a few — please do so here.
Here's a handy tip: you can quickly save this page as a PDF by clicking “export to PDF” in the menu on the right side of the screen.
Arduino & D6T-1A
To read the Omron D6T-1A (D6T-1A-01 or D6T-1A-02) with an Arduino, you use the I²C interface. The sensor has a fixed 7-bit address of 0x0A.
Wiring (5V Logic)
The D6T-1A requires a 4.5V to 5.5V supply.
- VCC: Arduino 5V
- GND: Arduino GND
- SDA: Arduino Pin A4 (on Uno)
- SCL: Arduino Pin A5 (on Uno)
- Pull-up Resistors: Many breakout boards include these, but if yours does not, use 10kΩ resistors from SDA and SCL to 5V.
Arduino Example Code
This code uses the standard Wire.h library to request a 5-byte data packet (1 byte for ambient temperature PTAT, 2 bytes for the object temperature, and a PEC error check byte).
#include <Wire.h> #define D6T_ADDR 0x0A // I2C 7-bit address #define D6T_CMD 0x4C // Read command void setup() { Wire.begin(); Serial.begin(115200); Serial.println("Omron D6T-1A Initialized"); } void loop() { uint8_t rbuf[5]; // D6T-1A returns 5 bytes (2 for PTAT, 2 for Object, 1 for PEC) // Step 1: Send command to sensor Wire.beginTransmission(D6T_ADDR); Wire.write(D6T_CMD); Wire.endTransmission(); // Step 2: Request 5 bytes Wire.requestFrom(D6T_ADDR, 5); int i = 0; while (Wire.available() && i < 5) { rbuf[i++] = Wire.read(); } // Step 3: Convert data (Little Endian: Lower byte + Higher byte << 8) // Temperature = raw_value * 0.1 float t_ptat = (rbuf[0] + (rbuf[1] << 8)) * 0.1; float t_obj = (rbuf[2] + (rbuf[3] << 8)) * 0.1; Serial.print("Ambient (PTAT): "); Serial.print(t_ptat, 1); Serial.print(" C | "); Serial.print("Object: "); Serial.print(t_obj, 1); Serial.println(" C"); delay(500); }
Key Technical Details
- Data Format: The sensor returns data in 0.1°C increments. For example, a value of 255 equals 25.5°C.
- PTAT: This refers to “Proportional To Absolute Temperature,” which is the internal ambient temperature of the sensor unit.
- PEC (Packet Error Check): The 5th byte is a CRC-8 checksum to ensure data integrity.
- Stationary Detection: Unlike PIR sensors, the D6T can detect a stationary human presence by reading radiant heat rather than motion.
I²C topics on lamaPLC
This page has been accessed for: Today: 3, Until now: 4




