====== 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}}