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(intBW)

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.

MPU6050_SetDLPF(intBW)

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(intgyro,intaccel)

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

int gyro Max měřítko [stupně/s]int accelMax měřítko [m/s2]
0 2500 2g
1 5001 4g
2 10002 8g
3 20003 16g
jakýkolisyrová hodnotajaký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:

Nahrajeme kód:

/* 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!

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

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

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

Sdílet článek

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit