Mundarija:

ADXL345 va Raspberry Pi yordamida tezlashtirishni o'lchash: 4 qadam
ADXL345 va Raspberry Pi yordamida tezlashtirishni o'lchash: 4 qadam

Video: ADXL345 va Raspberry Pi yordamida tezlashtirishni o'lchash: 4 qadam

Video: ADXL345 va Raspberry Pi yordamida tezlashtirishni o'lchash: 4 qadam
Video: PiicoDev 3-Axis Accelerometer LIS3DH | Guide for Raspberry Pi 2024, Iyul
Anonim
Image
Image

ADXL345-bu kichik, ingichka, ultra quvvatli, 3 o'qli akselerometr, yuqori aniqlikdagi (13 bitli) ± 16 g gacha. Raqamli chiqish ma'lumotlari 16 bitli ikkita qo'shimcha sifatida formatlangan va I2 C raqamli interfeysi orqali kirish mumkin. Nishab olishda tortishish statik tezlanishini, shuningdek harakat yoki zarba natijasida dinamik tezlanishni o'lchaydi. Uning yuqori aniqligi (3,9 mg/LSB) moyillik o'zgarishlarini 1,0 ° dan past o'lchash imkonini beradi.

Bu qo'llanmada ADXL345 sensori modulining malina pi bilan o'zaro aloqasi ko'rsatilgan va uni python tilida dasturlash ham tasvirlangan. Barcha 3 o'qli tezlashuv qiymatlarini o'qish uchun biz I2C adapterli malina pi dan foydalanganmiz, bu I2C adapteri sensor moduliga ulanishni oson va ishonchli qiladi.

1 -qadam: Uskuna kerak:

Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi

Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:

1. ADXL345

2. Raspberry Pi

3. I2C kabeli

4. Malina pi uchun I2C qalqoni

5. Ethernet kabeli

2 -qadam: Uskuna ulanishi:

Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi

Uskuna ulanish bo'limi, asosan, sensori va malina pi o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:

ADXL345 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.

Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz.

Sizga faqat to'rtta sim kerak! Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.

Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.

3 -qadam: Tezlikni o'lchash kodi:

Tezlikni o'lchash kodi
Tezlikni o'lchash kodi

Malinali pi -ni ishlatishning afzalligi shundaki, u sizga sensorni interfeysga ulash uchun taxtani dasturlashni xohlagan dasturlash tilining moslashuvchanligini ta'minlaydi. Ushbu taxtaning afzalliklaridan foydalanib, biz bu erda uning pitonda dasturlashini namoyish qilamiz. ADXL345 uchun python kodini github hamjamiyatidan yuklab olish mumkin, bu hamma narsani nazorat qilish hamjamiyati.

Foydalanuvchilarning qulayligi uchun biz bu erda ham kodni tushuntiramiz:

Kodlashning birinchi bosqichi sifatida siz python holatida smbus kutubxonasini yuklab olishingiz kerak, chunki bu kutubxona kodda ishlatiladigan funktsiyalarni qo'llab -quvvatlaydi. Shunday qilib, kutubxonani yuklab olish uchun quyidagi havolaga kirishingiz mumkin:

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

Siz bu sensor uchun ishlaydigan python kodini bu erdan nusxa ko'chirishingiz mumkin:

smbus import qilish

import vaqti

# I2C avtobusini oling = smbus. SMBus (1)

# ADXL345 manzili, 0x53 (83)

# O'tkazish tezligi registrini tanlang, 0x2C (44)

# 0x0A (10) Oddiy rejim, Chiqish ma'lumoti tezligi = 100 Gts

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

# ADXL345 manzili, 0x53 (83)

# Quvvatni boshqarish registrini tanlang, 0x2D (45)

# 0x08 (08) Avtomatik uyquni o'chirish

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

# ADXL345 manzili, 0x53 (83)

# Ma'lumotlar formati registrini tanlang, 0x31 (49)

# 0x08 (08) Self-test o'chirilgan, 4 simli interfeys

# To'liq aniqlik, diapazon = +/- 2g

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

vaqt uyqu (0,5)

# ADXL345 manzili, 0x53 (83)

# Ma'lumotni 0x32 (50), 2 baytdan o'qing

# X o'qi LSB, X o'qi MSB

ma'lumotlar0 = bus.read_byte_data (0x53, 0x32)

ma'lumotlar1 = avtobus.read_byte_data (0x53, 0x33)

# Ma'lumotni 10 bitga aylantiring

xAccl = ((ma'lumotlar1 va 0x03) * 256) + ma'lumotlar0

agar xAccl> 511:

xAccl -= 1024

# ADXL345 manzili, 0x53 (83)

# 0x34 (52), 2 baytdan ma'lumotlarni o'qing

# Y-o'qi LSB, Y-o'qi MSB

ma'lumotlar0 = avtobus.read_byte_data (0x53, 0x34)

ma'lumotlar1 = avtobus.read_byte_data (0x53, 0x35)

# Ma'lumotni 10 bitga aylantiring

yAccl = ((ma'lumotlar1 va 0x03) * 256) + ma'lumotlar0

agar yAccl> 511 bo'lsa:

yAccl -= 1024

# ADXL345 manzili, 0x53 (83)

# 0x36 (54), 2 baytdan ma'lumotlarni o'qing

# Z-Axis LSB, Z-Axis MSB

ma'lumotlar0 = avtobus.read_byte_data (0x53, 0x36)

ma'lumotlar1 = avtobus.read_byte_data (0x53, 0x37)

# Ma'lumotni 10 bitga aylantiring

zAccl = ((ma'lumotlar1 va 0x03) * 256) + ma'lumotlar0

agar zAccl> 511:

zAccl -= 1024

# Ma'lumotlarni ekranga chiqarish

chop etish "X o'qida tezlashtirish: %d" %xAccl

chop etish "Y o'qida tezlashtirish: %d" %yAccl

chop etish "Z o'qida tezlashtirish: %d" %zAccl

Kodning quyida ko'rsatilgan qismi python kodlarining to'g'ri bajarilishi uchun zarur bo'lgan kutubxonalarni o'z ichiga oladi.

smbusimport vaqtini import qilish

Kodni buyruq satriga quyidagi buyruqni kiritish orqali bajarish mumkin.

$> python ADXL345.py

Sensorning chiqishi ham foydalanuvchining ma'lumoti uchun yuqoridagi rasmda ko'rsatilgan.

4 -qadam: Ilovalar:

Ilovalar
Ilovalar

ADXL345-bu kichik, ingichka, ultra quvvatli, 3 o'qli akselerometr bo'lib, u telefonlar, tibbiy asboblar va boshqalarda qo'llanilishi mumkin. O'yin va ishora asboblari, sanoat asboblari, shaxsiy navigatsiya qurilmalari va qattiq disk (HDD) himoyasini o'z ichiga oladi.

Tavsiya: