2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
ADXL345 là một máy đo gia tốc 3 trục nhỏ, mỏng, công suất cực thấp, có độ phân giải cao (13-bit) với phép đo lên đến ± 16 g. Dữ liệu đầu ra kỹ thuật số được định dạng dưới dạng bổ sung 16 bit hai chiều và có thể truy cập thông qua giao diện kỹ thuật số I2 C. Đo gia tốc tĩnh của trọng lực trong các ứng dụng cảm biến độ nghiêng, cũng như gia tốc động do chuyển động hoặc sốc. Độ phân giải cao của nó (3,9 mg / LSB) cho phép đo các thay đổi độ nghiêng nhỏ hơn 1,0 °. Đây là phần trình diễn với raspberry pi bằng cách sử dụng mã python.
Bước 1: Những gì bạn cần.. !
1. Raspberry Pi
2. ADXL345
3. Cáp I²C
4. I²C Shield cho Raspberry Pi
5. Cáp Ethernet
Bước 2: Kết nối:
Lấy một tấm chắn I2C cho raspberry pi và nhẹ nhàng đẩy nó qua các chân gpio của raspberry pi.
Sau đó kết nối một đầu của cáp I2C với cảm biến ADXL345 và đầu kia với tấm chắn I2C.
Đồng thời kết nối cáp Ethernet với pi hoặc bạn có thể sử dụng mô-đun WiFi.
Các kết nối được hiển thị trong hình trên.
Bước 3: Mã:
Có thể tải xuống mã python cho ADXL345 từ kho lưu trữ GitHub của chúng tôi- Dcube Store
Đây là liên kết cho cùng một:
github.com/DcubeTechVentures/ADXL345..
Chúng tôi đã sử dụng thư viện SMBus cho mã python, các bước để cài đặt SMBus trên raspberry pi được mô tả ở đây:
pypi.python.org/pypi/smbus-cffi/0.5.1
Bạn cũng có thể sao chép mã từ đây, nó được đưa ra như sau:
# Được phân phối với một giấy phép tự do.
# Sử dụng nó theo bất kỳ cách nào bạn muốn, lợi nhuận hoặc miễn phí, miễn là nó phù hợp với giấy phép của các tác phẩm liên quan.
# ADXL345
# Mã này được thiết kế để hoạt động với Mô-đun Mini ADXL345_I2CS I2C có sẵn trong Dcube Store.
nhập khẩu smbus
thời gian nhập khẩu
# Nhận xe buýt I2C
bus = smbus. SMBus (1)
Địa chỉ # ADXL345, 0x53 (83)
# Chọn thanh ghi tốc độ băng thông, 0x2C (44) # 0x0A (10) Chế độ bình thường, Tốc độ dữ liệu đầu ra = 100 Hz
bus.write_byte_data (0x53, 0x2C, 0x0A)
Địa chỉ # ADXL345, 0x53 (83)
# Chọn thanh ghi điều khiển công suất, 0x2D (45)
# 0x08 (08) Tắt Tự động Ngủ
bus.write_byte_data (0x53, 0x2D, 0x08)
Địa chỉ # ADXL345, 0x53 (83)
# Chọn thanh ghi định dạng dữ liệu, 0x31 (49)
# 0x08 (08) Đã tắt tính năng tự kiểm tra, giao diện 4 dây
# Độ phân giải đầy đủ, Phạm vi = +/- 2g
bus.write_byte_data (0x53, 0x31, 0x08)
time.sleep (0,5)
Địa chỉ # ADXL345, 0x53 (83)
# Đọc lại dữ liệu từ 0x32 (50), 2 byte
# X-Axis LSB, X-Axis MSB
data0 = bus.read_byte_data (0x53, 0x32)
data1 = bus.read_byte_data (0x53, 0x33)
# Chuyển đổi dữ liệu thành 10-bit
xAccl = ((data1 & 0x03) * 256) + data0
nếu xAccl> 511:
xAccl - = 1024
Địa chỉ # ADXL345, 0x53 (83)
# Đọc lại dữ liệu từ 0x34 (52), 2 byte
# Y-Axis LSB, Y-Axis MSB
data0 = bus.read_byte_data (0x53, 0x34)
data1 = bus.read_byte_data (0x53, 0x35)
# Chuyển đổi dữ liệu thành 10-bit
yAccl = ((data1 & 0x03) * 256) + data0
nếu yAccl> 511:
yAccl - = 1024
Địa chỉ # ADXL345, 0x53 (83)
# Đọc lại dữ liệu từ 0x36 (54), 2 byte
# Z-Axis LSB, Z-Axis MSB
data0 = bus.read_byte_data (0x53, 0x36)
data1 = bus.read_byte_data (0x53, 0x37)
# Chuyển đổi dữ liệu thành 10-bit
zAccl = ((data1 & 0x03) * 256) + data0
nếu zAccl> 511:
zAccl - = 1024
# Xuất dữ liệu ra màn hình
in "Gia tốc theo Trục X:% d"% xAccl
print "Gia tốc theo trục Y:% d"% yAccl
in "Gia tốc theo Trục Z:% d"% zAccl
Bước 4: Ứng dụng:
ADXL345 là một máy đo gia tốc 3 trục nhỏ, mỏng, công suất cực thấp, có thể được sử dụng trong Thiết bị cầm tay, Thiết bị đo đạc y tế, v.v. Ứng dụng của nó cũng bao gồm Thiết bị chơi game và trỏ, Thiết bị đo công nghiệp, Thiết bị định vị cá nhân và Bảo vệ ổ đĩa cứng (HDD).