Kā lietot akselerometru ar Arduino

  • MPU6050 ir sensors, kas apvieno akselerometru un žiroskopu ar DMP procesoru, kas optimizē veiktspēju.
  • MPU6050 ļauj izmērīt kustību 3 asīs un sazinās ar Arduino, izmantojot I2C vai SPI, kas ir optimāls paātrinājuma un rotācijas mērīšanai.
  • ADXL345 ir vēl viens populārs akselerometrs, kuram ir pārtraukuma tapas un kas ir ļoti precīzs ar 13 bitu izšķirtspēju.

akselerometrs

Sensoru izmantošana ir būtiska daudzos progresīvos elektronikas projektos. Ja atrodaties Arduino pasaulē, droši vien esat dzirdējuši par akselerometru, ierīci, kas mēra paātrinājuma izmaiņas, un žiroskopu, kas ļauj strādāt ar leņķa mērījumiem. Abi ļauj tvert kustību un orientāciju trīsdimensiju asīs, kas paver interesantu iespēju visumu.

Šajā rakstā mēs padziļināti paskaidrosim, kas ir akselerometrs un kā jūs varat to integrēt savos Arduino projektos. Mēs aprakstīsim dažādus moduļus, piemēram, MPU6050, ADXL345 un citus līdzīgus, detalizēti aprakstot, kā no tiem gūt maksimālu labumu. Turklāt mēs piedāvājam jums materiālus par to, kā savienot šos sensorus, un kodu piemērus, kurus varat izmantot savos projektos.

Kas ir akselerometrs?

akselerometrs

Akselerometrs ir sensors, kas mēra objekta paātrinājumu vienā vai vairākās asīs. Tas ietver gan paātrinājumu kustības dēļ, gan paātrinājumu gravitācijas dēļ. Paātrinājumu mēra metros sekundē kvadrātā (m/s²), un, ņemot vērā tā trīs asis (X, Y un Z), mēs varam zināt, kurā virzienā un ar kādu spēku objekts pārvietojas.

Akselerometri ir būtiski lietojumprogrammām, kurās nepieciešama kustības, slīpuma vai vibrācijas noteikšana. Piemēram, tos izmanto viedtālruņos, lai noteiktu ekrāna orientāciju, kameras stabilizāciju, kritienu noteikšanu drošības ierīcēs un videospēlēs.

Arduino projektos akselerometrs nodrošina daudz datu, kurus varat pārvērst darbībās, piemēram, kontrolēt robota orientāciju vai aktivizēt trauksmes signālus, kad tiek pārsniegtas noteiktas paātrinājuma robežas. Turklāt daudzi moduļi, piemēram, MPU6050 un ADXL345 Tie ietver arī žiroskopus, kas ļauj iegūt papildu datus par leņķisko ātrumu un piķi.

MPU6050 akselerometrs

El MPU6050 Tas ir viens no visvairāk izmantotajiem moduļiem tā lielās daudzpusības dēļ. Šī ierīce vienā mikroshēmā apvieno gan trīs asu akselerometru, gan trīs asu žiroskopu, nodrošinot kopumā sešas brīvības pakāpes (6DOF). Turklāt tajā ir iekļauts digitālais kustības procesors (DMP), kas ļauj apvienot abu sensoru rādījumus, optimizējot Arduino veiktspēju, izvairoties no sarežģītiem aprēķiniem mikrokontrollerī.

Akselerometra mērījumu diapazons ļauj strādāt ar regulējamu diapazonu no ±2g, ±4g, ±8g un ±16g. Tas nodrošina lielu precizitāti, jo tai ir 16 bitu pārveidotāji, kas ļauj uztvert nelielas izmaiņas katrā asī. Arī tā iekšējais žiroskops ļauj izmērīt rotācijas ar regulējamu diapazonu no ±250°/s līdz ±2000°/s.

Saziņa ir vienkārša, pateicoties I2C vai SPI protokolam, kas ļauj efektīvi savienot MPU6050 uz Arduino un ātri iegūstiet datus, izmantojot datu kopni. Tā zemais enerģijas patēriņš (vidēji aptuveni 3,5 mA) padara to ideāli piemērotu projektiem, kur enerģijas patēriņš ir jāoptimizē.

MPU6050 savienojuma piemērs

Savienojums starp MPU6050 moduli un Arduino ir diezgan vienkāršs, pateicoties I2C standartam, ko izmanto šis sensors.

MPU6050 Arduino Uno (vai līdzīgi)
VCC 5V
GND GND
SCL A5
SDA A4

Kad šie savienojumi ir izveidoti, varat ielādēt kodu Arduino IDE, kas ļauj nolasīt akselerometra un žiroskopa datus reāllaikā.

Datu lasīšana ar Arduino

Lai iegūtu rādījumus no MPU6050, varat izmantot bibliotēkas MPU6050 y Stieple, kas atvieglo saziņu starp sensoru un Arduino plati. Zemāk mēs parādīsim vienkāršu piemēru, kā nolasīt paātrinājumus un rotācijas un parādīt tos caur seriālo portu:

#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);
}

Akselerometra kalibrēšana

Kad ir izveidots savienojums un saņemti dati, ir svarīgi kalibrēt sensoru, lai iegūtu precīzus rādījumus. Tas ietver kļūdu kompensēšanu, kas radušās sensora slīpuma vai nelielu elektronikas izmaiņu dēļ.

Lai kalibrētu savu MPU6050 moduli, varat pielāgot vērtības kompensācija gan akselerometram, gan žiroskopam. Šīs nobīdes ļaus jums labot rādījumus un ļaut tiem precīzāk atspoguļot reālās vērtības. Šeit ir piemērs, kur nobīdes tiek pielāgotas automātiski:

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);
  }

Šis kods ir tikai fragments, lai ilustrētu, kā pielāgot nobīdes no vairākiem atkārtotiem nolasījumiem.

ADXL345 akselerometrs

El ADXL345 ir 3 asu kapacitatīvs akselerometrs, kas arī ir ļoti populārs Arduino kopienā. Tāpat kā MPU6050, arī šim sensoram ir mazjaudas, un tam ir FIFO atmiņas bloks, lai saglabātu līdz 32 mērījumu kopām no visām trim asīm.

Viena no tā stiprajām pusēm ir tā, ka tā ļauj izvēlēties starp vairākiem mērījumu diapazoniem no ±2g līdz ±16g ar izšķirtspēju līdz 13 bitiem. Tam ir arī divas pārtraukuma tapas, kuras varat konfigurēt, lai noteiktu konkrētus notikumus, piemēram, pēkšņas kustības vai brīvus kritienus.

Izmantojot ADXL345 ar Arduino

Arī ADXL345 savienošana ar Arduino ir diezgan vienkārša. Tālāk ir norādīts, kā savienot sensoru, izmantojot I2C kopni:

ADXL345 Arduino Uno (vai līdzīgi)
VDC 5V
GND GND
SDA A4
SCL A5

Kad esat gatavs, varat izmantot bibliotēku SparkFun_ADXL345 lai ātri un efektīvi palaistu akselerometra rādījumus. Tālāk ir sniegts kods, kā veikt šos nolasījumus:

#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);
}

Akselerometra lietojumprogrammas

Akselerometriem ir plašs lietojumu klāsts. Papildus izmantošanai hobiju projektos ar Arduino, tie ir būtiski elektroniskās ierīcēs, piemēram, mobilajos tālruņos, kamerās un navigācijas sistēmās. Visizplatītākie lietojumi ietver:

  • Kustības noteikšana videospēlēs un kontrolieros.
  • Kameras stabilizācija lai izvairītos no vibrācijām.
  • Drošības ierīces lai noteiktu kritienus vai pēkšņas kustības.
  • Apsardzes signalizācija transportlīdzekļos vai piekļuves sistēmās.

Neatkarīgi no tā, vai vēlaties izveidot savu robotu, izstrādāt uz žestiem balstītu vadības sistēmu vai vienkārši uzzināt vairāk par sensoriem, akselerometrs ir viena no labākajām iespējām, ar ko sākt. Izmantojot praktiskus piemērus un pareizu kalibrēšanu, jūs varat iegūt precīzus rādījumus, kas ļaus pieņemt lēmumus jūsu projektos reāllaikā.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.