İçindekiler:

GY511 Modülü Arduino İle Nasıl Kullanılır [Dijital Pusula Yapın]: 11 Adım
GY511 Modülü Arduino İle Nasıl Kullanılır [Dijital Pusula Yapın]: 11 Adım

Video: GY511 Modülü Arduino İle Nasıl Kullanılır [Dijital Pusula Yapın]: 11 Adım

Video: GY511 Modülü Arduino İle Nasıl Kullanılır [Dijital Pusula Yapın]: 11 Adım
Video: use flowcode with GY-511 module 2024, Kasım
Anonim
GY511 Modülü Arduino İle Nasıl Kullanılır [Dijital Pusula Yapın]
GY511 Modülü Arduino İle Nasıl Kullanılır [Dijital Pusula Yapın]

genel bakış

Bazı elektronik projelerinde her an coğrafi konumu bilmemiz ve ona göre belirli bir işlem yapmamız gerekiyor. Bu eğitimde, dijital bir pusula yapmak için LSM303DLHC GY-511 pusula modülünü Arduino ile nasıl kullanacağınızı öğreneceksiniz. Öncelikle bu modülü ve nasıl çalıştığını öğreneceksiniz ve ardından LSM303DLHC GY-511 modülünün Arduino ile nasıl arayüzleneceğini göreceksiniz.

Ne öğreneceksin

  • Pusula modülü nedir?
  • Pusula modülü ve Arduino arayüzü.
  • GY-511 modülü ve Arduino ile dijital pusula yapın.

Adım 1: Pusula Modülü Hakkında Genel Bilgiler

Pusula Modülü Hakkında Genel Bilgiler
Pusula Modülü Hakkında Genel Bilgiler

GY-511 modülü, 3 eksenli bir ivmeölçer ve 3 eksenli bir manyetometre içerir. Bu sensör, ± 2 g / ± 4 g / ± 8 g / ± 16 g tam ölçeklerde doğrusal ivmeyi ve ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 tam ölçeklerde manyetik alanları ölçebilir. / ± 8.1 Gauss.

Bu modül bir manyetik alana yerleştirildiğinde, Lorentz yasasına göre mikroskobik bobininde bir uyarma akımı indüklenir. Pusula modülü, bu akımı her koordinat yönü için diferansiyel gerilime dönüştürür. Bu voltajları kullanarak her yöndeki manyetik alanı hesaplayabilir ve coğrafi konumu elde edebilirsiniz.

QMC5883L, yaygın olarak kullanılan başka bir pusula modülüdür. LMS303 modülü ile benzer bir yapıya ve uygulamaya sahip olan bu modül, performans olarak biraz farklıdır. Bu yüzden projeleri yapıyorsanız modül tipinize dikkat edin. Modülünüz QMC5882L ise, eğitimde de bulunan uygun kitaplığı ve kodları kullanın.

2. Adım: Gerekli Bileşenler

Gerekli Bileşenler
Gerekli Bileşenler

Donanım bileşenleri

Arduino UNO R3 *1

GY-511 3-Eksen İvmeölçer + Manyetometre *1

TowerPro Servo Motor SG-90 *1

1602 LCD Modülü *1

Süveter * 1

Yazılım Uygulamaları

Arduino IDE'si

Adım 3: GY-511 Pusula Modülünü Arduino ile Arayüz Oluşturma

Arduino ile GY-511 Pusula Modülü Arayüzleme
Arduino ile GY-511 Pusula Modülü Arayüzleme
Arduino ile GY-511 Pusula Modülü Arayüz
Arduino ile GY-511 Pusula Modülü Arayüz

GY-511 pusula modülünün 8 pini vardır, ancak Arduino ile arayüz oluşturmak için bunlardan sadece 4 tanesine ihtiyacınız vardır. Bu modül Arduino ile I2C protokolünü kullanarak haberleşir, bu nedenle modülün SDA (I2C çıkışı) ve SCK (I2C saat girişi) pinlerini Arduino kartı üzerindeki I2C pinlerine bağlayın.

NotGördüğünüz gibi bu projede GY-511 modülünü kullandık. Ancak bu talimatı diğer LMS303 pusula modüllerini kurmak için kullanabilirsiniz.

Adım 4: GY-511 Pusula Modülü Kalibrasyonu

Gezinmek için önce modülü kalibre etmeniz gerekir, bu da ölçüm aralığını 0 ila 360 derece arasında ayarlamak anlamına gelir. Bunu yapmak için modülü aşağıda gösterildiği gibi Arduino'ya bağlayın ve aşağıdaki kodu panonuza yükleyin. Kodu çalıştırdıktan sonra, seri monitör penceresinde X, Y ve Z ekseni için ölçüm aralığının minimum ve maksimum değerlerini görebilirsiniz. Bu sayılara bir sonraki bölümde ihtiyacınız olacak, bu yüzden onları bir yere yazın.

Adım 5: Devre

Devre
Devre

6. Adım: Kod

Bu kodda, I2C iletişimi için Wire.h kitaplığına ve pusula modülü için LMS303.h kitaplığına ihtiyacınız var. Bu kütüphaneleri aşağıdaki linklerden indirebilirsiniz.

LMS303.h Kitaplığı

Wire.h Kitaplığı

NotQMC5883 kullanıyorsanız, aşağıdaki kitaplığa ihtiyacınız olacaktır:

MechaQMC5883L.h

Burada LMS303 kodunu açıklıyoruz, ancak QMC modülünün kodlarını da indirebilirsiniz.

Yeni işlevlerden bazılarını görelim:

compass.enableDefault();

Modül başlatma

pusula.read();

Pusula modülünün çıkış değerlerinin okunması

run_min.z = min(running_min.z, compass.m.z); Running_max.x = max(running_max.x, compass.m.x);

Ölçülen değerleri karşılaştırarak ölçüm aralığının minimum ve maksimum değerlerinin belirlenmesi.

7. Adım: Dijital Pusula Yapmak

Modül kalibrasyonunu yaptıktan sonra modüle servo motor bağlayarak pusula oluşturacağız. Böylece servo göstergesi, pusuladaki kırmızı ok gibi bize her zaman kuzey yönünü gösterir. Bunu yapmak için önce pusula modülü coğrafi yönü hesaplar ve Arduino'ya gönderir ve daha sonra uygun bir katsayı uygulayarak servo motorun dönmesi gereken açıyı hesaplarsınız, böylece göstergesi manyetik kuzeyi gösterir. Sonunda bu açıyı servo motora uyguluyoruz.

Adım 8: Devre

Devre
Devre

9. Adım: Kod

kod
kod

Bu kısım için Arduino yazılımınızda varsayılan olarak kurulu olan Servo.h kütüphanesine de ihtiyacınız vardır.

Yeni işlevlerden bazılarını görelim:

Servo Servo1;

Modül başlatma

pusula.read();

Servo motor nesnesinin tanıtılması

Servo1.attach(servoPin); pusula.init(); compass.enableDefault();

Pusula modülünü ve servo motoru başlatma

Servo1.attach() argümanı, servo motora bağlı pin sayısıdır.

compass.m_min = (LSM303::vektör){-32767, -32767, -32767}; compass.m_max = (LSM303::vektör){+32767, +32767, +32767};

Bu satırları kullanarak, önceki bölümde elde edilen aralığı ölçmek için minimum ve maksimum değerleri tanımlarsınız.

kayan yön =compass.heading((LSM303::vektör){0, 0, 1});

header() işlevi, koordinat ekseni ile sabit bir eksen arasındaki açıyı döndürür. Sabit ekseni, fonksiyon argümanında bir vektör ile tanımlayabilirsiniz. Örneğin burada (LSM303:: vector) {0, 0, 1} tanımlanarak Z ekseni sabit bir eksen olarak kabul edilir.

Servo1.write(başlık);

Servo1.write() işlevi, pusula modülü tarafından okunan değeri servo motora uygular.

Not Servo motorun bir manyetik alanı olabileceğini unutmayın, bu nedenle servo motoru pusula modülünden uygun bir mesafeye yerleştirmek pusula modülünün sapmasına neden olmaması için daha iyidir.

Önerilen: