Arduino'ya Ivmeölçer Nasıl Bağlanır

İçindekiler:

Arduino'ya Ivmeölçer Nasıl Bağlanır
Arduino'ya Ivmeölçer Nasıl Bağlanır

Video: Arduino'ya Ivmeölçer Nasıl Bağlanır

Video: Arduino'ya Ivmeölçer Nasıl Bağlanır
Video: MPU6050 İvme ve Gyro Sensör Arduino ile Nasıl Kullanılır - Kütüphaneli ve Kütüphanesiz Örnekler 2024, Kasım
Anonim

Bu sefer ADXL335 analog üç eksenli ivmeölçeri Arduino'ya bağlama ile ilgileneceğiz.

Analog İvmeölçer ADXL335
Analog İvmeölçer ADXL335

Gerekli

  • -Arduino;
  • - ivmeölçer ADXL335;
  • - Arduino IDE geliştirme ortamına sahip kişisel bir bilgisayar.

Talimatlar

Aşama 1

İvme vektörünü belirlemek için ivmeölçerler kullanılır. ADXL335 ivmeölçer üç eksene sahiptir ve bu sayede üç boyutlu uzayda ivme vektörünü belirleyebilir. Yerçekimi kuvvetinin de bir vektör olması nedeniyle, ivmeölçer, Dünya'nın merkezine göre üç boyutlu uzayda kendi yönünü belirleyebilir.

Resim, ADXL335 ivmeölçer için pasaporttan (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) resimleri göstermektedir. Burada, cihaz gövdesinin uzayda geometrik yerleşimine göre ivmeölçer hassasiyetinin koordinat eksenleri ve uzaydaki yönelimine bağlı olarak 3 ivmeölçer kanalından voltaj değerleri tablosu gösterilmektedir. Tablodaki veriler, hareketsiz bir sensör için verilmiştir.

İvmeölçerin bize ne gösterdiğine daha yakından bakalım. Sensörün örneğin bir masa üzerinde yatay olarak durmasına izin verin. O zaman ivme vektörünün izdüşümü Z ekseni boyunca 1g'ye veya Zout = 1g'ye eşit olacaktır. Diğer iki eksende sıfırlar olacaktır: Xout = 0 ve Yout = 0. Sensör "sırt üstü" döndürüldüğünde, yerçekimi vektörüne göre ters yönde, yani. Zout = -1g. Benzer şekilde, üç eksende de ölçümler alınır. İvmeölçerin uzayda istenildiği gibi konumlandırılabileceği açıktır, bu nedenle üç kanaldan da sıfırdan farklı okumalar alacağız.

Prob dikey Z ekseni boyunca kuvvetli bir şekilde sallanırsa, Zout değeri "1g" den büyük olacaktır. Herhangi bir yönde eksenlerin her birinde maksimum ölçülebilir ivme "3g" dir (yani hem "artı" hem de "eksi" ile).

İvmeölçer hassasiyet eksenleri ve çıkış değerleri tablosu
İvmeölçer hassasiyet eksenleri ve çıkış değerleri tablosu

Adım 2

Sanırım ivmeölçerin çalışma prensibini anladık. Şimdi bağlantı şemasına bakalım.

ADXL335 analog ivmeölçer yongası oldukça küçüktür ve bir BGA paketine yerleştirilmiştir ve onu evde bir panoya monte etmek zordur. Bu nedenle ADXL335 ivmeölçerli hazır bir GY-61 modülü kullanacağım. Çin çevrimiçi mağazalarındaki bu tür modüller neredeyse bir kuruşa mal oluyor.

İvmeölçere güç vermek için modülün VCC pinine +3, 3 V voltaj beslemek gerekir Sensör ölçüm kanalları Arduino'nun analog pinlerine bağlanır, örneğin "A0", "A1" ve " A2". Bütün devre bu:)

ADXL335 ivmeölçerin Arduno'ya bağlantı şeması
ADXL335 ivmeölçerin Arduno'ya bağlantı şeması

Aşama 3

Bu taslağı Arduino hafızasına yükleyelim. Analog girişlerden gelen okumaları üç kanal üzerinde okuyacağız, voltaja çevireceğiz ve seri porta göndereceğiz.

Arduino'nun 10 bitlik bir ADC'si vardır ve izin verilen maksimum pin voltajı 5 volttur. Ölçülen voltajlar sadece 2 değer alabilen bitlerle kodlanmıştır - 0 veya 1. Bu, tüm ölçüm aralığının (1 + 1) 10. güce bölüneceği anlamına gelir, yani. 1024 eşit parça üzerinde.

Okumaları volta dönüştürmek için analog girişte ölçülen her değeri 1024'e (segmentler) bölmeniz ve ardından 5 ile (volt) çarpmanız gerekir.

Örnek olarak (son sütun) Z eksenini kullanarak ivmeölçerden gerçekten ne geldiğini görelim. Sensör yatay olarak konumlanıp yukarı baktığında sayılar gelir (2.03 +/- 0.01). Dolayısıyla bu, Z ekseni boyunca "+ 1g" ivmesine ve 0 derecelik bir açıya karşılık gelmelidir. Sensörü çevirin. Rakamlar (1, 69 +/- 0, 01) gelir, bu "-1g" ve 180 derecelik bir açıya karşılık gelir.

İvmeölçer okuma kroki
İvmeölçer okuma kroki

4. Adım

İvmeölçerden 90 ve 270 derecelik açılardaki değerleri alıp tabloya girelim. Tablo, ivmeölçerin ("A" sütunu) dönüş açılarını ve volt cinsinden karşılık gelen Zout değerlerini ("B" sütunu) gösterir.

Anlaşılır olması için, Zout çıkışındaki voltajların dönüş açısına karşı bir grafiği gösterilmektedir. Mavi alan, hareketsiz durumdaki (1g ivmede) aralıktır. Grafikteki pembe kutu, +3g'ye kadar ve -3g'ye kadar ivmeyi ölçebilmemiz için bir kenar boşluğudur.

90 derece dönüşte, Z ekseni sıfır ivmeye sahiptir. Onlar. 1,67 volt değeri Z ekseni için koşullu sıfır Zo'dur. O zaman ivmeyi şu şekilde bulabilirsiniz:

g = Zout - Zo / duyarlılık_z, burada Zout milivolt cinsinden ölçülen değerdir, Zo milivolt cinsinden sıfır hızlanmadaki değerdir, duyarlılık_z sensörün Z ekseni boyunca duyarlılığıdır. İvmeölçeri kalibre edin ve hassasiyet değerini sizin için özel olarak hesaplayın formülü kullanarak sensör:

duyarlılık_z = [Z (0 derece) - Z (90 derece)] * 1000. Bu durumda, ivmeölçerin Z ekseni boyunca duyarlılığı = (2, 03 - 1, 68) * 1000 = 350 mV. Benzer şekilde, X ve Y eksenleri için hassasiyetin hesaplanması gerekecektir.

Tablonun "C" sütunu, 350 hassasiyette beş açı için hesaplanan ivmeyi gösterir. Gördüğünüz gibi, pratik olarak Şekil 1'de gösterilenlerle örtüşürler.

İvmeölçerin dönüş açılarının okumalara uygunluğu
İvmeölçerin dönüş açılarının okumalara uygunluğu

Adım 5

Temel geometri dersini hatırlayarak, ivmeölçerin dönüş açılarını hesaplamak için formül elde ederiz:

açı_X = yaytg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Değerler radyan cinsindendir. Dereceye çevirmek için Pi'ye bölün ve 180 ile çarpın.

Sonuç olarak, tüm eksenler boyunca ivmeölçerin ivme ve dönüş açılarını hesaplayan tam bir çizim şekilde gösterilmiştir. Yorumlar, program kodu için açıklamalar sağlar.

"Serial.print ()" portuna çıktı alırken, "\ t" karakteri bir sekme karakterini ifade eder, böylece sütunlar eşit olur ve değerler alt alta yer alır. "+", dizelerin birleştirilmesi (birleştirilmesi) anlamına gelir. Ayrıca, "String ()" operatörü, derleyiciye sayısal değerin bir dizeye dönüştürülmesi gerektiğini açıkça söyler. Round() operatörü köşeyi en yakın 1 dereceye kadar yuvarlar.

İvmeölçerin ivmesini ve açılarını hesaplayan bir çizim
İvmeölçerin ivmesini ve açılarını hesaplayan bir çizim

6. Adım

Böylece Arduino kullanarak ADXL335 analog ivmeölçerden veri almayı ve işlemeyi öğrendik. Artık ivmeölçeri tasarımlarımızda kullanabiliriz.

Önerilen: