Mündəricat:

ADXL345 Arduino Uno R3 istifadə: 5 addım
ADXL345 Arduino Uno R3 istifadə: 5 addım

Video: ADXL345 Arduino Uno R3 istifadə: 5 addım

Video: ADXL345 Arduino Uno R3 istifadə: 5 addım
Video: How to Interface ADXL345 Accelerometer with Arduino UNO 2024, Noyabr
Anonim
ADXL345 Arduino Uno R3 istifadə edir
ADXL345 Arduino Uno R3 istifadə edir

Bu dərsdə ADXL345 sürətləndirmə sensorundan necə istifadə edəcəyimizi öyrənəcəyik.

Addım 1: Komponentlər

- Arduino Uno lövhəsi * 1

- USB kabeli * 1

- ADXL345 *1

- Çörək lövhəsi * 1

- Jumper telləri

Addım 2: Prinsip

Sürətləndirmə zamanı yaranan qüvvəni ölçmək üçün bir akselerometr istifadə olunur. Ən əsas, 1g olan cazibə qüvvəsinin ən məşhur sürətidir.

Cazibə qüvvəsinin səbəb olduğu sürətlənməni ölçərək cihazın əyilmə bucağını səviyyəli səthə hesablaya bilərsiniz. Dinamik sürətlənməni təhlil edərək cihazın necə hərəkət etdiyini deyə bilərsiniz. Məsələn, özünü balanslaşdıran lövhə və ya hoverboard Kalman filtri və duruş düzəldilməsi üçün sürətləndirici sensoru və giroskopu tətbiq edir.

ADXL345

ADXL345, kiçik, nazik, aşağı güclü, ± 16 g-ə qədər yüksək qətnamə (13 bit) ölçüsü olan 3 oxlu akselerometrdir. Rəqəmsal çıxış məlumatları 16 bitlik iki tamamlayıcı olaraq formatlanır və ya SPI (3 və ya 4 telli) və ya I2C rəqəmsal interfeysi vasitəsilə əldə edilə bilər. Bu təcrübədə I2C rəqəmsal interfeysi istifadə olunur.

Tilt algılama tətbiqlərində cazibənin statik sürətlənməsini, eləcə də hərəkət və ya şok nəticəsində yaranan dinamik sürətlənməni ölçmək üçün çox uyğundur. Yüksək qətnaməsi (4 mg/LSB), meyl dəyişikliyini 1,0 ° -dən aşağı ölçməyə imkan verir. Mükəmməl həssaslıq (3.9mg/LSB @2g) ± 16g-ə qədər yüksək dəqiqlikli çıxış təmin edir.

ADXL345 necə işləyir

ADXL345, ön hissedici hissə ilə sürətlənməni algılar və sonra elektrik siqnalını hiss edən komponent onu analoq olan elektrik siqnalına çevirir. Bundan sonra, modula birləşdirilmiş AD adapteri analoq siqnalını rəqəmsal siqnala çevirəcək.

X_OUT, Y_OUT və Z_OUT, müvafiq olaraq X, Y və Z oxundakı dəyərlərdir. Modulu üzü yuxarı qoyun: Z_OUT maksimum +1g -ə çata bilər, X_OUT minimumu Ax istiqamətinə doğru -1g, Y_OUT minimumu Ay istiqamətinə doğru -1g -dir. Digər tərəfdən, modulu tərsinə çevirin: minimum Z_OUT -1g, X_OUT maksimumu Ax istiqamətinə +1g, Y_OUT maksimumu isə Ay istiqamətinə doğru +1g -dir., aşağıda göstərildiyi kimi. ADXL345 modulunu döndərin və üç dəyərin dəyişdiyini görəcəksiniz.

A kanalı yüksək səviyyədən aşağı səviyyəyə keçdikdə, B kanalı yüksək səviyyədədirsə, bu, fırlanan enkoderin saat yönünde döndüyünü göstərir (CW); əgər o anda B kanalı aşağı səviyyədədirsə, bu, saat əqrəbinin əksinə fırlanma deməkdir (CCW). Beləliklə, A kanalı aşağı olduqda B kanalının dəyərini oxusaq, fırlanan kodlayıcının hansı istiqamətdə döndüyünü bilə bilərik.

Prinsip: Aşağıdakı Rotary Encoder modulunun sxematik diaqramına baxın. Buradan, fırlanan kodlayıcının 3 pininin, yəni moduldakı CLK -nın, B kanalı olduğunu, DT olan Pin 5 -in A kanal olduğunu görə bilərik. Yazıcının fırlanma istiqamətini bilmək üçün CLK -nin dəyərini oxuyun və DT.

Dövrədə 3.3v gərginlik tənzimləyicisi çipi var, buna görə modulu 5V və ya 3.3V ilə gücləndirə bilərsiniz.

SDO GND -yə qoşulduğundan ADXL345 -in I2C ünvanı 0x53, 0xA6 yazmaq üçün, 0xA7 oxumaq üçündür.

ADXL345 Modulunun Pin Fonksiyonu.

Addım 3: Prosedurlar

Addım 1. Dövrəni qurun.

Addım 2:

Kodu https://github.com/primerobotics/Arduino saytından yükləyin

Addım 3:

Eskizi Arduino Uno lövhəsinə yükləyin

Kodu idarəetmə lövhəsinə yükləmək üçün Yüklə simgesini vurun.

Pəncərənin altında "Yükləmə tamamlandı" görünürsə, bu eskizin uğurla yükləndiyini bildirir.

Yüklədikdən sonra aşkarlanan məlumatları görə biləcəyiniz Serial Monitoru açın. Modulun sürətlənməsi dəyişdikdə, rəqəm pəncərədə buna uyğun olaraq dəyişəcək.

Addım 4: Kod

Kod
Kod

// ADXL335

/********************************

ADXL335

Qeyd: vcc5v, lakin ADXL335 Vs 3.3V -dir

Dövrə:

5V: VCC

analoq 0: x oxu

analoq 1: y oxu

analoq 2: z oxu

Yandırdıqdan sonra

Proqramda, aşkarlanan məlumatların göstərildiyini görə biləcəyiniz serial monitor ayıklama pəncərəsini açın. Sürətlənmə dəyişdikdə rəqəm də buna uyğun olaraq dəyişəcək.

*********************************

/E -poçt:

// Veb sayt: www.primerobotics.in

const int xpin =

A0; // akselerometrin x oxu

const int ypin =

A1; // y oxu

const int zpin =

A2; // z oxu (yalnız 3 oxlu modellərdə)

boş quraşdırma ()

{

// seriyalı rabitəni işə salın:

Serial.begin (9600);

}

boşluq döngəsi ()

{

int x = analogRead (xpin); // xpindən oxuyun

gecikmə (1); //

int y = analogRead (ypin); // ypindən oxuyun

gecikmə (1);

int z = analogRead (zpin); // zpindən oxuyun

float zero_G = 338.0; // ADXL335 enerji təchizatı

Vs 3.3V ilə: 3.3V/5V*1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print (y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

sal

zero_Gx = 331.5; // x oxunun zero_G çıxışı: (x_max + x_min)/2

sal

zero_Gy = 329.5; // y oxunun zero_G çıxışı: (y_max + y_min)/2

float zero_Gz = 340.0; //

z oxunun zero_G çıxışı: (z_max + z_min)/2

float miqyası =

67.6; // Vs 3.3V ilə enerji təchizatı: 3.3v/5v *1024/3.3v *330mv/g = 67.6g

float miqyası_x =

65; // x oxunun miqyası: x_max/3.3v*330mv/g

float miqyası_y =

68.5; // y oxunun miqyası: y_max/3.3v*330mv/g

float scale_z =

68; // z oxunun miqyası: z_max/3.3v*330mv/g

Serial. çap (((float) x

- zero_Gx)/scale_x); // seriya monitorda x dəyərini çap edin

Serial.print ("\ t");

Serial. çap (((float) y

- zero_Gy)/scale_y); // seriya monitorda y dəyərini çap edin

Serial.print ("\ t");

Serial. çap (((float) z

- zero_Gz)/scale_z); // seriya monitorda z dəyərini çap edin

Serial.print ("\ n");

gecikmə (1000); // 1 saniyə gözləyin

}

Addım 5: Kod Analizi

ADXL345 təcrübəsinin kodu 3 hissədən ibarətdir: hər portu və cihazı işə salmaq, sensorlardan göndərilən məlumatları əldə etmək və saxlamaq və məlumatları çevirmək.

Tövsiyə: