INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
MPU6050
20.02.2015, 01:30
Beitrag #9
RE: MPU6050
Hey vielen Dank für die ganzen Rückmeldungen,
also die i2cdevlib habe ich schoneinmal probiert, das Ergebnis war die Ausgabe von -1 in einer Dauerschleife.
Die Verwendung der Adresse 0x69 habe ich bereits versucht aber keinen Unterschied festgestellt.
Den Int-Pin benötige ich nicht da ich nur den MPU angeschlossen habe und auch keine anderweitigen Interups benötige.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 09:20
Beitrag #10
RE: MPU6050
hi,
ich sehe gerade:
/* =========================================================================
NOTE: In addition to connection 3.3v, GND, SDA, and SCL, this sketch
depends on the MPU-6050's INT pin being connected to the Arduino's
external interrupt #0 pin. On the Arduino Uno and Mega 2560, this is
digital I/O pin 2.
* ========================================================================= */

wie ist es beim Due? Der hat doch vermutlich andere Interrupts - was muss ich für den Due einstellen?
geht die lib damit überhaupt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2015 10:19 von Thorsten Pferdekämper.)
Beitrag #11
RE: MPU6050
(20.02.2015 01:30)Kaiduino schrieb:  also die i2cdevlib habe ich schoneinmal probiert, das Ergebnis war die Ausgabe von -1 in einer Dauerschleife.
Seltsam. Bei meinen Versuchen kam es erstmal schon im setup() zu irgendwelchen Meldungen. Als das dann mal ok war, hat alles geklappt. Verwendest Du tatsächlich die Beispiele von Jeff?

Zitat:Den Int-Pin benötige ich nicht da ich nur den MPU angeschlossen habe und auch keine anderweitigen Interups benötige.
Ich bin mir jetzt gerade nicht sicher, aber ich glaube dass die Beispiele von Jeff den Interrupt brauchen.

(20.02.2015 09:20)tito-t schrieb:  wie ist es beim Due? Der hat doch vermutlich andere Interrupts - was muss ich für den Due einstellen?
geht die lib damit überhaupt?
Ich vermute mal, dass der Due auch Interrupt-fähige Pins hat. Das müsstest Du dann halt umstellen. Ob die Lib mit dem Due im Prinzip geht kann ich auch nicht sagen. Ich verwende für sowas Nanos.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 10:42 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2015 10:42 von tito-t.)
Beitrag #12
RE: MPU6050
AVR-Interrupts funktonieren ja leider nicht auf dem Due, und mit ARM-Interrupts kenne ich mich leider nicht aus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 11:31
Beitrag #13
RE: MPU6050
Also noch mal vielen Dank,

es ist so das ich nicht genau die genannteb Beispiele verwendet habe, sondern andere mit der i2cdevlib.
Wer sich für das Projekt interessiert kann gerne auf http://www.segway.vom-kuhberg.de gehen und sich dort nicht alzu aktuelle Informationen ansehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 11:50
Beitrag #14
RE: MPU6050
(20.02.2015 11:31)Kaiduino schrieb:  es ist so das ich nicht genau die genannteb Beispiele verwendet habe, sondern andere mit der i2cdevlib.
Dann nimm mal genau die Beispiele von Jeff, damit sollte es gehen.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2015, 14:37 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2015 15:26 von Marduino_UNO.)
Beitrag #15
RE: MPU6050
Hallo alle zusammen!

Da ich mich nun auch mit dem MPU6050 auseinandersetze schreibe ich mein Anliegen hier nieder.

Hardware:
Arduino UNO
2 x MPU6050

Software:
Arduino IDE 1.7.6

Ich möchte gerne von beiden Sensoren die lineare Beschleunigung auslesen.
Ich habe mir unterschiedliche Programmbeispiele angesehen. Es gibt das Beispiel DMP6 indem die lineare Beschleunigung von einem MPU ausgelesen wird.

In meinem folgenden Programm lese ich die Rohdaten der Beschleunigungen aus:

Code:
#include <MPU6050.h>
#include <Wire.h>
#include <I2Cdev.h>

MPU6050 MPU_first (0x68);
MPU6050 MPU_second (0x69);

int16_t ax1,ay1,az1;
int16_t gx1,gy1,gz1;

int16_t ax2,ay2,az2;
int16_t gx2,gy2,gz2;

#define OUTPUT_READABLE_REALACCEL

void setup() {
  // put your setup code here, to run once:
  
  Wire.begin();
  Serial.begin(38400);
  Serial.println(F("Initializing I2C devices...."));
  MPU_first.initialize();
  MPU_second.initialize();
  Serial.println(F("Testing device connections..."));
  Serial.println(MPU_first.testConnection()? F ("MPU_first connection successful" ): F("MPU_first connection failed"));
  Serial.println(MPU_second.testConnection()? F ("MPU_second connection successful") : F( "MPU_second connection failed"));
}

void loop() {
  // put your main code here, to run repeatedly:
  
  MPU_first.getMotion6(&ax1, &ay1, &az1, &gx1, &gy1, &gz1);
  Serial.println(ax1);
  Serial.println(ay1);
  Serial.println(az1);
  
  Serial.println("++++++++++++++++++++++++++++++");
  MPU_second.getMotion6(&ax2, &ay2, &az2, &gx2, &gy2, &gz2);
  Serial.println(ax2);
  Serial.println(ay2);
  Serial.println(az2);

  Serial.println("------------------------------");
}

Wie kann ich diese Werte nun umwandeln? Oder kann ich das DMP6 Beispiel auf zwei Sensoren erweitern? Mich wundern jedoch auch dass die Werte der beiden Sensoren von einander Abweichen. Ich hätte erwartet, dass die Werte mehr oder weniger im selben Bereich liegen. Das trifft nur für die Z-Komponente zu.

Irgendwie schaffe ich es nicht aus den gegebenen Beispielen von beiden Sensoren die lineare Beschleunigung auszulesen.

In einem anderem Beispiel habe ich noch die Funktion gefunden:
mpu.GetLinearAccel(&aaReal, &&aa, &gravity);
Jedoch bin ich dabei auch gescheitert.

Ich versuche mich mit der Funktion nochmal und dann poste ich mein Ergebnis hoffentlich mit Erfolg.

Danke Euch für Eure Hilfe! Smile

Gruß
Marduino_UNO

Das wollte ich auch noch loswerden:

Bei dem Beispiel DMP6:

Die lineare Beschleunigungen haben folgende Werte (SerialMonitor):
areal -201 654 1364
areal -198 647 1368
areal -195 645 1364
areal -195 636 1356
areal -196 634 1350
areal -193 629 1354
areal -189 622 1355
areal -180 622 1360
areal -178 618 1362
areal -174 612 1365
areal -171 609 1362
areal -175 603 1356
areal -172 597 1354
areal -173 589 1356

Welche Einheit soll das sein?
[a] = m/s² , 9,81m/s² = 1g

Wahrscheinlich übersehe ich etwas eindeutiges....

Gruß
Marduino_UNO

Folgende Lösung habe ich nun:

Code:
#include <MPU6050.h>
#include <Wire.h>
#include <I2Cdev.h>

MPU6050 MPU_first (0x68);
MPU6050 MPU_second (0x69);

//int16_t ax1,ay1,az1;
//int16_t gx1,gy1,gz1;
int16_t ax11,ay11,az11;

//int16_t ax2,ay2,az2;
//int16_t gx2,gy2,gz2;
int16_t ax22,ay22,az22;

#define OUTPUT_READABLE_REALACCEL

void setup() {
  // put your setup code here, to run once:
  
  Wire.begin();
  Serial.begin(38400);
  Serial.println(F("Initializing I2C devices...."));
  MPU_first.initialize();
  MPU_second.initialize();
  Serial.println(F("Testing device connections..."));
  Serial.println(MPU_first.testConnection()? F ("MPU_first connection successful" ): F("MPU_first connection failed"));
  Serial.println(MPU_second.testConnection()? F ("MPU_second connection successful") : F( "MPU_second connection failed"));
}

void loop() {
  // put your main code here, to run repeatedly:
  
  //MPU_first.getMotion6(&ax1, &ay1, &az1, &gx1, &gy1, &gz1);
  MPU_first.getAcceleration(&ax11 , &ay11,  &az11);
  Serial.println("--------------MPU_first-----------------");
  Serial.println(ax11/16384.0 * 9.81274);
  Serial.println(ay11/16384.0 * 9.81274);
  Serial.println(az11/16384.0 * 9.81274);
  
  Serial.println("--------------MPU_second-----------------");
  //MPU_second.getMotion6(&ax2, &ay2, &az2, &gx2, &gy2, &gz2);
  MPU_second.getAcceleration(&ax22 , &ay22,  &az22);
  Serial.println(ax22/16384.0 * 9.81274);
  Serial.println(ay22/16384.0 * 9.81274);
  Serial.println(az22/16384.0 * 9.81274);
}
[/
code]

Diese Werte kommen mir nun bekannt vor.Jedoch schwanken sie.(SerialMonitor):
--------------MPU_first-----------------
-0.45
0.59
-8.22
--------------MPU_second-----------------
0.09
0.20
-9.83
--------------MPU_first-----------------
-0.44
0.60
-8.16
--------------MPU_second-----------------
0.09
0.23
-9.84
--------------MPU_first-----------------
-0.45
0.59
-8.20
--------------MPU_second-----------------
0.09
0.25
-9.86
--------------MPU_first-----------------
-0.45
0.58
-8.19
--------------MPU_second-----------------
0.07
0.26
-9.89
--------------MPU_first-----------------
-0.47
0.58
-8.21
--------------MPU_second-----------------
0.08
0.24
-9.84
--------------MPU_first-----------------
-0.43
0.60
-8.18
--------------MPU_second-----------------
0.07
0.22
-9.86

Gibt es vieleicht doch noch eine bessere/elegantere Lösung?

Gruß
Marduino_UNO

Das ist ja noch nicht die linearen Beschleunigungen...

Bin für jeden Lösungsansatz sehr dankbar. Smile

Gruß
Marduino_UNO
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2015, 18:01 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2015 19:17 von HaWe.)
Beitrag #16
RE: MPU6050
ich würde die Formel etwas umstellen wegen der Rechengenauigkeit
nicht ax11/16384.0 * 9.81274
sondern (ax11* 9.81274)/16384.0

insgesamt sind deine Werte halt noch verrauscht, und beide Sensoren scheinen nicht genau waagerecht zu stehen und auch gegeneinander ein wenig schief.

wo siehst du jetzt selber noch Nachbesserungsbedarf?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  werte vom MPU6050 gy521 bekommen max1798 0 463 18.12.2015 21:11
Letzter Beitrag: max1798
  Programmierung des MPU6050 nur mit Wire.h ? HaWe 2 652 06.05.2015 15:31
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste