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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren