Max 6675 SPI Temperatur auslesen

Gast #4719651
Lesenswert?
• ▲
▼
Hallo,

ich versuche (leider vergeblich) Temperaturen über den SPI Sensor "Max 
6675" auszulesen. Ich finde den Fehler einfach nicht, beim Auslesen via 
seriellen Monitor (Arduino) wird immer nur "0.00" ausgegeben, warum auch 
immer.

A1= CLK
A2=CS
A3=DO
A4=VCC
A5=GND

Hier mein Code:
1
#include "stdlib.h"
2
#include "util/delay.h"
3
int v = 0;
4
float Ctemp;
5

6

7
void setup(void) {
8
  Serial.begin(9600);
9
  while (!Serial);
10
  pinMode(A1, OUTPUT);
11
  pinMode(A2, OUTPUT);
12
  pinMode(A3, INPUT);
13
  pinMode(A4, OUTPUT);
14
  pinMode(A5, OUTPUT);
15
  digitalWrite(A2, HIGH);
16
  digitalWrite(A1, LOW);
17
  digitalWrite(A4, HIGH);
18
  digitalWrite(A5, LOW);
19
}
20

21
void loop(void) {
22
  delay(500);
23
  v = spiRead();
24
  if (v == -1) {
25
    Serial.println ("Sensor fehlt");
26
  }
27
  else {
28
    Ctemp = v * 0, 25;
29
    Serial.println(Ctemp);
30

31
  }
32
}
33

34
int16_t spiRead(void) {
35
  int16_t value = 0;
36
  int8_t i;
37
  digitalWrite(A2, LOW);
38
  delayMicroseconds(1);
39
  digitalWrite(A1, HIGH);
40

41
  delayMicroseconds(1);
42
  digitalWrite(A1, LOW);
43

44
  for (i = 14; i >= 0; i--) {
45
    digitalWrite(A1, HIGH);
46

47
    delayMicroseconds(1);
48
    value += digitalRead(A3) << i;
49

50
    digitalWrite(A1, LOW);
51
    delayMicroseconds(1);
52
  }
53
  digitalWrite(A2, HIGH);
54
  delayMicroseconds(1);
55
  if ((value & 0x04) == 0x04) return -1;
56

57
  return value >> 3;
58
}

Ich hoffe, dass ihr mir weiterhelfen könnt, auch das Erhöhen der Delays, 
führte nicht zum Erfolg.

Gruß,

David
Gast #4719667
Lesenswert?
• ▲
▼
Ja, das ist zum Üben gedacht.

Ein Logic-Analyzer wurde bereits benutzt, der Eingang A3 (DO) gibt 
nichts zurück. (Warum?)
Die beiden Ausgänge CLK und CS erfüllen ihre Aufgabe wie vom Max6675 
Datenblatt gefordert.
Gast #4719697
Lesenswert?
• ▲
▼
mr. mo schrieb:
> David schrieb:
>> Die beiden Ausgänge CLK und CS erfüllen ihre Aufgabe wie vom Max6675
>> Datenblatt gefordert.
>
> Dann sollte der Chip aber nach 16 Takten auf CLK irgendwas rausgetaktet
> haben. Hast du ein Screenshot vom LA? Schaltplan evtl. Foto vom Aufbau?

Mit einer bereits fertigen Bibliothek hat es funktioniert/funktioniert 
es. Aufbau Fehler und Hardware Versagen kann ausgeschlossen werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.