AM2322

Hallo zusammen,

ich habe einige AM2322 Temperatur und Feuchtigkeitssensoren die an einem ESP32 DevKit 32D bertieben werden.
(Also nur ein Sensor am ESP32 ich hab halt nur einige rumliegen)
Am ESP32 ist nichts weiter angeschlossen, also nur der eine Sensor (Pin 21,22).

Habe Wire.begin(21, 22); und Wire.begin(); bereits probiert ohne eine Veränderung.

Der I2C Scanner erkennt den Sensor korrekt an Adresse 0x60.
Der Statuscode des Sensors ist 0 und die Feuchtigkeit wird korrekt ausgegeben.

Ich benutze den Beispielcode und erhalte jedoch bei der Temperatur einen utopischen Wert von 257.80°C.

Die Temperatur verändert sich auch sobald ich den Sensor in der Hand halte.

CODE


```
#include <AM232X.h>

AM232X AM2322;

void setup()
{
  Wire.begin(21, 22);

  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("LIBRARY VERSION: ");
  Serial.println(AM232X_LIB_VERSION);
  Serial.println();

  Serial.println("Type,\t\tStatus,\tHumidity (%),\tTemperature (C)");
}

void loop()
{
  // READ DATA
  Serial.print("AM2322, \t");

  int status = AM2322.read();
  switch (status)
  {
  case AM232X_OK:
    Serial.print(status);
    Serial.print("\t");
    break;
  default:
    Serial.print(status);
    Serial.print("\t");
    break;
  }
  // DISPLAY DATA
  Serial.print(AM2322.humidity);
  Serial.print(",\t\t");
  Serial.println(AM2322.temperature);

  delay(2000);
}
```

Library

AM232X by Rob Tillaart
Library for AM232X, like AM2320 and AM2322.

Ergebnis


LIBRARY VERSION: 0.1.4

Type, Status, Humidity (%), Temperature (C)
AM2322, 0 34.40, 257.80
AM2322, 0 34.40, 257.80
AM2322, 0 34.30, 257.80
AM2322, 0 34.20, 257.80
AM2322, 0 34.10, 257.80
AM2322, 0 34.00, 257.80
AM2322, 0 33.90, 257.80
AM2322, 0 33.90, 257.90
AM2322, 0 33.80, 257.90

Hat jemand eine Idee was hier das Problem sein könnte?

Vielen Dank schon mal vorab

Grüße Marco

marco1971:
Hat jemand eine Idee was hier das Problem sein könnte?

Das nicht, aber zwei Ideen, wie Du der Ursache auf die Spur kommen könntest:

  • Sieh im Header der Bibliothek nach, ob es dort Hinweise auf einen Korrekturfaktor o.ä. gibt. Die Versionsnummer könnte jedenfalls ein Hinweis darauf sein, dass die Bibliothek noch sehr unfertig ist.
  • Notiere parallel die konkret gemessene (Thermometer) Temperatur - ist die Abweichung irgendwie „einheitlich“?

Evtl kannst Du mit der zweiten Idee wenigstens ein Workaround ertüfteln.

Gruß

Gregor

PS: das switch-Statement in Deinem Code ist vollkommen überflüssig.

marco1971:
Der I2C Scanner erkennt den Sensor korrekt an Adresse 0x60.

In der Bibliothek sehe ich:

#define AM232X_ADDRESS ((uint8_t)0x5C)

Wie paßt das zusammen?

Moin,

@agmue: ich kann es Dir leider nicht sagen.

Ich habe nun einen neuen ESP32 DevKit 32D beschafft und mit dem funktioniert es aktuell bestens.

Damit können wir das Thema denke ich soweit abhaken.

Danke Euch auf jeden Fall für's mit anschauen.

Grüße Marko

marco1971:
Ich habe nun einen neuen ESP32 DevKit 32D beschafft und mit dem funktioniert es aktuell bestens.

Würde mich interessieren, welche Adresse der funktionierende Sensor dem I2C Scanner anbietet.

I have found the fix, here it is Wrong temperature reading of AM2322 · Issue #114 · RobTillaart/Arduino · GitHub

Thanks for your remark!