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(®, 1, I2C_CONTROL);
|
5 | // enable Temperature select bit
|
6 | reg |= (1 << TS);
|
7 | // write back bit
|
8 | nau7802_writeAndVerify(®, 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(®, 1, I2C_CONTROL);
|
16 | // disable Temperature select bit
|
17 | reg &= ~(1 << TS);
|
18 | // write back bit
|
19 | nau7802_writeAndVerify(®, 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.