Přístroj k měření vibrací s Akcelerometrem

Přístroj k měření vibrací s Akcelerometrem

Koupil jsi GY-521 a vyzkoušel podle toho návodu? Jdeme na náš nový projekt!

Dneska uděláme přistroj na měření vibrací.

Tenhle návod bude fungovat jen s čipem MPU6050 a I2C sběrnicí na adrese 0×68 a taky s Arduino Uno nebo Mega.

MPU6050_ReadData()   

Tato funkce bude číst pouze užitečné údaje. V tom    to případě se jedná o akcelerometr, gyroskop a teplotu. Po přečtení jsou tyto proměny (temp_scalled, accel_x_scalled, accel_y_scalled, accel_z_scalled, gyro_x_scalled, gyro_y_scalled a gyro_z_scalled) aktualizovány.

MPU6050_ResetWake()      

Tato funkce obnoví čip do své výchozí hodnoty. Doporučuje se provést obnovení před nastavením čipu pro jakýkoliv účel.

MPU6050_SetDLPF(int BW) 

Tato funkce bude konfigurovat vestavěný low-pass filtr. Int BW by měl obsahovat hodnoty (0-6). Šířka pásma filtru se bude měnit v závislosti na níže uvedené tabulce.

int BW

DLPF šířka pásma

0 nebo jakýkoli

Inf

1

184

2

94

3

44

4

21

5

10

6

5

 

Pokud int BW není v (0-6), LPF je zakázána, což je totéž, jako šířka pásma nastavená do nekonečna.

MPU6050_SetGains(int gyro,int accel)  

Tuto funkci použijte pro nastavení maximálního rozsahu měření.

int gyro

Max měřítko [stupně/s] int accel Max měřítko [m/s2]

0

250 0

2g

1

500 1

4g

2

1000 2

8g

3

2000 3

16g

jakýkoli syrová hodnota jakýkoli

syrová hodnota

Neupravený kód a knihovny najdeš tady: http://hobbylogs.me.pn/?p=47. Odkaz je v angličtině.

Upravený kód a knihovny jsou tady 

Zapojíme to podle obvodu:

mereni-vibraci_bb

Nahrajeme kód:


		 kopírovat
/* Author = helscream (Omer Ikram ul Haq)
Website: http://hobbylogs.me.pn/?p=47
Ver: 0.1 beta --- Start
Ver: 0.2 beta --- Bug fixed for calculating "angle_y_accel" and "angle_x_accel" in "Gyro_header.ino" file
Upraveno laskarduino.cz
*/

#include 
#include "gyro_accel.h"
// Defining constants
#define dt 5				// time difference in milli seconds
#define rad2degree 57.3		// Radian to degree conversion
#define Filter_gain 0.95	// e.g.  angle = angle_gyro*Filter_gain + angle_accel*(1-Filter_gain)

unsigned long t=0; 			// Time Variables

// Main Code
void setup(){
  Serial.begin(115200);
  Wire.begin();
  MPU6050_ResetWake();		// funkce obnoví čip na své výchozí hodnoty
  MPU6050_SetGains(0,1);	// nastavení maximálního rozsahu měření
  MPU6050_SetDLPF(0); 		// konfigurovaní vestavěného low-pass filtrů do nekonečna pro kalibrací
  MPU6050_OffsetCal();
  MPU6050_SetDLPF(6); 		// konfigurovaní vestavěného low-pass filtrů na min. šířku pásma
  
  Serial.print("accel_x_scalled");
  Serial.print("\taccel_y_scalled");
  Serial.print("\taccel_z_scalled");
 
  Serial.println("\tzatíženi");
    
  t=millis(); 
}
void loop(){
  t=millis(); 
  
  MPU6050_ReadData();

  Serial.print(accel_x_scalled);
  Serial.print("\t");
  Serial.print(accel_y_scalled);
  Serial.print("\t");
  Serial.print(accel_z_scalled);
  Serial.print("\t");
  
  Serial.println(((float)(millis()-t)/(float)dt)*100);
  
  while((millis()-t) < dt){ // ujistit se doba smyčky se rovna dt
  // Nic neděláme, čekáme :)"
  }
}

Délka smyčky je nastavena na 5 ms, aby měly smyčky stejnou dobu trvání (jinak smyčka trvá 3 až 5ms).

Pěvně přidělej čidlo třeba k motoru, spusť seriálový monitor (vyber rychlost 115200), vyčkej na kalibraci a zkus!

screen1

Teď vypni motor a Arduino, všechno zkopíruj (Ctrl + A , Ctrl + C) a dej to do Excelu. Zkoumej. Nezapomeň změnit formát buněk na čísla a vyměň všechny tečky za čárky. Příklad v příloze 🙂 Jo, a bacha na osu Z, je tam ještě Gravitační zrychlení  9,823 m·s-2

screen3screen2

Já jsem na měření vibrací používal osu Y.

Hodně štěstí ve Tvém projektu 🙂

Napsat komentář