Jak používat akcelerometr s Arduinem

  • MPU6050 je senzor, který kombinuje akcelerometr a gyroskop s procesorem DMP, který optimalizuje výkon.
  • MPU6050 umožňuje měření pohybu ve 3 osách a komunikuje s Arduinem pomocí I2C nebo SPI, což je optimální pro měření zrychlení a rotace.
  • ADXL345 je další populární akcelerometr, který má přerušovací kolíky a je vysoce přesný se svým 13bitovým rozlišením.

akcelerometr

Použití senzorů je zásadní v mnoha pokročilých elektronických projektech. Pokud jste ve světě Arduina, pravděpodobně jste slyšeli o akcelerometru, zařízení, které měří odchylky ve zrychlení, a gyroskopu, který vám umožňuje pracovat s úhlovými měřeními. Obojí umožňuje zachytit pohyb a orientaci v trojrozměrných osách, což otevírá vesmír zajímavých možností.

V tomto článku podrobně vysvětlíme, co je akcelerometr a jak jej můžete integrovat do svých projektů Arduino. Popíšeme různé moduly, jako je MPU6050, ADXL345 a další podobné, a podrobně popíšeme, jak z nich vytěžit maximum. Kromě toho vám nabízíme materiál o tom, jak tyto senzory zapojit, a příklady kódů, které můžete využít pro své projekty.

Co je to akcelerometr?

akcelerometr

Akcelerometr je senzor, který měří zrychlení objektu v jedné nebo více osách. To zahrnuje jak zrychlení způsobené pohybem, tak zrychlení způsobené gravitací. Zrychlení se měří v metrech za sekundu na druhou (m/s²) a když vezmeme v úvahu jeho tři osy (X, Y a Z), můžeme vědět, kterým směrem a jakou silou se objekt pohybuje.

Akcelerometry jsou nezbytné pro aplikace vyžadující detekci pohybu, náklonu nebo vibrací. Používají se například v chytrých telefonech pro detekci orientace obrazovky, stabilizaci kamery, detekci pádu v bezpečnostních zařízeních a videohrách.

V projektech Arduino poskytuje akcelerometr množství dat, která můžete převést na akce, jako je ovládání orientace robota nebo spouštění alarmů při překročení určitých limitů zrychlení. Dále mnoho modulů jako např MPU 6050 a ADXL345 Zahrnují také gyroskopy, které umožňují další údaje o úhlové rychlosti a sklonu.

Akcelerometr MPU6050

El MPU 6050 Je to jeden z nejpoužívanějších modulů díky své velké univerzálnosti. Toto zařízení kombinuje jak tříosý akcelerometr, tak tříosý gyroskop na jediném čipu, což poskytuje celkem šest stupňů volnosti (6DOF). Kromě toho obsahuje digitální pohybový procesor (DMP), který umožňuje kombinovat hodnoty z obou senzorů, čímž se optimalizuje výkon Arduina tím, že se vyhne složitým výpočtům v mikrokontroléru.

Rozsah měření akcelerometru umožňuje pracovat s nastavitelným rozsahem mezi ±2g, ±4g, ±8g a ±16g. To mu dává velkou přesnost, protože má 16bitové převodníky, které umožňují zachytit malé odchylky v každé ose. Také jeho vnitřní gyroskop umožňuje měření rotací s nastavitelným rozsahem mezi ±250°/s až ±2000°/s.

Komunikace je jednoduchá díky protokolu I2C nebo SPI, který umožňuje efektivní připojení MPU 6050 na Arduino a získat data rychle přes datovou sběrnici. Díky nízké spotřebě energie (v průměru asi 3,5 mA) je ideální pro projekty, kde je nutné optimalizovat spotřebu energie.

Příklad připojení MPU6050

Spojení mezi modulem MPU6050 a Arduinem je poměrně jednoduché díky standardu I2C, který tento senzor používá.

MPU 6050 Arduino Uno (nebo podobné)
VCC 5V
GND GND
SCL A5
SDA A4

Jakmile jsou tato připojení navázána, můžete načíst kód do Arduino IDE, který vám umožní číst data akcelerometru a gyroskopu v reálném čase.

Čtení dat pomocí Arduina

Chcete-li získat údaje z MPU6050, můžete použít knihovny MPU 6050 y Drát, které usnadňují komunikaci mezi senzorem a deskou Arduino. Níže vám ukážeme jednoduchý příklad, jak číst zrychlení a rotace a zobrazovat je přes sériový port:

#include 
#include 

MPU6050 accelGyro;
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  accelGyro.initialize();

  if (accelGyro.testConnection()) {
    Serial.println("Sensor conectado correctamente");
  } else {
    Serial.println("Error al conectar el sensor");
  }
}

void loop() {
  accelGyro.getAcceleration(&ax, &ay, &az);
  accelGyro.getRotation(&gx, &gy, &gz);
  Serial.print("Accel:	");
  Serial.print(ax); Serial.print("	");
  Serial.print(ay); Serial.print("	");
  Serial.print(az); Serial.print("	");
  Serial.print("Gyro:	");
  Serial.print(gx); Serial.print("	");
  Serial.print(gy); Serial.print("	");
  Serial.println(gz);
  delay(100);
}

Kalibrace akcelerometru

Po připojení a příjmu dat je důležité senzor zkalibrovat, abyste získali přesné údaje. To zahrnuje kompenzaci jakýchkoli chyb způsobených nakloněním snímače nebo malými odchylkami v elektronice.

Pro kalibraci modulu MPU6050 můžete upravit hodnoty ofset jak akcelerometru, tak gyroskopu. Tyto offsety vám umožní opravit naměřené hodnoty a učinit je, aby přesněji odrážely skutečné hodnoty. Zde je příklad, kdy se offsety upravují automaticky:

void calibrateMPU6050() {
  int16_t ax, ay, az, gx, gy, gz;
  int ax_offset = 0, ay_offset = 0, az_offset = 0;
  int gx_offset = 0, gy_offset = 0, gz_offset = 0;
  // Inicia con valores de ejemplo...
  for(int i=0; i<100; i++) {
    mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
    ax_offset += ax; ay_offset += ay; az_offset += az;
    gx_offset += gx; gy_offset += gy; gz_offset += gz;
    delay(100);
  }

Tento kód je jen úryvek, který ilustruje, jak upravit offsety z několika opakovaných čtení.

Akcelerometr ADXL345

El ADXL345 je 3osý kapacitní akcelerometr také velmi oblíbený v komunitě Arduino. Stejně jako MPU6050 je tento snímač nízkoenergetický a má paměťový blok FIFO pro uložení až 32 sad měření ze všech tří os.

Jednou z jeho silných stránek je, že umožňuje volit mezi několika rozsahy měření, od ±2g do ±16g, s rozlišením až 13 bitů. Má také dva přerušovací kolíky, které můžete nakonfigurovat tak, aby detekovaly specifické události, jako jsou náhlé pohyby nebo volné pády.

Použití ADXL345 s Arduino

Připojení ADXL345 k Arduinu je také docela jednoduché. Níže je uveden postup připojení snímače pomocí sběrnice I2C:

ADXL345 Arduino Uno (nebo podobné)
Vcc 5V
GND GND
SDA A4
SCL A5

Jakmile budete připraveni, můžete knihovnu používat SparkFun_ADXL345 rychle a efektivně spouštět údaje z akcelerometru. Níže je uveden kód, jak provádět tato čtení:

#include 
ADXL345 adxl;

void setup() {
  Serial.begin(9600);
  adxl.powerOn();
  adxl.setRangeSetting(8); // Selecciona el rango de ±8g
}

void loop() {
  int x, y, z;
  adxl.readAccel(&x, &y, &z);
  Serial.print("X:"); Serial.print(x);
  Serial.print(" Y:"); Serial.print(y);
  Serial.print(" Z:"); Serial.println(z);
  delay(500);
}

Aplikace akcelerometru

Akcelerometry mají širokou škálu aplikací. Kromě toho, že se používají v hobby projektech s Arduinem, jsou nezbytné v elektronických zařízeních, jako jsou mobilní telefony, fotoaparáty a navigační systémy. Mezi nejběžnější aplikace patří:

  • Detekce pohybu ve videohrách a ovladačích.
  • Stabilizace fotoaparátu aby se zabránilo vibracím.
  • Bezpečnostní zařízení pro detekci pádů nebo náhlých pohybů.
  • Bezpečnostní alarm ve vozidlech nebo přístupových systémech.

Ať už si chcete postavit vlastního robota, vyvinout řídicí systém založený na gestech nebo se jednoduše dozvědět více o senzorech, akcelerometr je pro začátek jednou z nejlepších možností. Prostřednictvím praktických příkladů a správné kalibrace můžete získat přesné údaje, které vám umožní rozhodovat se ve vašich projektech v reálném čase.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.