Nano - Max6675 - Typ K Termocouple- Installation- Fehler im Monitoring

Mein erstes arduino Projekt:
Nano clone AZ-Delivery mit Max6675 und Typ K Sensor für Abgastempmessung.
Ich bekomme falsche/keine Werte. Keine Wackelkontakte.
Der Typ k Sensor ist richtig an +/- angeschlossen. Sensor ist i.O.
An Handmessgerät funktioniert er.
Diverse Pinbelegungen nach diversen Projektbeschreibungen aus dem Netz probiert.
Benutze folgende library/sketch:

// this example is public domain. enjoy!
// https://learn.adafruit.com/thermocouple/

#include "max6675.h"

int thermoDO = 8;
int thermoCS = 9;
int thermoCLK = 10;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

void setup() {
 Serial.begin(9600);

 Serial.println("MAX6675 test");
 // wait for MAX chip to stabilize
 delay(2000);
}

void loop() {
 // basic readout test, just print the current temp
 
  Serial.print("C = "); 
  Serial.println(thermocouple.readCelsius());
  Serial.print("F = ");
  Serial.println(thermocouple.readFahrenheit());

  // For the MAX6675 to update, you must delay AT LEAST 250ms between reads!
  delay(1000);
}

Monitoring Werte:
F =32.00
C = 0.00

Wo liegt der Fehler?
Bitte nur sachliche Hinweise.
Für alles andere bin schon zu alt.
Danke im Voraus.

Nano_V3_clone_mit_CH340_Pinout.pdf (892 KB)

(deleted)

32°F sind 0°C - soweit alles richtig. Das ist auch kein Wunder, die Library liest immer Celsius und rechnet dann um.

Das einzig bedenkliche aus meiner Sicht: Wenn der Kommentar mit den 250ms Pause zwischen zwei Messungen stimmt, sollte diese Zeit auch zwischen den Celsius- und Fahrenheit-Messungen liegen.
Begründung: Fahrenheit ist in der Adafruit-MAX6675-Library so implementiert:

float MAX6675::readFahrenheit(void) { return readCelsius() * 9.0 / 5.0 + 32; }

Der Typ k Sensor ist richtig an +/- angeschlossen. Sensor ist i.O.

Das kann ich, muß ich aber nicht bezweiflen.

Aus dem Datenblatt des MAX6675 (https://datasheets.maximintegrated.com/en/ds/MAX6675.pdf ):
A sequence of all zeros means the thermocouple reading is 0°C.

Hast Du Probleme mit dem Interface?
Grüße Uwe

Danke für die Antworten.
Habe mich an einer Stelle definitv nicht korrekt ausgedrückt:
Es müsste Zimmertemp bzw auch Tempänderung bei Erwärmung angezeigt werden.

Wenn wieder Bastelzeit ist werde ich " <max6675.h> " probieren

“Probleme mit dem Interface” habe ich auch gedacht da nichts rauskommt ausser “Standardwerte” 0C 32F oder auch 273K. Je nach verwendertem Sketch in dem auch Kelvin angezeigt wird.

Habe 2 neue Max6675 und 2 Nanos probiert.

Alle Kombis gleiches Resultat.

Nach meinem Post habe ich eine Kabelverbindung +VCC oder -Gnd gelöst.
Dann sind die Monitoringwerte auf max Werte hoch: 1024C und 1825 F
Sketch neu hochgeladen und diesen Pol weggelassen. Weiterhin 1024C und 1825 F
Leider weiss ich nicht mehr ob VCC oder Gnd.
Vielleicht hilft diese Info noch weiter.

Ich wiederhole

Wie hast Du den MAS6675 am Arduino-Klon angeschlossen. Zeig mal ein Schaltbild auch handgezeichnet und ein Foto des Aufbaus.

Grüße Uwe

Es funzt jetzt vom Feinsten.
Meine Lösung:
OEM Nano, MAX 31855, Pinbelegung
richtige Pinbelegung: MAXDO7, MAXCS6, MAXCLK5
Pinbelegung herauszufinden war die Lösung.
Siehe Sketch unten.
Danke für die Mithilfe.
Vorhergehende Fehler zu suchen ist für mich nicht weiter zielführend.

#include <SPI.h>
#include “Adafruit_MAX31855.h”

// Default connection is using software SPI, but comment and uncomment one of
// the two examples below to switch between software SPI and hardware SPI:

// Example creating a thermocouple instance with software SPI on any three
// digital IO pins.
#define MAXDO 7
#define MAXCS 6
#define MAXCLK 5

// initialize the Thermocouple
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

// Example creating a thermocouple instance with hardware SPI
// on a given CS pin.
//#define MAXCS 10
//Adafruit_MAX31855 thermocouple(MAXCS);

void setup() {
Serial.begin(9600);

while (!Serial) delay(1); // wait for Serial on Leonardo/Zero, etc

Serial.println(“MAX31855 test”);
// wait for MAX chip to stabilize
delay(500);
Serial.print(“Initializing sensor…”);
if (!thermocouple.begin()) {
Serial.println(“ERROR.”);
while (1) delay(10);
}
Serial.println(“DONE.”);
}

void loop() {
// basic readout test, just print the current temp

double c = thermocouple.readCelsius();
if (isnan(c)) {
Serial.println(“Something wrong with thermocouple!”);
} else {
Serial.print("C = ");
Serial.println(c);
}

delay(100);
}