interner Temperatursensor NAU7802 24Bit ADC

OP #3502813
Lesenswert?
• ▲
▼
Hallo zusammen,

ich verwende in einem Projekt den 24Bit ADC NAU7802. Ich möchte den 
internen Temperatursensor auslesen, erhalte aber nur unplausible Werte.

Im Datenblatt
http://www.chipcad.hu/letoltes/NAU7802.pdf
steht auf Seite 22, dass ich den Temperatursensor als Eingang auswählen 
soll. Den PGA habe ich ausgeschaltet, weil ich mit eingeschaltetem PGA 
auch bei dem normalen Eingang nur zufällige Werte erhalte.

Nach Seite 8 sollte ich bei 25°C einen Wert von 109mV erhalten, der 
Temperaturkoeffizient ist 360uV/°K.

Ich erhalten aber einen Wert von 40239uV, der sich auch nicht mit der 
Temperatur ändert. Hat jemand eine Ahnung, wie das Ding funktioniert, 
oder was ich noch ausprobieren könnte?

Anbei noch etwas Code:
1
int32_t nau7802_readTemperatureADC() {
2
  uint8_t reg = 0;
3
  // read I2C_CONTROL register
4
  nau7802_read(&reg, 1, I2C_CONTROL);
5
  // enable Temperature select bit
6
  reg |= (1 << TS);
7
  // write back bit
8
  nau7802_writeAndVerify(&reg, 1, I2C_CONTROL);
9

10
  // get the value
11
  int32_t result = nau7802_readADC();
12

13
  reg = 0;
14
  // read I2C_CONTROL register
15
  nau7802_read(&reg, 1, I2C_CONTROL);
16
  // disable Temperature select bit
17
  reg &= ~(1 << TS);
18
  // write back bit
19
  nau7802_writeAndVerify(&reg, 1, I2C_CONTROL);
20

21
  return result;
22
}
23
int32_t adc = nau7802_readTemperatureADC();
24
int32_t temperature = nau7802_convertToUV(adc);

Die 'nau7802_convertToUV(adc)' Funktion ist getestet. Der rohe Wert des 
Temperatursensors ist 282653 bei einer Vref von 2,4V.


Ich habe eine *.c und *.h Datei geschrieben um den A/D-Wandler zu 
konfigurieren. Also im wesentlichen das Datenblatt abgeschrieben. Wer 
sich etwas Ärger sparen möchte, kann diese gerne privat verwenden.
Angehängte Dateien:
OP #3526183
Lesenswert?
• ▲
▼
Ich habe den chinesischen Support kontaktiert und wirklich gute und 
schnelle Hilfe in Form von fertig ausgefüllten i2c Registern bekommen.

Der Temperatursensor funktioniert jetzt. Die Änderungen sind:

1. PGA_BYPASS muss disabled sein. Sonst "dropt" die Spannung des LDOs 
bei jeder Wandlung, was man auch deutlich mit dem Oszi sehen kann.

2. Die Werte des Temperatursensors sind anscheinend nur 23bit (?). D.h. 
bei einer funktionierenden Messung habe ich Werte von ca. 54mV bekommen. 
Als fix habe ich die Werte für eine Temperaturmessung mit 2 
multipliziert.

3. Der Wandler braucht nach einem Kanalwechsel lange, um sich 
einzustellen. D.h. die ersten 4 Messungen sind nicht zu gebrauchen. Ich 
starte nach dem Kanalwechsel 4 dummy samples. Es kann sein, dass auch 
Warten reicht.

Im Anhang die aktuelle Version.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.