Mag bei Drotek 10dof deaktivieren

Greyflyer

Erfahrener Benutzer
#1
Hallo zusammen,

in meinem Copter musste ich das Drotek Sensor Board leider ziemlich dicht an die Stromverteilung verbauen. In der Folge reagiert der Mag nun geringfügig, wenn ich Gas gebe.

Ich möchte daher nun den Mag des Drotek Board deaktivieren und ein separaten HMC5883 an geeigneter Stelle über I2C einbinden.

Kann mir jemand sagen, was ich wo im Sketch auskommentieren muss, damit der Mag des Drotek Boards deaktiviert wird?

Und wenn ich anschließend den separaten Mag über I2C einbinde, muss ich mich um die Adresse kümmern, oder funktioniert das automatisch, wenn ich im Sketch den HMC5883 als Einzelsensor aktiviere?

Grüße
Dirk
 

MotoCMP

Erfahrener Benutzer
#2
Würd mich auch interessieren...
 

Ori0n

Back again
#3
Theoretisch musst du das Mag auf dem Drotek Board hardware-basierend deaktivieren, heißt die Adressleitung kappen, andernfalls würde immer noch das selbe Mag mit dert selben Adresse am I2C Bus hängen, und dann kennt sich der FC nicht mehr aus welches jetzt das Richtige ist.

Wenn ich mich richtig erinnere gibt es noch eine zweite Möglichkeit, aber nur wenn das Mag am I2C Bus der MPU6050 hängt und nicht am allgemeinen direkt, in diesem Fall kann man es auch softwarebasierend deaktivieren (ich kenn das Problem nur vom Crius AIOP, fragt mich nicht wie es genau geht, am besten schaut mal hier. In dem Beitrag ist der Datenleitungs-Pin vom Mag markiert, den müsste man durchtrennen um es hardwaremäßig zu deaktiveren. Dabei ist wenn man gerade draufschaut der Pin der erste oben. Später im selben Thread wird glaub ich auch noch die softwarebasierende Lösung besprochen).

Softwarebasierende Deaktivierung ruiniert halt nix, aber hardwarebasierend funktioniert immer und ist schneller :).
Wenn ihr herausfindet obs softwareseitig geht oder wenn irgendwer sonst weiterweis lasst es mich bitte wissen.
 

Greyflyer

Erfahrener Benutzer
#4
Theoretisch musst du das Mag auf dem Drotek Board hardware-basierend deaktivieren, heißt die Adressleitung kappen, andernfalls würde immer noch das selbe Mag mit dert selben Adresse am I2C Bus hängen, und dann kennt sich der FC nicht mehr aus welches jetzt das Richtige ist.

Wenn ich mich richtig erinnere gibt es noch eine zweite Möglichkeit, aber nur wenn das Mag am I2C Bus der MPU6050 hängt und nicht am allgemeinen direkt, in diesem Fall kann man es auch softwarebasierend deaktivieren (ich kenn das Problem nur vom Crius AIOP, fragt mich nicht wie es genau geht, am besten schaut mal hier. In dem Beitrag ist der Datenleitungs-Pin vom Mag markiert, den müsste man durchtrennen um es hardwaremäßig zu deaktiveren. Dabei ist wenn man gerade draufschaut der Pin der erste oben. Später im selben Thread wird glaub ich auch noch die softwarebasierende Lösung besprochen).

Softwarebasierende Deaktivierung ruiniert halt nix, aber hardwarebasierend funktioniert immer und ist schneller :).
Wenn ihr herausfindet obs softwareseitig geht oder wenn irgendwer sonst weiterweis lasst es mich bitte wissen.
Also hardwareseitig würde ich da nur ungern was verändern, schließlich läuft die 10dof einwandfrei und vielleicht werde ich sie später nochmal komplett - also mit Mag - nutzen wollen.

Zwar wird die 10dof in der config.h als Ganzes eingebunden, trotzdem werden die einzelnen Sensordaten doch separat ausgelesen und verarbeitet. Da muss es doch auch softwaretechnisch eine Lösung geben. Ich bin allerdings nicht der Programmierer vor dem Herrn und kann das fachlich sicher nicht richtig bewerten. Vielleicht meldet sich noch jemand mit einer Idee. So ganz allein
bin ich mit diesem Problem scheinbar nicht.

Grüße
Dirk
 

Rangarid

Erfahrener Benutzer
#5
Du kannst einfach die Sensoren definieren die drauf sind und das Mag weglassen. Also ACC und Gyro einzeln deklarieren (unter den ganzen Boards). Musst dann halt testen, ob die Ausrichtung der Sensoren dann noch stimmt.
 

Ori0n

Back again
#6
Ja, aber er will ein externes Mag vom selben Typ (HMC5883) verwenden, das weiter weg entfernt ist das Drotek Board. Das zweite Mag hat genau die selbe Adresse, also bringt das einzelne Aktivierung gar nix, da erst wieder beide aktiv sind.

Schau mal, ob das Mag am DroTek Board am I2C der MPU hängt oder am allgemeinen.
Wenn es an der MPU hängt kann man es wie oben schon gesagt glaub ich auch softwaretechnisch deaktivieren
 

Greyflyer

Erfahrener Benutzer
#7
Hallo Leute,

habe soeben softwaretechnisch den Mag in der 10dof erfolgreich deaktiviert. Hierzu habe ich in der def.h die entsprechenden Zeilen auskommentiert (hier rot markiert). Ich erwarte Morgen meinen separaten HMC5883. Den werde ich dann über I2C einbinden und in der conf.h als unabhängigen Mag einrichten. Bin gespannt, ob sich dann was tut bzw. mir die I2C Errors um die Ohren fliegen.

#if defined(DROTEK_10DOF_MPU)
#define MPU6050
//#define HMC5883
#define MS561101BA
#define ACC_ORIENTATION(X, Y, Z) {imu.accADC[ROLL] = Y; imu.accADC[PITCH] = -X; imu.accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] = X; imu.gyroADC[PITCH] = Y; imu.gyroADC[YAW] = -Z;}
//#define MAG_ORIENTATION(X, Y, Z) {imu.magADC[ROLL] = -Y; imu.magADC[PITCH] = X; imu.magADC[YAW] = -Z;}
#define MPU6050_ADDRESS 0X69
//#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050
#undef INTERNAL_I2C_PULLUPS
#endif

Grüße
Dirk
 

MotoCMP

Erfahrener Benutzer
#8
Oui, da bin ich gespannt
 

Ori0n

Back again
#9
Ja, sollte funktionieren weil auf dem DroTek Board der Kompass an der MPU6050 hängt und du so den eigenen I2C der MPU deaktiviert hast. Dein neues Mag wird am direkten Bus des FC hängen, also sollten sich die Mag's nicht stören
 

Greyflyer

Erfahrener Benutzer
#10
Hallo Zusammen,

habe nun den externen Mag mal installiert und kann teilweisen Erfolg vermelden. Der Mag wird erkannt und in der GUI tut sich auch was, wenn ich den Copter bewege, und das alles ohne jeden I2C Error. Soweit so gut.

Aber irgendwie verhält sich der Mag merkwürdig. Die Kompassanzeige in der GUI schwankt immer ein wenig, obwohl der Copter ruhig steht und wenn ich ihn drehe, wundert der Kompasspfeil erst entsprechend der Drehgeschwindigkeit des Copters um dann unvermittelt einen großen Sprung zu machen. Danach zeigt der Kompassfeil jedesmal in eine willkürlich andere Richtung. Zunächst dacht ich, dass liegt an der Kalibrierung. Habe aber bereits zweimal kalibriert - ohne Besserung. Ich habe die Mag Platine ganz weit vorn am Copter auf der Kameraplatte provisorisch angebracht, also weit weg von Stromkabeln mit entsprechenden Magnetfeldern (siehe Pfeil).


Sicherlich ist die Einbaurichtung der Mag Platine von entscheidender Bedeutung. Ich gehe aber davon aus, dass ich hier keinen Fehler gemacht habe, also X als Copter-Längsachse, Y als Copter-Querachse und Z als Copter-Hochachse. Hier noch ein Bild von der Sensorplatine, bevor ich sie eingeschrumpft habe mit den entsprechenden Achsenangaben.


Habe schon die Befürchtung, dass mit dem Mag irgendwas nicht stimmt. Hatte kürzlich hier im Forum von mehrfach defekten Mag Platinen aus dem Hause Drotek gelesen.

Hat vielleicht noch jemand eine Idee, was falsch läuft?

Grüße
Dirk
 

Greyflyer

Erfahrener Benutzer
#11
Also irgendwie scheint im Moment der Wurm drin zu sein. Statt aufwendiger Suche der Fehlerquelle meines Problems mit dem Drotek Sensor Board habe ich mir einfach nochmal ein Neues bei einem anderen Lieferanten besorgt, nämlich dieses:


Nachdem ich das Teil sorgfältig verkabelt habe, wurde der Kontakt mit dem I2C Bus meiner Flightcontrol hergestellt. Ziemlich bald roch es dann angebrutzelt und die Bauteile auf dem Sensorboard waren sehr heiß. Habe natürlich sofort die Verbindung getrennt und wieder und wieder die Pinbelegung geprüft - ich konnte keinen Fehler finden. Masse an GND, VCC an 5V des I2C Busses, SDA an SDA und SCL an SCL.

Vielleicht soll es nicht sein, dass ich einen externen Mag installiere. Werde das ganze jetzt erstmal ruhen lassen, um ein wenig Abstand zu gewinnen...

...es denn, einer hat noch eine Idee, was ich verkehrt gemacht haben könnte - entweder bei dem Drotek Sensor oder bei dem neuen Mag.

Grüße
Dirk
 
FPV1

Banggood

Oben Unten