MultiWii Pro und 10DOF Sensor Modul

AlexP

Neuer Benutzer
#1
Hallo Zusammen,

so bis jetzt war ich nur immer stiller Mitleser aber jetzt bin ich an einem Punkt wo ich einfach nicht mehr weiterkomme.

Ich habe in meinem Hexa eine HK MultiWii Pro verbaut und war mit dem Baro nicht ganz zufrieden. Also habe ich mir eine externes Sensorboard bestellt und hab es etwas zu gut gemeint und habe ein 10DOF mit folgenden Sensoren gekauft:

Gyro MPU6050
Mag HMC 5883L
Baro MS5611

Auf meiner MultiWii sind ja bekanntlich lauter ältere Sensoren verbaut bis auf den Mag Sensor. Und genau der macht mir vermutlich Probleme. Da dies genau die gleichen sind, haben sie ja vermutlich auch die gleiche I2C Adresse.
Gibt es eine Möglichkeit das Sensormodul dennoch zum laufen zu bringen (in dem ich evtl den Mag auf der MultiWii deaktiviere...wie auch immer)
Oder benötige ich doch ein etwas kleineres Sensor Modul?

Wichtig wär mir eigentlich nur der MPU6050 und MS5611 gewesen...

Schon mal besten Dank

Gruß Alex
 

Zuse

Erfahrener Benutzer
#3
was hältst Du davon, statt der kompletten FC einfach nur die einzelnen Sensoren, die Dich interessieren, zu aktivieren?
Also nicht #define HK MultiWii Pro, sondern #define MPU 6050, #define MS 5611 und den Mag HMC 5883L lässt Du links liegen, da er sowohl auf Deiner FC als auch auf dem Sensorboard verbaut ist.

Manfred
 

AlexP

Neuer Benutzer
#4
@Zuse
genau das ist ja mein Problem, ich weiß einfach nicht wie ich es anstellen soll, dass zum Beispiel alle Sensoren auf der MultiWii deaktiviert sind und die auf dem Sensorboard verwendet werden.

Denn wenn ich den HMC5883L deaktiviere ist er ja beides mal deaktiviert (da gleiche gleicher Chip und gleiche I2C Adresse) oder sehe ich da irgendetwas falsch?
Fliegt evtl. jemand diese Konfiguration?

Gruß Alex
 

Zuse

Erfahrener Benutzer
#7
@Zuse
genau das ist ja mein Problem, ich weiß einfach nicht wie ich es anstellen soll, dass zum Beispiel alle Sensoren auf der MultiWii deaktiviert sind und die auf dem Sensorboard verwendet werden.

Denn wenn ich den HMC5883L deaktiviere ist er ja beides mal deaktiviert (da gleiche gleicher Chip und gleiche I2C Adresse) oder sehe ich da irgendetwas falsch?
Fliegt evtl. jemand diese Konfiguration?

Gruß Alex
ich hatte Dich eingangs so verstanden, dass Du auf den HMC5883L verzichten könntest
 

konus123

Erfahrener Benutzer
#8
ganz einfach . du kommentierst deine sensoren der imu von Hand und machst die Änderungen für den mag wie beschrieben.
Um einen externen Mag (hier HMC5883L), Multwii 2.2, am I2C Bus des AIOP Boards zu betreiben, muss folgendes vorgenommen werden.

Schritt 1:
In der Datei Sensors.ino muss um die fett gedruckte Zeile ergänzt werden.


Code:
...
// ************************************************************************************************************
// I2C Gyroscope and Accelerometer MPU6050
// ************************************************************************************************************
#if defined(MPU6050)

void Gyro_init() {
TWBR = ((F_CPU / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz
i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x80); //PWR_MGMT_1 -- DEVICE_RESET 1
delay(5);
i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x03); //PWR_MGMT_1 -- SLEEP 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL with Z Gyro reference)
i2c_writeReg(MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); //CONFIG -- EXT_SYNC_SET 0 (disable input pin for data sync) ; default DLPF_CFG = 0 => ACC bandwidth = 260Hz GYRO bandwidth = 256Hz)
i2c_writeReg(MPU6050_ADDRESS, 0x1B, 0x18); //GYRO_CONFIG -- FS_SEL = 3: Full scale set to 2000 deg/sec
// enable I2C bypass for AUX I2C
#if defined(MAG)
i2c_writeReg(MPU6050_ADDRESS, 0x37, 0x02); //INT_PIN_CFG -- INT_LEVEL=0 ; INT_OPEN=0 ; LATCH_INT_EN=0 ; INT_RD_CLEAR=0 ; FSYNC_INT_LEVEL=0 ; FSYNC_INT_EN=0 ; I2C_BYPASS_EN=1 ; CLKOUT_EN=0
#endif
i2c_writeReg(MPU6050_ADDRESS, 0x37, 0x00);
}

void Gyro_getADC () {
...Schritt 2:
In der Datei def.h
muss folgender Abschnitt:

Code:
...
#if defined(CRIUS_AIO_PRO_V1)
#define MPU6050
#define HMC5883
#define MS561101BA
#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = -X; accADC[PITCH] = -Y; accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = -Z;}
#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050
#undef INTERNAL_I2C_PULLUPS
#define I2C_SPEED 400000L //400kHz fast mode
...zu:

Code:
...
#if defined(CRIUS_AIO_PRO_V1)
#define MPU6050
#define HMC5883
#define MS561101BA
#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = -X; accADC[PITCH] = -Y; accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = -Z;}
//#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050
#undef INTERNAL_I2C_PULLUPS
#define I2C_SPEED 400000L //400kHz fast mode
...geändert werden.

Danach kann im GUI der Mag neu kalibriert werden, es werden dann keine Mag Werte mehr ausgelesen,falls noch kein Externer am I2C angeschlossen. Ist ein Externer angeschlossen, so sollte dessen Werte jetzt ausgelesen werden.

Die Methode sollte auch für andere Boards mit MPU6050 und Mag am Aux I2C Bus funktionieren.



es sind ja alle sensoren auf dem board anders als auf der imu, also andere Adressen. ausser der mag.

Alex
 
Zuletzt bearbeitet:

AlexP

Neuer Benutzer
#9
ich hab es jetzt nochmal versucht (wie oben beschrieben) aber glaub das klappt bei mir nicht, habe dann auch noch folgenden Satz gefunden:

Vorwort:
Anscheinend lässt sich nur bei Version v1.0 der HMC5883L via Software deaktivieren - bei v1.1 und v2.0 geht es nicht mehr !


Ist hier die MultiWii Software gemeint? Wenn ja würde dies ja heissen dass dieser Lösungsansatz für mich nicht mehr klappen würde mit der V2.2 :-(

Gruß Alex
 

AlexP

Neuer Benutzer
#11
Ja glaub ich gebe es echt langsam auf und verkauf wenigstens das Sensorboard wieder und hol mir nur eins mit einem Baro.

Eins mit Baro und MPU6050 gibt es nicht rein zufällig?

Danke und Gruß
Alex
 
#12
So wie oben bechrieben funktioniert es bei dir...;).
Ich fliege seit einer Woche mit einem externen Mag und dem beschriebenen Workarround. Die Headfree Funktion funktioniert jetzt bei mir wunderbar =).
 

mueckchen

Erfahrener Benutzer
#13
Der HMC5883 hat (leider) keine Möglichkeit, die Adresse einzustellen...
Somit gibt es folgende Möglichkeiten:
1.: Einen HMC5883 runterlöten
2.: Bei einem HMC5883 folgende Pins isolieren (Leiterbahn durchtrennen) Pin 2, Pin 4 und Pin 13
3.: Einzelne Sensoren (MPU6050 & MS5611) verwenden
4.: IMU mit MPU9150 verwenden
5.: Andere Flightcontrol verwenden

Ich würde einfach eine FreeIMU ohne Mag aufbauen, oder von der vorhandenen IMU den Mag runterlöten

Gruß
mueckchen
 

AlexP

Neuer Benutzer
#14
Danke das ist eine Gute Idee, einfach den Chip von der IMU zu entfernen, würde mir wesentlich weniger weh tun wie von der MultiWii :)

Die Frage ist nur, wenn ich den Chip entferne, funktioniert dann die IMU noch oder ist durch den fehlenden Chip eine Leiterbahn unterbrochen die nicht unterbrochen sein sollte?

Gruß Alex
 

mueckchen

Erfahrener Benutzer
#15
Normalerweise sollte alles (bis auf Mag) noch funktionieren, da der Mag parallel zur (schlimmstenfalls hinter der) MPU6050 sitzt!
Welche IMU hast Du denn?
Mach doch mal Fotos (Makro!!!) von beiden Seiten...

Gruß
mueckchen
 

JUERGEN_

Generation 60++
#17
ist auf der multiwii ein MPU6050 drauf ?
hängt der am Magneto am AUX ? eher nicht :)


die 10DDOF haben es, und sind damit kompatibel zum "FreeIMU version 0.4"

somit dürften die anderen Sensoren nicht mehr stören.

:)
 
FPV1

Banggood

Oben Unten