MPU6050 Objekt berechnet Neigung vertikale Ebene

Objekte auf der Neigung aufgezeichnete vertikale Ebene Probleme der MPU6050 berechnet

MPU6050 offiziellen DMP Kurswinkel gemessen werden, aber es wird in der Korrektur Überschrift wird ohne Magnetometer erhöht werden, können wir eine gewisse Korrektur einiger Filteralgorithmen, wie Kalman - Filter oder eine komplementäre Filterung hinzufügen, aber diese können nicht die Beseitigung der Winkelmessung für eine lange Zeit , um das auto-inkrementierte zu bringen. Tilt Messobjekt und eine vertikale Ebene nicht so eine komplizierte Berechnung erforderlich. Wir müssen nur den Wert der Beschleunigung zu erhalten.
Wenn senkrecht zu der horizontalen MPU6050 platziert (nehmen MPU9250 Erläuterung zu tun hat ), wie unten gezeigt:
mpu9250
In diesem Fall brauchen wir nicht auf die Röhrenachse Z zu gehen, brauchen nur die Aufmerksamkeit auf die X-Achsen - Beschleunigung und der Y-Achse.
Der Anfangszustand ist, ist ein Beschleunigungsmesser Lese a_x = 1g; a_y = 0; Fig folgt:
Der Anfangszustand
Lesen diesen Fall X, Y - Achsen - Beschleunigungswert, erfordern mehrere Sätze von Messungen, um die Drift zu entfernen. Gruppen , wie beispielsweise die Messung 500 und X, Y jeweils mit einem Mittelwert als Referenzwert kommen. Bezeichnet offset_x, offset_y.

Zu diesem Zeitpunkt begann MPU6050 basierend auf der Z-Achse und die horizontale Ebene einen Winkel [theta], wie unten gezeigt:
nach der Drehung
ein Simulationsdiagramm, wie folgt:
nach der Drehung
In diesem Fall ist die vertikale Richtung X Reste 1g Beschleunigung, so dass die resultierenden gedreht X1 und Y1 Überlagerung eines Vektors, Arcus - Tangens - Wert des θ - Rotationswinkel kann wie folgt berechnet werden:
Analytical Ebene gedreht
in diesem Fall kann durch die Formel Arkustangenswinkels berechnet werden:
Winkel von atan2 = (AY1, AX1)
zu diesem Zeitpunkt aus dem Winkel in Radian berechnet wird, wenn auf einen Winkel umwandelt, dann gilt :
Winkel = atan2 (AY1, AX1) * 180 [/ die pI
Anmerkung: pI ist pi

Nun kann man den Neigungswinkel der vertikalen Ebene des Objekts beginnt Berechnung erhält einen Wert beginnend offset_y offset_x und berechnet der Anfangswinkel des Objekts in der Ruhestellung der erste Winkel erhalten:
angle_offset = von atan2 (offset_y, offset_x) X 180 [ / PI
dann wird der aktuelle Neigungswinkel berechnet, und dieses Mal werden wir den Winkel , in Ruhe angle_offset haben, starten Sie den Beschleunigungswert MPU6050 Bewegung lesen, um eine gewisse äußere Einflüsse zu beseitigen, stellen wir einen einfachen Prozess Filterung, n ist definiert als Array, Initialisierung des Arrays geben die n - Werte auf die Beschleunigung des XY Fall zugeordnet sind, wie beispiels I set n = 5 ist , wie folgt:

static int acc_x[5] = {0};
static int acc_y[5] = {0};
short ax,ay,az;
u8 i;

	for(i = 0; i < 5; i++){        //如果数组没有拿到5个值,就先拿满五个值 这儿都是初始化时才会直接拿五个
		if(acc_x[i] == 0){
			MPU_Get_Accelerometer(&ax,&ay,&az);
			acc_x[i] = ax;
			acc_y[i] = ay;
		}
	}

Der Wert von n wird auch der Winkel der Messung beeinflussen, kann der Wert von n erhöhen zarteren Änderung des Winkels, wird der Winkeländerung den Wert reduzieren n reaktions, die Notwendigkeit , sich einen Zwischenwert zu testen.
Wir haben dann berechnet, diese Zeit , um den Winkelwert Winkel zu erhalten, Aufmerksamkeit, und jetzt dieser Winkelwert zu bekommen , ist nicht Gegenstand des aktuellen Neigungswinkel, der Neigungswinkel des Objekts der aktuellen Bedürfnisse während der Mathematik.
Zu dieser Zeit lesen wir durch die Y-Achsen - Beschleunigung zu bestimmen Teilobjekt linken oder rechten Seite, wie folgt:

if(ay >= 0){         //判断角度的正反(即往左还是往右偏),此代码中左偏为负,右偏为正
		angle = (angle - fabs(angle_offset));  //此时的值减去初始值,就是当前的倾斜角度
}

Nun auf dem Winkel der Lage sein, zu lesen, dann fügen 360 ° verhindern Rückwärts vorbelastet Verfahren kann in jedem Neigungswinkel der vertikalen Ebene erhalten werden.

Schließlich befestigen Codes verlinken: https: //download.csdn.net/download/cxieyunsky/12241408

-------------------------------------------------- -------------------------------------------------- @ Lilien ----------------------
------------------------ -------------------------------------------------- ------------------------------------------------- 2020 / 11.03

Veröffentlicht zwei Original - Artikel · erntete Lob 1 · Ansichten 1279

Ich denke du magst

Origin blog.csdn.net/cxieyunsky/article/details/104793012
Empfohlen
Rangfolge