mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vibrationsmessung MPU 6050


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Luise R. (luiser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe eine Frage zum MPU 6050.

Ich möchte für meine Projektarbeit mit dem Beschleunigungssensor eine 
Vibration messen, aber weiß nicht genau wie ich das anstellen soll.
Konkrekt habe ich den Beispielsketch aus der Arduino libary genommen und 
den mit einem RGB LED streifen versucht zu verbinden.
 Am Ende würde ich gerne einen Sensor programmiert habe mit dem ich dann 
für Bedienpersonen an Werkzeugen einen Schwellenwert anzeigen lassen 
kann ob die eingeleitete Vibration gesundheitsgefährdend ist oder nicht 
(dafür auch die LEDs grün= nicht schädlich rot=gefährdung)

Mit dem Sketch funktionuerte die Ausgabe der Bewegung des Sensors schon 
und die LED leuchtetn auch,aber wie werte ich die Daten überhaupt aus?? 
Da liegt mein Hauptproblem momentan
Vielleicht weiß jemand hier ja weiter wäre euch sehr dankbar

Schöne Grüße
Luise







// MPU-6050 Short Example Sketch


#include<Wire.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd (); // was muss dort rein?
const int MPU_addr=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;// kann Temperatur und Gyroskop 
nicht rausgenommen werden?



#include <Adafruit_NeoPixel.h>

#define PIN            7
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      10

// When we setup the NeoPixel library, we tell it how many pixels, and 
which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the 
third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + 
NEO_KHZ800);
int delayval = 500; // delay for half a second

void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);



  pixels.begin(); // This initializes the NeoPixel library.

}
void loop(){
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,14,true);  // request a total of 14 
registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C 
(ACCEL_XOUT_L)
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E 
(ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 
(ACCEL_ZOUT_L)

 /* lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(" m/s^2");   // Vibatrion bzw Beschleunigung in m/s^2*/

  Serial.println("AcX = " + String(AcX) + " | AcY = " +String(AcY) + " | 
AcZ = " +String(AcZ));

  delay(100);




  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all 
the way up to the count of pixels minus one.

  for(int i=0;i<NUMPIXELS;i++){

    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(30,10,50)); // Moderately 
bright green color.für rot ? 150,0,0 ?

    pixels.show(); // This sends the updated pixel color to the 
hardware.

    delay(0); // Delay for a period of time (in milliseconds).

}
} // Loop

Autor: TestX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wegen der auswertung solltest du mit deinem betreuer sprechen. in 
welchem kontext sollst du die projektarbeit anfertigen ? 
schule/berufsschule/uni/fh ?

im endeffekt musst du dir anhand der kriterien einen entsprechenden 
algorithmus ausdenken und diesen dann umsetzen.

Autor: Tobias F. (analrapist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luise R. schrieb:
> Vielleicht weiß jemand hier ja weiter wäre euch sehr dankbar

Ueblicherweise benutzt man fuer die Teile ein Kalman Filter um das 
Rauschen wegzukriegen. Wenn du dann nur an der Frequenz und Groesse der 
Vibration interessiert bist wuerde man den Absolutwert des Vektors 
benutzen und darauf eine FFT oder vielleicht DWT rechnen. Falls du die 
Richtung auch brauchst, puh, vielleicht kann man ja was mit ner PCA 
machen, also SVD auf eine Matrix an Messwerten? Oder PCA auf die 
absoluten FFT Ergebnisse in alle Richtungen?

Oder meinst du wie man die Gesundheitsgefaehrdung von Vibrationen 
bestimmt? Gibt es das ueberhaupt solamge einen die Vibrationen nicht 
einfach mechanisch kaputt machen? Irgendwann wirds halt zu Schall...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.