สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ADXL345 เป็นมาตรความเร่งแบบ 3 แกนที่มีขนาดเล็ก บาง และใช้พลังงานต่ำเป็นพิเศษ พร้อมการวัดความละเอียดสูง (13 บิต) ที่สูงถึง ±16 กรัม ข้อมูลเอาท์พุตดิจิตอลมีรูปแบบเป็นส่วนประกอบสองส่วน 16 บิต และสามารถเข้าถึงได้ผ่านอินเทอร์เฟซดิจิตอล I2 C มันวัดความเร่งคงที่ของแรงโน้มถ่วงในการใช้งานการตรวจจับการเอียง รวมถึงการเร่งความเร็วแบบไดนามิกที่เกิดจากการเคลื่อนไหวหรือการกระแทก ความละเอียดสูง (3.9 มก./LSB) ช่วยให้สามารถวัดการเปลี่ยนแปลงความเอียงได้น้อยกว่า 1.0 ° นี่คือการสาธิตด้วย raspberry pi โดยใช้รหัส python
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ..!
1. ราสเบอร์รี่ปี่
2. ADXL345
3. สายเคเบิล I²C
4. I²C Shield สำหรับ Raspberry Pi
5. สายเคเบิลอีเธอร์เน็ต
ขั้นตอนที่ 2: การเชื่อมต่อ:
ใช้เกราะป้องกัน I2C สำหรับ raspberry pi แล้วค่อยๆ ดันไปบนหมุด gpio ของ raspberry pi
จากนั้นเชื่อมต่อปลายสาย I2C ด้านหนึ่งกับเซ็นเซอร์ ADXL345 และปลายอีกด้านหนึ่งเข้ากับแผงป้องกัน I2C
เชื่อมต่อสายอีเทอร์เน็ตกับ pi หรือคุณสามารถใช้โมดูล WiFi ได้
การเชื่อมต่อแสดงในภาพด้านบน
ขั้นตอนที่ 3: รหัส:
รหัสหลามสำหรับ ADXL345 สามารถดาวน์โหลดได้จากที่เก็บ GitHub ของเรา - Dcube Store
นี่คือลิงค์สำหรับสิ่งเดียวกัน:
github.com/DcubeTechVentures/ADXL345..
เราใช้ไลบรารี SMBus สำหรับโค้ด python ขั้นตอนในการติดตั้ง SMBus บน raspberry pi ได้อธิบายไว้ที่นี่:
pypi.python.org/pypi/smbus-cffi/0.5.1
คุณสามารถคัดลอกรหัสจากที่นี่ได้ดังนี้:
# จัดจำหน่ายด้วยใบอนุญาตอิสระ
# ใช้งานตามที่คุณต้องการ ไม่ว่าจะมีกำไรหรือฟรี หากเข้ากับใบอนุญาตของงานที่เกี่ยวข้อง
# ADXL345
# รหัสนี้ออกแบบมาเพื่อทำงานร่วมกับ ADXL345_I2CS I2C Mini Module ที่มีอยู่ใน Dcube Store
นำเข้า smbus
เวลานำเข้า
# รับรถบัส I2C
รถบัส = smbus. SMBus(1)
# ADXL345 ที่อยู่ 0x53 (83)
# เลือกการลงทะเบียนอัตราแบนด์วิดท์, 0x2C(44)# 0x0A(10) โหมดปกติ, อัตราข้อมูลเอาท์พุต = 100 Hz
bus.write_byte_data(0x53, 0x2C, 0x0A)
# ADXL345 ที่อยู่ 0x53 (83)
# เลือกรีจิสเตอร์ควบคุมกำลัง 0x2D(45)
# 0x08(08) ปิดใช้งานการนอนหลับอัตโนมัติ
bus.write_byte_data(0x53, 0x2D, 0x08)
# ADXL345 ที่อยู่ 0x53 (83)
# เลือกรูปแบบข้อมูลลงทะเบียน 0x31 (49)
# 0x08(08) ปิดใช้งานการทดสอบตัวเอง, อินเทอร์เฟซ 4 สาย
# ความละเอียดเต็มที่ ช่วง = +/-2g
bus.write_byte_data(0x53, 0x31, 0x08)
เวลานอน(0.5)
# ADXL345 ที่อยู่ 0x53 (83)
# อ่านข้อมูลย้อนหลังตั้งแต่ 0x32 (50), 2 ไบต์
# แกน X LSB, แกน X MSB
data0 = bus.read_byte_data(0x53, 0x32)
data1 = bus.read_byte_data(0x53, 0x33)
# แปลงข้อมูลเป็น 10 บิต
xAccl = ((data1 & 0x03) * 256) + data0
ถ้า xAccl > 511:
xAccl -= 1024
# ADXL345 ที่อยู่ 0x53 (83)
# อ่านข้อมูลย้อนหลังตั้งแต่ 0x34 (52), 2 ไบต์
# แกน Y LSB, แกน Y MSB
data0 = bus.read_byte_data(0x53, 0x34)
data1 = bus.read_byte_data(0x53, 0x35)
# แปลงข้อมูลเป็น 10 บิต
yAccl = ((data1 & 0x03) * 256) + data0
ถ้า yAccl > 511:
yAccl -= 1024
# ADXL345 ที่อยู่ 0x53 (83)
# อ่านข้อมูลย้อนหลังจาก 0x36 (54), 2 ไบต์
# แกน Z LSB, แกน Z MSB
data0 = bus.read_byte_data(0x53, 0x36)
data1 = bus.read_byte_data(0x53, 0x37)
# แปลงข้อมูลเป็น 10 บิต
zAccl = ((data1 & 0x03) * 256) + data0
ถ้า zAccl > 511:
zAccl -= 1024
# ส่งออกข้อมูลไปยังหน้าจอ
พิมพ์ "ความเร่งในแกน X: %d" %xAccl
พิมพ์ "ความเร่งในแกน Y: %d" %yAccl
พิมพ์ "ความเร่งในแกน Z: %d" %zAccl
ขั้นตอนที่ 4: การใช้งาน:
ADXL345 เป็นมาตรความเร่งแบบ 3 แกนขนาดเล็ก บาง ใช้พลังงานต่ำเป็นพิเศษ ซึ่งสามารถใช้ในเครื่องโทรศัพท์ อุปกรณ์ทางการแพทย์ ฯลฯ แอปพลิเคชันนี้ยังรวมถึงอุปกรณ์เล่นเกมและอุปกรณ์ชี้ตำแหน่ง เครื่องมือวัดทางอุตสาหกรรม อุปกรณ์นำทางส่วนบุคคล และการป้องกันฮาร์ดดิสก์ไดรฟ์ (HDD)