İçindekiler:

ADXL345 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım
ADXL345 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım

Video: ADXL345 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım

Video: ADXL345 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım
Video: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, Temmuz
Anonim
Image
Image

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.

Bu eğitimde, ADXL345 sensör modülünün arduino nano ile arayüzlenmesi gösterilmiştir. Hızlanma değerlerini okumak için I2c adaptörlü arduino kullandık. Bu I2C adaptör sensör modülüne bağlantıyı daha kolay ve daha güvenilir hale getiriyor.

Adım 1: Donanım Gerekli:

Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım

Hedefimizi gerçekleştirmek için ihtiyaç duyduğumuz malzemeler aşağıdaki donanım bileşenlerini içerir:

1. ADXL345

2. Arduino Nano

3. I2C Kablosu

4. Arduino Nano için I2C Kalkanı

Adım 2: Donanım Bağlantısı:

Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı

Donanım bağlantısı bölümü, temel olarak sensör ve arduino nano arasında gerekli olan kablo bağlantılarını açıklar. İstenilen çıktı için herhangi bir sistem üzerinde çalışırken doğru bağlantıların sağlanması temel zorunluluktur. Yani, gerekli bağlantılar aşağıdaki gibidir:

ADXL345, I2C üzerinde çalışacaktır. Sensörün her bir arayüzünün nasıl bağlanacağını gösteren örnek kablo şeması buradadır.

Kutudan çıktığı gibi, kart bir I2C arayüzü için yapılandırılmıştır, bu nedenle, aksi takdirde agnostik iseniz bu bağlantıyı kullanmanızı öneririz.

Tek ihtiyacınız olan dört tel! Vcc, Gnd, SCL ve SDA pinlerinden sadece dört bağlantı gereklidir ve bunlar I2C kablosu yardımıyla bağlanır.

Bu bağlantılar yukarıdaki resimlerde gösterilmiştir.

Adım 3: İvme Ölçümü Kodu:

İvme Ölçümü Kodu
İvme Ölçümü Kodu

Şimdi arduino koduyla başlayalım.

Sensör modülünü arduino ile kullanırken Wire.h kütüphanesini dahil ediyoruz. "Wire" kütüphanesi, sensör ve arduino kartı arasındaki i2c iletişimini kolaylaştıran fonksiyonları içerir.

Tüm arduino kodu, kullanıcının rahatlığı için aşağıda verilmiştir:

#Dahil etmek

// ADXL345 I2C adresi 0x53(83)

#define Addr 0x53

geçersiz kurulum()

{

// I2C iletişimini MASTER olarak başlat

Wire.begin();

// Seri iletişimi başlat, baud hızını ayarla = 9600

Seri.başla(9600);

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Bant genişliği oranı kaydını seç

Wire.write(0x2C);

// Normal mod, Çıkış veri hızı = 100 Hz

Wire.write(0x0A);

// I2C iletimini durdur

Wire.endTransmission();

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Güç kontrol kaydını seç

Wire.write(0x2D);

// Otomatik uyku devre dışı

Wire.write(0x08);

// I2C iletimini durdur

Wire.endTransmission();

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri formatı kaydını seç

Wire.write(0x31);

// Kendi kendine test devre dışı, 4 kablolu arayüz, Tam çözünürlük, Aralık = +/-2g

Wire.write(0x08);

// I2C iletimini durdur

Wire.endTransmission();

gecikme(300);

}

boşluk döngüsü()

{

imzasız int veri[6];

for(int i = 0; i < 6; i++)

{

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydını seç

Wire.write((50 + i));

// I2C iletimini durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 6 bayt veri oku

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Veriyi 10 bit'e çevir

int xAccl = (((veri[1] & 0x03) * 256) + veri[0]);

if(xAccl > 511)

{

xAccl -= 1024;

}

int yAccl = (((veri[3] & 0x03) * 256) + veri[2]);

if(yAccl > 511)

{

yAccl -= 1024;

}

int zAccl = (((veri[5] & 0x03) * 256) + veri[4]);

if(zAccl > 511)

{

zAccl -= 1024;

}

// Verileri seri monitöre çıkar

Serial.print("X Ekseninde İvme: ");

Serial.println(xAccl);

Serial.print("Y Ekseninde İvme: ");

Seri.println(yAccl);

Serial.print("Z Ekseninde İvme: ");

Serial.println(zAccl);

gecikme(300);

}

Tel kitaplığında Wire.write() ve Wire.read() komutları yazmak ve sensör çıkışını okumak için kullanılır.

Serial.print() ve Serial.println(), sensörün çıktısını Arduino IDE'nin seri monitöründe görüntülemek için kullanılır.

Sensörün çıkışı yukarıdaki resimde gösterilmektedir.

Adım 4: Uygulamalar:

Uygulamalar
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.

Önerilen: