TMP006 temperature sensor not working

Hi there,

So recently I bought this sensor TMP006 and was trying to get it work with the example code just to test its working but cannot get any readings from it. Please could you look into the below details and let me know what am I doing wrong. I have checked all the connection with multimeter. I also checked the pull up register which is 10k ohm. Your help will be much appreciated. Thanks.

Board: Uno (aftermarket)

Wiring:
VCC --> 3.3 v also tried 5v
GND --> GND
SCL --> A5 also tried on the SCL pin
SDA --> A4 also tried on the SDA pin

The Code:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_TMP006.h"

// Connect VCC to +3V (its a quieter supply than the 5V supply on an Arduino
// Gnd -> Gnd
// SCL connects to the I2C clock pin. On newer boards this is labeled with SCL
// otherwise, on the Uno, this is A5 on the Mega it is 21 and on the Leonardo/Micro digital 3
// SDA connects to the I2C data pin. On newer boards this is labeled with SDA
// otherwise, on the Uno, this is A4 on the Mega it is 20 and on the Leonardo/Micro digital 2

Adafruit_TMP006 tmp006;
//Adafruit_TMP006 tmp006(0x41);  // start with a diferent i2c address!

void setup() { 
  Serial.begin(9600);
  Serial.println("Adafruit TMP006 example");

  // you can also use tmp006.begin(TMP006_CFG_1SAMPLE) or 2SAMPLE/4SAMPLE/8SAMPLE to have
  // lower precision, higher rate sampling. default is TMP006_CFG_16SAMPLE which takes
  // 4 seconds per reading (16 samples)
  if (! tmp006.begin()) {
    Serial.println("No sensor found");
    while (1);
  }

  Serial.println("Send s to enter sleep mode, or w to wake up.  Measurements are not updated while asleep!");
}

void loop() {
  // Check for sleep/wake command.
  while (Serial.available() > 0) {
    char c = Serial.read();
    if (c == 'w') {
      Serial.println("Waking up!");
      tmp006.wake();
    }
    else if (c == 's') {
      Serial.println("Going to sleep!");
      tmp006.sleep();
    }
  }

  // Grab temperature measurements and print them.
  float objt = tmp006.readObjTempC();
  Serial.print("Object Temperature: "); Serial.print(objt); Serial.println("*C");
  float diet = tmp006.readDieTempC();
  Serial.print("Die Temperature: "); Serial.print(diet); Serial.println("*C");
   
  delay(4000); // 4 seconds per reading for 16 samples per reading
}

Images:


image

Libraries:
Adafruit_Sensor-master.zip (15.3 KB) Adafruit_TMP006-master.zip (9.3 KB)

Hi Nowroz,

Thanks for posting up this info - it’s great. Plenty of detail! I just tidied up your code a bit.

I’ve tested out the example script from the Adafruit library and got it up and running on both an Arduino Uno and a generic UNO, using 5v and the SCL SDA pins.

I’ve also copied across your code and tried it on 3v3, A4, and A5 and it also worked.

The only things I can suggest are to clear out all your Arduino libraries, and re-install the TMP006 and Universal sensor libraries - just in case there’s something obscure going on, but the libraries you’ve uploaded are the latest versions (and the same ones I used).

I’d also suggest triple-checking your wiring and making sure you’ve not got sneaky solder bridges.

The address select lines have 10k pull down resistors to set it to 0x40 (the default address), but it might be worth running an I2C scanner sketch just to see if anything is being picked up:

After that, it may just be a dud sensor - in which case we’ll get it sorted for you ASAP! If so, please send us an email so we can get the warranty process underway. I can confirm the one in our current shelf stock is working.

Regards,
Oliver
Support | Core Electronics

Hi Oliver, thanks for your reply. I have tried re-soldering everything twice, re-installed the arduino IDE software, re-install all the libraries but no luck.

I scanned for I2C pins, it shows “No I2C device found”. What do you think? faulty sensor?

Thanks
Nowroz

1 Like

Hi Nowroz,

For the value of the part, I’d say we’ve chased this far enough. The only possibilities left are a faulty product, or a faulty Uno. I’d say there’s a good chance it’s not the Uno!

Please send us an email with your order details (and please reference this forum topic) and we’ll get you sorted ASAP.

Regards,
Oliver
Support | Core Electronics

Hi,
I know this thread is over 20days old.

Did you try a 4k7 pullup resistor on the SDA and SCL lines?
A 4k7 resistor between SDA and 5V or 3V3.
A 4k7 resistor between SCL and 5V or 3V3.

Tom…:coffee::grinning:

1 Like

Hey Tom, I’m pretty sure this one already has pullups on the PCB. So I don’t think it would have helped unfortunately - a good idea though!

I’ve come across so many that think that but they don’t have them because they are analogue input pins as well.
Op could measure from SDA ad SCL to 5V to check on an unpowered board.
Anyway, OP didn’t respond, hope you got him sorted by email…:+1::slightly_smiling_face:

2 Likes

Hi Tom,

Yep, a good idea but this one definitely has pull-ups on board. From Nowroz said on the phone or in an email that he had checked the pins for resistance to VCC and Gnd.

FYI though, Adafruit release the schematics for all their PCBs so you can check it out for yourself here:

Regards,
Oliver
Support | Core Electronics

2 Likes