İçindekiler:

ADXL345 Arduino Uno R3 Kullanımı: 5 Adım
ADXL345 Arduino Uno R3 Kullanımı: 5 Adım

Video: ADXL345 Arduino Uno R3 Kullanımı: 5 Adım

Video: ADXL345 Arduino Uno R3 Kullanımı: 5 Adım
Video: How To Interface ADXL335 Analog Accelerometer Sensor With Arduino 2024, Kasım
Anonim
ADXL345 Arduino Uno R3'ü Kullanma
ADXL345 Arduino Uno R3'ü Kullanma

Bu dersimizde ADXL345 hızlanma sensörünün nasıl kullanılacağını öğreneceğiz.

Adım 1: Bileşenler

- Arduino Uno kartı * 1

- USB kablosu * 1

-ADXL345 *1

- Ekmek tahtası * 1

- Atlama telleri

2. Adım: İlke

Hızlanma sırasında oluşan kuvveti ölçmek için bir ivmeölçer kullanılır. En temel olanı, 1g olan yaygın olarak bilinen yerçekimi ivmesidir.

Yerçekiminin neden olduğu ivmeyi ölçerek, cihazın düz yüzeye eğim açısını hesaplayabilirsiniz. Dinamik ivmeyi analiz ederek cihazın nasıl hareket ettiğini anlayabilirsiniz. Örneğin, kendi kendini dengeleyen tahta veya uçan tahta, Kalman filtresi ve duruş düzeltmesi için hızlanma sensörü ve jiroskopu uygular.

ADXL345

ADXL345, ±16 g'a kadar yüksek çözünürlüklü (13 bit) ölçüme sahip küçük, ince, düşük güçlü, 3 eksenli bir ivmeölçerdir. Dijital çıkış verileri, 16 bit ikinin tamamlayıcısı olarak biçimlendirilir ve bir SPI (3- veya 4 telli) veya I2C dijital arabirimi aracılığıyla erişilebilir. Bu deneyde, I2C dijital arayüzü kullanılır.

Eğim algılama uygulamalarında yerçekiminin statik ivmesini ve ayrıca hareket veya şoktan kaynaklanan dinamik ivmeyi ölçmek için çok uygundur. Yüksek çözünürlüğü (4 mg/LSB), eğim değişikliği ölçümünün 1.0°'den daha az olmasını sağlar. Ve mükemmel hassasiyet (3,9mg/LSB @2g), ±16g'a kadar yüksek hassasiyette çıktı sağlar.

ADXL345 nasıl çalışır?

ADXL345, öndeki algılama bileşeni ile ivmeyi algılar ve ardından elektrik sinyali algılama bileşeni, bunu analog olan elektrik sinyaline dönüştürür. Daha sonra modüle entegre edilen AD adaptörü analog sinyali dijitale çevirecektir.

X_OUT, Y_OUT ve Z_OUT sırasıyla X, Y ve Z eksenindeki değerlerdir. Modülü yüzü yukarı bakacak şekilde yerleştirin: Z_OUT en fazla +1g'ye ulaşabilir, X_OUT minimumu Ax yönünde -1g ve Y_OUT minimumu Ay yönüne doğru -1g'dir. Öte yandan, modülü baş aşağı çevirin: Z_OUT minimumu -1g, maksimum X_OUT Ax yönüne doğru +1g ve Y_OUT maksimumu Ay yönüne doğru +1g'dir., Aşağıda gösterildiği gibi. ADXL345 modülünü döndürün ve üç değerin değiştiğini göreceksiniz.

A kanalı yüksek seviyeden düşük seviyeye değiştiğinde, eğer kanal B yüksek seviyedeyse, döner kodlayıcının saat yönünde (CW) döndüğünü gösterir; o anda B kanalı düşük seviyedeyse, saat yönünün tersine (CCW) dönüyor demektir. Yani A kanalı düşük seviyedeyken B kanalının değerini okursak döner kodlayıcının hangi yönde döndüğünü anlayabiliriz.

Prensip: Aşağıdaki Rotary Enkoder modülünün şematik diyagramına bakın. Buradan döner kodlayıcının pin 3'ünün, yani modül üzerindeki CLK'nın kanal B olduğunu görebiliriz. DT olan Pin 5, kanal A'dır. Kayıt cihazının dönüş yönünü bilmek için, sadece CLK değerini okuyun ve DT.

Devrede 3.3v voltaj regülatör çipi vardır, bu sayede modüle 5V veya 3.3V ile güç verebilirsiniz.

SDO, GND'ye bağlı olduğundan, ADXL345'in I2C adresi 0x53, yazma için 0xA6, okuma için 0xA7'dir.

ADXL345 Modülünün Pin Fonksiyonu.

Adım 3: Prosedürler

Adım 1. Devreyi kurun.

Adım 2:

Kodu https://github.com/primerobotics/Arduino adresinden indirin

Aşama 3:

Krokiyi Arduino Uno panosuna yükleyin

Kodu kontrol panosuna yüklemek için Yükle simgesine tıklayın.

Pencerenin altında "Yükleme tamamlandı" görünüyorsa, çizim başarıyla yüklenmiştir.

Yüklemeden sonra, algılanan verileri görebileceğiniz Seri Monitör'ü açın. Modülün ivmesi değiştiğinde, şekil pencerede buna göre değişecektir.

4. Adım: Kod

kod
kod

//ADXL335

/********************************

ADXL335

not:vcc5v, ancak ADXL335 Vs 3.3V'dir

Devre:

5V: VCC

analog 0: x ekseni

analog 1: y ekseni

analog 2: z ekseni

yaktıktan sonra

programında, algılanan verilerin görüntülendiğini görebileceğiniz seri monitör hata ayıklama penceresini açın. Hızlanma değiştiğinde, rakam buna göre değişecektir.

*********************************

/E-posta:

//Web sitesi:www.primerobotics.in

sabit int xpin =

A0; // ivmeölçerin x ekseni

const int ypin =

A1; // y ekseni

const int zpin =

A2; // z ekseni (yalnızca 3 eksenli modellerde)

geçersiz kurulum()

{

// seri iletişimi başlat:

Seri.başla(9600);

}

boşluk döngüsü()

{

int x = analogRead(xpin); //xpin'den oku

gecikme(1); //

int y = analogRead(ypin); //ypin'den oku

gecikme(1);

int z = analogRead(zpin); // zpin'den oku

float sıfır_G = 338.0; //ADXL335 güç kaynağı

Vs 3.3V:3.3V/5V*1024=676/2=338 ile

//Seri.print(x);

//Seri.print("\t");

//Seri.baskı(y);

//Seri.print("\t");

//Seri.print(z);

//Seri.print("\n");

batmadan yüzmek

zero_Gx=331.5;//x ekseninin zero_G çıkışı:(x_max + x_min)/2

batmadan yüzmek

zero_Gy=329.5;//y ekseninin zero_G çıkışı:(y_max + y_min)/2

float zero_Gz=340.0;//the

z ekseninin zero_G çıkışı:(z_max + z_min)/2

şamandıra ölçeği =

67.6;//güç kaynağı Vs 3.3V:3.3v /5v *1024/3.3v *330mv/g =67.6g

kayan ölçek_x =

65;//x ekseni ölçeği: x_max/3.3v*330mv/g

şamandıra scale_y =

68.5;//y ekseni ölçeği: y_max/3.3v*330mv/g

şamandıra scale_z =

68;//z ekseni ölçeği: z_max/3.3v*330mv/g

Serial.print(((kayan)x

- sıfır_Gx)/ölçek_x); // seri monitörde x değerini yazdır

Seri.print("\t");

Serial.print(((yüzer)y

- sıfır_Gy)/ölçek_y); // seri monitörde y değerini yazdır

Seri.print("\t");

Serial.print(((kayan)z

- sıfır_Gz)/ölçek_z); // seri monitörde z değerini yazdır

Seri.print("\n");

gecikme(1000); // 1 saniye bekle

}

Adım 5: Kod Analizi

ADXL345 deneyinin kodu 3 bölümden oluşur: her bir bağlantı noktasını ve aygıtı başlatın, sensörlerden gönderilen verileri alın ve saklayın ve verileri dönüştürün.

Önerilen: