Ich habe heute folgenden Sensor bekommen:
https://www.ebay.de/itm/AS5600-Non-Magn ... 4398872484
Leider erhalte ich im Monitor immer folgenden Fehler:
Code: Alles auswählen
AskSin++ v5.0.0 (Mar 3 2021 19:50:51)
MAX44009 Sensor Error 2
BME280 sensor OK
AS5600 FAILURE.
Address Space: 32 - 86
CC init1
CC Version: 04
- ready
Config Freq: 0x2165CA
* Config Changed : List0
* SENDEINTERVALL : 10
* Config changed : List1
WINDDIR angle : 0
BME280:
-T : 235
-P : 10053
-P(NN): 10239
-H : 45
-DP : 110
<- 1A 01 A0 70 F1D002 4F6DA4 00 EB 27 FF 2D 00 00 00 00 00 00 00 00 00 00 00 00 - 3586
waitAck: 00
<- 1A 01 A0 70 F1D002 4F6DA4 00 EB 27 FF 2D 00 00 00 00 00 00 00 00 00 00 00 00 - 4235
-> 0A 01 80 02 4F6DA4 F1D002 00 - 4349
waitAck: 01
ignore 0F 96 86 10 613B66 000000 0A A0 D3 0B 0A 00 - 10702
WINDDIR angle : 0
BME280:
-T : 235
-P : 10053
-P(NN): 10239
-H : 44
-DP : 108
<- 1A 02 84 70 F1D002 000000 00 EB 27 FF 2C 00 00 00 00 00 00 00 00 00 00 00 00 - 14395
Der I2C Scanner sagt folgendes
Code: Alles auswählen
I2C scanner. Scanning ...
Found address: 54 (0x36)
Done.
Found 1 device(s).
Demnach findet er den Sensor ohne Probleme. Angeschlossen habe ich gerade nur den AS5600 per +,-,SCL,SDA
Laut Sens_As5600.h lautet die Adresse auch 0x36
Hat jemand eine Idee woran das noch liegen könnte? Im WEA Sketch habe ich
Code: Alles auswählen
#define WINDDIRECTION_PIN A2 // Pin, an dem der Windrichtungsanzeiger (RESISTORS oder PULSE) angeschlossen ist
//#define WINDDIRECTION_USE_RESISTORS
//#define WINDDIRECTION_USE_PULSE
#define WINDDIRECTION_USE_AS5600
//#define WINDDIRECTION_USE_PCF8574
//#define WINDDIRECTION_USE_VENTUSW132
//#define VENTUSW132_PIN_N A0 // Pins für den Anschluss der
//#define VENTUSW132_PIN_O A1 // 4 Photodioden
//#define VENTUSW132_PIN_S A2 // des Ventus W132
//#define VENTUSW132_PIN_W A6 // Ersatz-Windmessers
Da der Platz zum kompilieren nicht ausreichte habe ich die Methode für den AS3935 rausgeschmissen. Somit komme ich nun au 97%
In der Sens_AS5600.h wird im Init auf Status 32 geprüft. Bei mir kommt allerdings status 16an. Habe mir den Wert mal ausgeben lassen.
Code: Alles auswählen
void init () {
Wire.begin();
uint8_t status = _getReg(STATUSADDRESS) & 0b00111000;
if (status == 32) {
_present=true;
DPRINTLN(F("AS5600 OK."));
} else {
DPRINTLN(F("AS5600 FAILURE."));
DPRINTLN(status);
}
}
Wenn ich aus der 32 eine 16 mache wird er Initialisiert und zeigt mir mit einem Magneten auch Werte an. Woran kann das liegen? Ist das so ok?