Digital Thermopile Module

Hello everybody!

I’m a newbie in arduino. I have problem when using Digital Thermopile Module 8:1 (DTPM81). It coudln’t show poper result.

This module has function for measuring target and ambient temperature. This module use SPI protocol.

The spesification :

  • 3.3 V
  • Clock 1Mhz
  • SCK data transfer edge : Rising Edge
    -MSB first data transfer
    -SCK idle status : High

SPI Commuinication from datasheet :

this is my circuit :

and this is my code :
#include <SPI.h>

const byte enableChip = 7;

void setup(){
Serial.begin(9600);
SPI.begin();
SPI.setDataMode(SPI_MODE3);
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setBitOrder(MSBFIRST);
pinMode(enableChip, OUTPUT);
}

void loop() {
//read target temperature
double target = readRegister(0xA0);
delay(50); //delay data between target and ambient
//delayMicroseconds(990);
double ambient = readRegister (0xA1);
Serial.println("T : "+String(target));
Serial.println("A : "+String(ambient));
delay(500);
}

double readRegister(byte dataZ){
digitalWrite(enableChip, LOW);
delayMicroseconds(10);
SPI.transfer(dataZ);
delay(10);
byte dataLow = SPI.transfer(0x22);
delay(10);
byte dataHigh = SPI.transfer(0x22);
digitalWrite(enableChip, HIGH);
double data = ((dataHigh * 256) + dataLow)/10.0;
//double data = (double) ((dataHigh << 8 ) | dataLow)/10.0;
return data;
}

btw, I’m using Arduino UNO R3. Here is datasheet of this module but, it’s in Korean. :’(

eleparts.co.kr/front/download.php?file_name=96DTPM_Spec_V1.3.pdf

So what data are you getting back? Why such a strong pullup on SDO? Is that called for in the docs?

It was showing wrong static and wrong calculation. Yes, it need pullup resistor according to the manualbook. Btw, I've solved this problem. Actually, the problem is simple, the SDO should connect to MISO, not MOSI. :-[ :-[ :-[

Thank you for your reply DrAzzy