Forum: Mikrocontroller und Digitale Elektronik Vibrationsmessung MPU 6050


von Luise R. (luiser)


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

von TestX (Gast)


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.

von Tobias F. (analrapist)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.