2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
ADXL345, ±16 g'a kadar yüksek çözünürlüklü (13 bit) ölçüme sahip küçük, ince, ultra düşük güçlü, 3 eksenli bir ivmeölçerdir. Dijital çıkış verileri, 16 bitlik ikili tamamlayıcı olarak biçimlendirilir ve I2 C dijital arabirimi aracılığıyla erişilebilir. Eğim algılama uygulamalarında yerçekiminin statik ivmesini ve ayrıca hareket veya şoktan kaynaklanan dinamik ivmeyi ölçer. Yüksek çözünürlüğü (3,9 mg/LSB), 1.0°'den daha düşük eğim değişikliklerinin ölçülmesini sağlar. İşte python kodunu kullanarak ahududu pi ile gösteri.
Adım 1: İhtiyacınız Olan Şey..!
1. Ahududu Pi
2. ADXL345
3. I²C Kablosu
4. Raspberry Pi için I²C Kalkanı
5. Ethernet Kablosu
Adım 2: Bağlantı:
Ahududu pi için bir I2C kalkanı alın ve ahududu pi'nin gpio pimlerinin üzerine hafifçe itin.
Ardından I2C kablosunun bir ucunu ADXL345 sensörüne ve diğer ucunu I2C blendajına bağlayın.
Ayrıca Ethernet kablosunu pi'ye bağlayın veya bir WiFi modülü kullanabilirsiniz.
Bağlantılar yukarıdaki resimde gösterilmiştir.
Adım 3: Kod:
ADXL345 için python kodu GitHub depomuzdan indirilebilir - Dcube Store
İşte aynısı için bağlantı:
github.com/DcubeTechVentures/ADXL345..
Python kodu için SMBus kütüphanesini kullandık, raspberry pi'ye SMBus kurma adımları burada açıklanmıştır:
pypi.python.org/pypi/smbus-cffi/0.5.1
Kodu buradan da kopyalayabilirsiniz, aşağıdaki şekilde verilmiştir:
# Özgür irade lisansıyla dağıtılır.
# İlgili eserlerinin lisanslarına uyması koşuluyla, istediğiniz şekilde, kârlı veya ücretsiz olarak kullanın.
# ADXL345
# Bu kod, Dcube Store'da bulunan ADXL345_I2CS I2C Mini Modülü ile çalışmak üzere tasarlanmıştır.
smbus'u içe aktar
ithalat zamanı
# I2C veri yolunu alın
veri yolu = smbus. SMBus(1)
# ADXL345 adresi, 0x53(83)
# Bant genişliği oranı kaydı seçin, 0x2C(44)# 0x0A(10) Normal mod, Çıkış veri hızı = 100 Hz
bus.write_byte_data(0x53, 0x2C, 0x0A)
# ADXL345 adresi, 0x53(83)
# Güç kontrol kaydını seçin, 0x2D(45)
# 0x08(08) Otomatik Uyku devre dışı
bus.write_byte_data(0x53, 0x2D, 0x08)
# ADXL345 adresi, 0x53(83)
# Veri formatı kaydı seçin, 0x31(49)
# 0x08(08) Kendi kendine test devre dışı, 4 kablolu arayüz
# Tam çözünürlük, Aralık = +/-2g
bus.write_byte_data(0x53, 0x31, 0x08)
zaman.uyku(0.5)
# ADXL345 adresi, 0x53(83)
# 0x32(50), 2 bayttan veriyi geri oku
# X Ekseni LSB, X Ekseni MSB
data0 = bus.read_byte_data(0x53, 0x32)
data1 = bus.read_byte_data(0x53, 0x33)
# Veriyi 10 bit'e dönüştürün
xAccl = ((veri1 ve 0x03) * 256) + veri0
xAccl > 511 ise:
xAccl -= 1024
# ADXL345 adresi, 0x53(83)
# 0x34(52), 2 bayttan veriyi geri oku
# Y Ekseni LSB, Y Ekseni MSB
data0 = bus.read_byte_data(0x53, 0x34)
veri1 = bus.read_byte_data(0x53, 0x35)
# Veriyi 10 bit'e dönüştürün
yAccl = ((veri1 ve 0x03) * 256) + veri0
yAccl > 511 ise:
yAccl -= 1024
# ADXL345 adresi, 0x53(83)
# 0x36(54), 2 bayttan veriyi geri oku
# Z Ekseni LSB, Z Ekseni MSB
data0 = bus.read_byte_data(0x53, 0x36)
data1 = bus.read_byte_data(0x53, 0x37)
# Veriyi 10 bit'e dönüştürün
zAccl = ((veri1 ve 0x03) * 256) + veri0
zAccl > 511 ise:
zAccl -= 1024
# Ekrana veri çıkışı
print "X Ekseninde Hızlanma: %d" %xAccl
print "Y Ekseninde Hızlanma: %d" %yAccl
print "Z-Ekseninde Hızlanma: %d" %zAccl
Adım 4: Uygulamalar:
ADXL345, Ahizelerde, Tıbbi enstrümantasyonda vb. kullanılabilecek küçük, ince, ultra düşük güçlü, 3 eksenli bir ivmeölçerdir. Uygulaması ayrıca Oyun ve işaretleme cihazları, Endüstriyel enstrümantasyon, Kişisel navigasyon cihazları ve Sabit disk sürücüsü (HDD) korumasını içerir.