Mündəricat:

ADXL345 və Raspberry Pi istifadə edərək sürətlənmənin ölçülməsi: 4 addım
ADXL345 və Raspberry Pi istifadə edərək sürətlənmənin ölçülməsi: 4 addım

Video: ADXL345 və Raspberry Pi istifadə edərək sürətlənmənin ölçülməsi: 4 addım

Video: ADXL345 və Raspberry Pi istifadə edərək sürətlənmənin ölçülməsi: 4 addım
Video: Supervised Home Assistant. RaspiOS 64-də asan quraşdırma - Argon One M.2 qutusunda Raspberry PI 4B 2024, Noyabr
Anonim
Image
Image

ADXL345, kiçik, nazik, ultralow gücü, ± 16 q-a qədər yüksək qətnamə (13-bit) ölçüsü olan 3 oxlu akselerometrdir. Rəqəmsal çıxış məlumatları 16 bitlik ikili tamamlayıcı olaraq formatlanır və I2 C rəqəmsal interfeys vasitəsilə əldə edilə bilər. Tilt algılama tətbiqlərində cazibənin statik sürətlənməsini, həmçinin hərəkət və ya şok nəticəsində yaranan dinamik sürətlənməni ölçür. Yüksək qətnaməsi (3.9 mg/LSB), meyl dəyişikliklərinin 1.0 ° -dən aşağı ölçülməsinə imkan verir.

Bu təlimatda, moruq pi ilə ADXL345 sensor modulunun qarşılıqlı əlaqəsi nümayiş olunur və python dilindən istifadə edərək proqramlaşdırılması da göstərilmişdir. Bütün 3 oxlu sürətləndirmə dəyərlərini oxumaq üçün I2C adapteri olan moruq pi istifadə etdik. Bu I2C adapteri sensor moduluna qoşulmağı daha asan və daha etibarlı edir.

Addım 1: Lazım olan avadanlıq:

Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur

Məqsədimizə çatmaq üçün ehtiyacımız olan materiallar aşağıdakı aparat komponentlərindən ibarətdir:

1. ADXL345

2. Moruq Pi

3. I2C Kabeli

4. Moruq pi üçün I2C Shield

5. Ethernet Kabeli

Addım 2: Hardware Bağlantısı:

Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama

Avadanlıq bağlama bölməsi əsasən sensor və moruq pi arasında lazım olan tel əlaqələrini izah edir. İstənilən çıxış üçün hər hansı bir sistem üzərində işləyərkən düzgün əlaqələrin təmin edilməsi əsas zərurətdir. Beləliklə, zəruri əlaqələr aşağıdakılardır:

ADXL345 I2C üzərində işləyəcək. Sensorun hər bir interfeysini necə bağlayacağınızı göstərən nümunə naqillər diaqramı.

Qutudan kənarda, lövhə I2C interfeysi üçün konfiqurasiya olunmuşdur, buna görə də başqa cür agnostiksinizsə bu əlaqəni istifadə etməyi məsləhət görürük.

Lazım olan tək şey dörd teldir! Vcc, Gnd, SCL və SDA pinləri üçün yalnız dörd əlaqə lazımdır və bunlar I2C kabelinin köməyi ilə bağlanır.

Bu əlaqələr yuxarıdakı şəkillərdə göstərilmişdir.

Addım 3: Sürətləndirmə Ölçmə Kodu:

Sürətləndirmə Ölçmə Kodu
Sürətləndirmə Ölçmə Kodu

Moruq pi istifadə etmənin üstünlüyü, sensoru onunla əlaqələndirmək üçün lövhəni proqramlaşdırmaq istədiyiniz proqramlaşdırma dilinin rahatlığını təmin edir. Bu lövhənin bu üstünlüyündən istifadə edərək burada pythonda proqramlaşdırmasını nümayiş etdiririk. ADXL345 üçün python kodu, Control Everything Topluluğu olan github cəmiyyətimizdən endirilə bilər.

İstifadəçilərin rahatlığı üçün, kodu da burada izah edirik:

Kodlaşdırmanın ilk addımı olaraq python vəziyyətində smbus kitabxanasını yükləməlisiniz, çünki bu kitabxana kodda istifadə olunan funksiyaları dəstəkləyir. Beləliklə, kitabxananı yükləmək üçün aşağıdakı linkə daxil ola bilərsiniz:

pypi.python.org/pypi/smbus-cffi/0.5.1

Bu sensor üçün işləyən python kodunu buradan da kopyalaya bilərsiniz:

smbus idxal edin

idxal vaxtı

# I2C avtobusunu alın = smbus. SMBus (1)

# ADXL345 ünvanı, 0x53 (83)

# Bant genişliyi dərəcəsi qeydini seçin, 0x2C (44)

# 0x0A (10) Normal rejim, Çıxış məlumat sürəti = 100 Hz

bus.write_byte_data (0x53, 0x2C, 0x0A)

# ADXL345 ünvanı, 0x53 (83)

# Güc idarəetmə qeydini seçin, 0x2D (45)

# 0x08 (08) Avtomatik Yuxu deaktiv edin

bus.write_byte_data (0x53, 0x2D, 0x08)

# ADXL345 ünvanı, 0x53 (83)

# Məlumat formatı qeydini seçin, 0x31 (49)

# 0x08 (08) Self test əlil, 4 telli interfeys

# Tam qətnamə, Aralıq = +/- 2g

bus.write_byte_data (0x53, 0x31, 0x08)

vaxt.yuxu (0.5)

# ADXL345 ünvanı, 0x53 (83)

# 0x32 (50), 2 baytdan məlumatları geri oxuyun

# X-Axis LSB, X-Axis MSB

data0 = bus.read_byte_data (0x53, 0x32)

data1 = bus.read_byte_data (0x53, 0x33)

# Məlumatı 10 bitə çevirin

xAccl = ((data1 & 0x03) * 256) + data0

əgər xAccl> 511:

xAccl -= 1024

# ADXL345 ünvanı, 0x53 (83)

# 0x34 (52), 2 baytdan məlumatları geri oxuyun

# Y-Axis LSB, Y-Axis MSB

data0 = bus.read_byte_data (0x53, 0x34)

data1 = bus.read_byte_data (0x53, 0x35)

# Məlumatı 10 bitə çevirin

yAccl = ((data1 & 0x03) * 256) + data0

yAccl> 511 olarsa:

yAccl -= 1024

# ADXL345 ünvanı, 0x53 (83)

# 0x36 (54), 2 baytdan məlumatları geri oxuyun

# Z-Axis LSB, Z-Axis MSB

data0 = bus.read_byte_data (0x53, 0x36)

data1 = bus.read_byte_data (0x53, 0x37)

# Məlumatı 10 bitə çevirin

zAccl = ((data1 & 0x03) * 256) + data0

zAccl> 511 olarsa:

zAccl -= 1024

# Ekrana məlumat çıxarın

çap "X Eksenində Sürətləndirmə: %d" %xAccl

çap "Y Eksenində Sürətləndirmə: %d" %yAccl

çap "Z Eksenində Sürətləndirmə: %d" %zAccl

Kodun aşağıda göstərilən hissəsinə, python kodlarının düzgün yerinə yetirilməsi üçün lazım olan kitabxanalar daxildir.

smbusimport vaxtını idxal edin

Kod, əmr satırına aşağıda göstərilən əmri yazaraq icra edilə bilər.

$> python ADXL345.py

Sensorun çıxışı da istifadəçinin istinadı üçün yuxarıdakı şəkildə göstərilmişdir.

Addım 4: Tətbiqlər:

Tətbiqlər
Tətbiqlər

ADXL345, kiçik, nazik, ultralow güc, 3 oxlu akselerometrdir ki, bu da Telefonlar, Tibbi alətlər və s. İstifadəsinə Oyun və işarə cihazları, Sənaye alətləri, Fərdi naviqasiya cihazları və Sabit disk sürücüsü (HDD) qorunması daxildir.

Tövsiyə: