Bonjour,
Je cherche à mesurer le champ magnétique créé par des bobines avec des MLX90393 (CJMCU-90393), j'ai besoin d'avoir ce champ à plusieurs endroits donc j'utilise un multiplexeur TCA9548A. Cependant je n'arrive pas récupérer les valeurs du champ avec le mux... Le capteur fonctionne très bien sans, et j'arrive à lire chaque bus du mux sans le capteur.
Voici mon code:
#include <Adafruit_MLX90393.h>
#include <Wire.h>
#define Addr_MUX 0x70
#define Addr_cap 0x0C
#define Addr_xyz 0x3E
#define Addr_xyz_RM 0x4E
Adafruit_MLX90393 Sensor;
//initialise la communicaiton série et le capteur
void setup(){
Serial.begin(9600);
Wire.begin();
//Sensor.begin_I2C();
//Sensor.begin();
Serial.print("Bz");
Serial.print("\t");
Serial.print("By");
Serial.print("\t");
Serial.print("Bx");
Serial.print("\t");
Serial.println("mT");
}
void TCAselect (uint8_t i){
if (i>7) return;
Wire.beginTransmission(Addr_MUX);
Wire.write(i>>1);
Wire.endTransmission();
}
void readB(uint8_t bus){
TCAselect(bus);
unsigned int data[7];
Wire.beginTransmission(Addr_cap);
Wire.write(Addr_xyz);
Wire.endTransmission();
Wire.requestFrom(Addr_cap, 1);
if (Wire.available()==1){
unsigned int c = Wire.read();
}delay(50);
Wire.beginTransmission(Addr_cap);
Wire.write(Addr_xyz_RM);
Wire.endTransmission();
Wire.requestFrom(Addr_cap, 7);
if (Wire.available()==7){
for (int i = 0; i<=7; i++){
data[i]=Wire.read();
}
}
// récupération des données en bits
int X_mag = data[1] * 256 + data[2];
int Y_mag = data[3] * 256 + data[4];
int Z_mag = data[5] * 256 + data[6];
// int T = data[7] * 256 + data[8];
// calibration datas en u.SI
float X_mes = abs(X_mag / 3534.3);
float Y_mes = abs(Y_mag / 3534.3);
float Z_mes = abs(Z_mag / 3534.3);
String(data_mes) = String(X_mes);
String(str2) = String(Y_mes);
String(str3) = String(Z_mes);
data_mes.concat("\t" + str2 + "\t" + str3);
Serial.println(data_mes);
delay(10);
}
void loop(){
readB(0);
delay(500);
}
Et voici le schéma électrique:
Le seul résultat que j'obtient dans la console Arduino est celui-ci:
Merci d'avance