====== 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 [[com:basic_i2c|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 (1x1), strip (1x8), and array (4x4, 32x32) 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 [[com:basic_i2c|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|
|{{anchor:d6t_32l}}{{:sensor:t.png|Temperature sensor}}\\ Non-Contact Thermal Sensor |Omron \\ **D6T-32L** {{:sensor:d6t_32l.png?100|D6T-32L}}|**5V**|Number of elements: 1024 (32 × 32) \\ Current consumption: 19 mA \\ Object temperature detection: \\ D6T-32L-01A: 0 to 200°C|[[com:basic_i2c|I²C]]|Response time: 200 msec \\ [[https://github.com/omron-devhub/d6t-2jcieev01-arduino|Arduino lib]]|
|{{anchor:d6t_44l}}{{:sensor:t.png|Temperature sensor}}\\ Non-Contact Thermal Sensor |Omron \\ **D6T-44L** {{:sensor:d6t_44l.png?100|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|[[com:basic_i2c|I²C]]|Response time: 300 msec \\ [[https://github.com/omron-devhub/d6t-2jcieev01-arduino|Arduino lib]]|
|{{anchor:d6t_8l}}{{:sensor:t.png|Temperature sensor}}\\ Non-Contact Thermal Sensor |Omron \\ **D6T-8L** {{:sensor:d6t_8l.png?100|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|[[com:basic_i2c|I²C]]|Response time: 250 msec \\ [[https://github.com/omron-devhub/d6t-2jcieev01-arduino|Arduino lib]]|
|{{anchor:d6t_1a}}{{:sensor:t.png|Temperature sensor}}\\ Non-Contact Thermal Sensor |Omron \\ **D6T-1A** {{:sensor:d6t_1a.png?100|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|[[com:basic_i2c|I²C]]|Response time: 100 msec \\ [[https://github.com/omron-devhub/d6t-2jcieev01-arduino|Arduino lib]]|
{{page>:tarhal}}
==== 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
#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 =====
{{topic>i2c}}
\\
\\
{{tag>D6T D6T-32L D6T-44L D6T-8L D6T-1A Omron Non-Contact Thermal sensor I2C arduino code}}
This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}