MAX6675 custom board problem

I have a few projects where is a need to measure high temperatures, such as 800 C or so. For that purpose i used Pro Mini and MAX6675 module with thermocouple element K type. All works fine with data on Oled screen. Then i thought why shouldn’t i made my own custom board. Clone everything on PCB, what could possibly go wrong?

Well, i was wrong.

I made a PCB with 328p on it and that part i think is ok. I put bootloader on it, Blink sketch and it works. I uploaded sketch that i used for Pro Mini and get no data on serial. i mean, i get 0 degrees C. Or 32 F.

What i tried:
I tried Adafruit library and get nothing. (0 C).
I tried this one and still get 0 C. Tried MAX6675_sw_SPI_Demo.ino with removed ESP8266 parts and get 0 C. But, what is funny there is a function to get ID from a chip and to see are Thermocouple on T-/+ terminals and it shows this:

MAX6675 OK
Chip ID:6675
K-Thermocouple is connected to MAX6675 terminals ‘T+’ & ‘T-’
Temperature: 0.0
Chip ID:6675
K-Thermocouple is connected to MAX6675 terminals ‘T+’ & ‘T-’
Temperature: 0.0
Chip ID:6675
K-Thermocouple is connected to MAX6675 terminals ‘T+’ & ‘T-’
Temperature: 0.0
Chip ID:6675
K-Thermocouple is connected to MAX6675 terminals ‘T+’ & ‘T-’
Temperature: 0.0
Chip ID:6675
K-Thermocouple is connected to MAX6675 terminals ‘T+’ & ‘T-’
Temperature: 0.0

When i disconnect thermocouple it still says it is connected.

Here is the schematics:

And here is the sketch:

#include <MAX6675Soft.h>
uint16_t rawData     = 0;
float    temperature = 0;
MAX6675Soft(cs, so, sck)
cs  - chip select
so  - serial data output
sck - serial clock input
MAX6675Soft myMAX6675(9, 8, 10); 
void setup(){
  while (myMAX6675.getChipID() != MAX6675_ID){
    Serial.println(F("MAX6675 error"));
  Serial.println(F("MAX6675 OK"));
void loop(){
  rawData = myMAX6675.readRawData();
  Serial.print(F("Chip ID:"));
  if   (myMAX6675.detectThermocouple(rawData) == true) 
  Serial.println(F("K-Thermocouple is connected to MAX6675 terminals 'T+' & 'T-'"));
  Serial.println(F("K-Thermocouple is broken, unplugged or 'T-' terminal is not grounded"));
  temperature = myMAX6675.getTemperature(rawData);
  Serial.print(F("Temperature: "));
  if   (temperature != MAX6675_ERROR) 
  Serial.println(temperature, 1);

If you need more data i will provide.

And, yes, i put small 0,01uF cap on T+/- terminals.

Most probably the soldering of the connection between the ATmega328p and the MAX6675 isn't good. Did you solder it manually or in a reflow oven?

The correct chip ID is returned if 0 is read, the same is unfortunately true for the thermocouple detection. A 0 bit says that a thermocouple is detected. So both values are unusable to check a connection to the chip.

There are few things i haven’t said.
Atmega is SMD, and yes, there could be an issue. I soldered it all by soldering iron, and by hand. Although i have hot air gun, but i didn’t want to solder all at once. Just so i could check my wiring and design part by part. I could take a pic of a PCB but on close look it all looks just fine. A will check joints again.

For schematics and sketch, i don’t think i made a mistake. Or did i?

One more thing, on my design i miss to connect GND to T- which is connected later in schematics and that is posted here. On PCB, i put a solder on GND and T- pins of MAX6675. BUT(!!!) i firstly turned on board. Maybe i burned MAX6675 somehow? Should i replace it?

I would first check all connections. If you are sure that the soldering is correct and you don't have short somewhere but still above result, you should think about replacing the chip but not before that.

When i check with multimeter pins connection with probes by touching only very close to the chip itself, i can see that all is ok and there is connection.

I will try to replace the MAX chip tomorrow.

Did you try reversing the thermocouple polarity?

Tried everything. Damn. I even replace MAX chip.

Ok, here we go again...

In last week i try a few things and get some strange results. -I have this project made in term of modules and Pro Mini. So i take one of these and check all three thermocouple probes and they are ok. -Then i took one MAX6675 module from it, solder wires directly on pads on my custom board where MAX6675 should be placed, connect it with MAX module and power also. And guess what? It works. -Then i put MAX6675 chip on its place, take away those wires and... it don't work.. LOL

There could be two solutions: -My MAX6675 chips i ordered are bad. -Someone is filming hidden camera on me

I will try to take of MAX6675 from a module as i know it works and put it on my board. And to check those new MAX chips on module.

I am out of ideas. Any suggestion?

While trying everything and almost give up, i give it a last one. I remove one MAX6675 from a module that i know it works and solder it on my board. And it works.

Now, Chinese seller sold me fake chips. And not one, damn. This one is fake:


And this one is ok:


Can someone point me how to see the difference between fake and good ones? I bought bunch of things on Aliexpress and had a very few issues, according to number of goods i bought.