- Gerekli malzemeler
- Manyetometre Nedir ve Nasıl Çalışır?
- HMC5883L Sensör Modülü Nasıl Çalışır?
- Devre şeması
- Dijital Pusula için PCB Üretimi
- PCB'nin montajı
- Arduino'nun Programlanması
İnsan beyni, yeryüzünde baskın bir tür olmamıza yardımcı olan karmaşık yapı katmanlarından oluşur. Örneğin, beyninizdeki entorhinal korteks, aşina olmadığınız yerlerde kolayca gezinmenize yardımcı olacak yön duygusu verebilir. Ancak bizden farklı olarak, Robotlar ve insansız Ariel araçlarının bu yön duygusunu elde etmek için bir şeye ihtiyacı var, böylece yeni arazilerde ve manzaralarda otonom olarak manevra yapabilirler. Bunu başarmak için farklı robotlar farklı sensör türleri kullanır, ancak yaygın olarak kullanılan, robota şu anda hangi coğrafi grafik yönüne baktığını bildirebilen bir manyetometredir. Bu sadece robotun yönü algılamasına değil, aynı zamanda önceden tanımlanmış bir yöne ve meleğe dönüş yapmasına da yardımcı olacaktır.
Sensör Kuzey, Güney, Doğu ve Batı coğrafi grafiğini gösterebildiğinden, biz insanlar da gerektiğinde bunu kullanabiliriz. Bu yüzden bu yazıda, Manyetometre sensörünün nasıl çalıştığını ve Arduino gibi bir mikrodenetleyici ile nasıl arayüz oluşturacağını anlamaya çalışalım. Burada, Kuzey Yönünü gösteren bir LED'i parlatarak yönleri bulmamıza yardımcı olacak harika bir Dijital Pusula oluşturacağız. Bu Dijital Pusula, PCBGOGO'dan PCB üzerinde özenle üretilmiştir, böylece bir dahaki sefere vahşi doğaya gittiğimde taşıyabilirim ve sadece bu şeyi eve dönüş yolunu bulmak için kullanmak için kaybolmamı diliyorum. Başlayalım.
Gerekli malzemeler
- Arduino Pro mini
- HMC5883L Manyetometre sensörü
- LED ışıklar - 8Nos
- 470Ohm Direnç - 8Nos
- Namlu Jack
- PCBgogo gibi güvenilir bir PCB üreticisi
- Mini için FTDI Programcı
- PC / Dizüstü
Manyetometre Nedir ve Nasıl Çalışır?
Devreye girmeden önce, manyetometre ve nasıl çalıştıklarını biraz anlayalım. Adından da anlaşılacağı gibi, Magneto terimi, metalleri sadece havada piyano çalarak kontrol edebilen mucize içindeki çılgın mutanttan bahsetmiyor. Ohh! Ama o adam hoşuma gidiyor.
Manyetometre aslında dünyanın manyetik kutuplarını algılayabilen ve ona göre yönü gösterebilen bir cihazdır. Hepimiz Dünya'nın Kuzey Kutbu ve Güney Kutbu ile birlikte devasa bir küresel mıknatıs parçası olduğunu biliyoruz. Ve bundan dolayı manyetik alan var. Bir Manyetometre bu manyetik alanı algılar ve manyetik alanın yönüne bağlı olarak baktığımız yönü tespit edebilir.
HMC5883L Sensör Modülü Nasıl Çalışır?
HMC5883L bir varlık manyetometre sensörü aynı şeyi yapar. Üzerinde Honeywell'den olan HMC5883L IC var. Bu IC, içinde x, y ve z eksenlerinde düzenlenmiş 3 manyeto-dirençli malzemeye sahiptir. Bu malzemelerden geçen akım miktarı dünyanın manyetik alanına duyarlıdır. Böylece, bu malzemelerden geçen akımdaki değişimi ölçerek, Dünya'nın manyetik alanındaki değişimi tespit edebiliriz. Değişiklik manyetik alan soğurulduktan sonra değerler, I2C protokolü aracılığıyla bir mikro denetleyici veya işlemci gibi herhangi bir gömülü denetleyiciye gönderilebilir.
Sensör manyetik alanı algılayarak çalıştığından, yakınına bir metal yerleştirilirse çıkış değerleri büyük ölçüde etkilenecektir. Bu davranış, bu sensörleri metal dedektörleri olarak kullanmak için de kullanılabilir. Bir mıknatıstan gelen güçlü manyetik alan sensörde yanlış değerleri tetikleyebileceğinden, mıknatısları bu sensörün yanına getirmemeye özen gösterilmelidir.
HMC5883L ve QMC5883L arasındaki fark
Yeni başlayanlar için bu sensörlerin etrafında dönen ortak bir kafa karışıklığı var. Bunun nedeni, bazı satıcıların (aslında çoğu) Honeywell'in orijinal HMC5883L'si yerine QMC5883L sensörlerini satmasıdır. Çoğunlukla QMC5883L'nin HMC5883L modülünden çok daha ucuz olmasından kaynaklanıyor. Üzücü olan kısım, bu iki sensörün çalışmasının biraz farklı olması ve aynı kodun her ikisi için de kullanılamamasıdır. Bunun nedeni, her iki sensörün I2C adresinin aynı olmamasıdır. Bu eğitimde verilen kod yalnızca yaygın olarak bulunan sensör modülü olan QMC5883L için çalışacaktır.
Hangi sensör modeline sahip olduğunuzu bilmek için, IC'nin kendisine yakından bakmanız ve üzerine yazılanları okumalısınız. L883 gibi bir şey yazılırsa HMC58836L ve DA5883 gibi bir şey yazılırsa QMC5883L IC'dir. Her iki modül de kolay anlaşılması için aşağıdaki resimde gösterilmiştir.
Devre şeması
Bu Arduino tabanlı Dijital Pusulanın devresi oldukça basittir, sadece HMC5883L sensörünü Arduino ile arayüzlememiz ve 8 LED'i Arduino Pro mini'nin GPIO pinlerine bağlamamız gerekiyor. Tam devre şeması aşağıda gösterilmiştir
Sensör modülü üzerinden 5 pimlidir biz sürekli modda sensörü faaliyet gösteriyor beri hangi DRDY (Veri Hazır) Projemizde kullanılmaz. Vcc ve toprak pimi, Modüle Arduino kartından 5V ile güç sağlamak için kullanılır. SCL ve SDA, sırasıyla Arduino Pro mini'nin A4 ve A5 I2C pinlerine bağlanan I2C iletişim veri yolu hatlarıdır. Modülün kendisi hatlar üzerinde yüksek çekme direncine sahip olduğundan, bunları harici olarak eklemeye gerek yoktur.
Yönü belirtmek için tümü Arduino'nun GPIO pinlerine 470 Ohm'luk bir akım sınırlayıcı direnç üzerinden bağlanan 8 LED kullandık. Komple devre, namlu Jack aracılığıyla 9V'luk bir pil ile çalıştırılır. Bu 9V, doğrudan Arduino üzerindeki yerleşik regülatör kullanılarak 5V'a regüle edildiği Arduino'nun Vin pinine verilir. Bu 5V daha sonra sensöre ve Arduino'ya güç sağlamak için kullanılır.
Dijital Pusula için PCB Üretimi
Devre fikri, 8 LED'i dairesel bir şekilde yerleştirmektir, böylece her Led sırasıyla Kuzey, Kuzey-Doğu, Doğu, Güney-Doğu, Güney, Güney-Batı, Batı ve Kuzey Batı olmak üzere tüm 8 yönü işaret eder. Bu yüzden onları bir breadboard üzerinde veya hatta bu konuda mükemmel bir tahtada düzenlemek kolay değildir. Bu devre için bir PCB geliştirmek, daha temiz ve kullanımı kolay görünmesini sağlayacaktır. Bu yüzden PCB tasarım yazılımımı açtım ve LED'leri ve direnci düzgün dairesel bir düzende yerleştirdim ve bağlantıları oluşturmak için rayları bağladım. Tasarımım tamamlandığında aşağıdaki gibi görünüyordu. Gerber dosyasını aşağıda verilen bağlantıdan da indirebilirsiniz.
- Digital Compass PCB için Gerber dosyasını indirin
Arduino'nun PCB'min alt tarafında olmasını istediğim için çift taraflı bir kart olacak şekilde tasarladım, böylece PCB'min üstündeki görünümü bozmasın. Çift taraflı PCB için yüksek ödeme yapmanız gerektiğinden endişeleniyorsanız, o zaman bekleyin, iyi bir yeni geliyorum.
Artık Tasarımımız hazır olduğuna göre, onları fabrikasyon yaptırmanın zamanı geldi. PCB'yi yapmak oldukça kolaydır, aşağıdaki adımları uygulamanız yeterlidir
Adım 1: www.pcbgogo.com'a girin, ilk seferinizse kayıt olun. Ardından, PCB Prototype sekmesinde PCB'nizin boyutlarını, katman sayısını ve ihtiyacınız olan PCB sayısını girin. PCB'm 80cm × 80cm, bu yüzden sekme aşağıdaki gibi görünüyor
Adım 2: Şimdi Alıntı Yap düğmesine tıklayarak devam edin. Kullanılan malzeme izi aralığı vb. Gibi gerekirse birkaç ek parametrenin ayarlanacağı bir sayfaya yönlendirileceksiniz. Ancak çoğunlukla varsayılan değerler iyi çalışacaktır. Burada dikkate almamız gereken tek şey fiyat ve zamandır. Gördüğünüz gibi, Yapım Süresi sadece 2-3 gündür ve PSB'miz için sadece 5 $ maliyeti vardır. Ardından, ihtiyacınıza göre tercih edilen bir gönderim yöntemi seçebilirsiniz.
3. Adım: Son adım, Gerber dosyasını yüklemek ve ödemeye devam etmektir. İşlemin sorunsuz olduğundan emin olmak için PCBGOGO, ödemeye devam etmeden önce Gerber dosyanızın geçerli olup olmadığını doğrular. Bu şekilde, PCB'nizin imalat dostu olduğundan ve kararlı bir şekilde size ulaşacağından emin olabilirsiniz.
PCB'nin montajı
Tahta sipariş edildikten sonra, birkaç gün sonra kurye tarafından düzgünce etiketlenmiş, iyi paketlenmiş bir kutuda ve her zaman olduğu gibi PCB'nin kalitesi harikaydı. Aşağıda, yargılamanız için panoların birkaç fotoğrafını paylaşıyorum.
Lehim çubuğumu açtım ve kartı monte etmeye başladım. Ayak izleri, pedler, vialar ve serigrafi mükemmel şekilde doğru şekil ve boyutta olduğundan, kartı monte etmekte sorun yaşamadım. Pano, kutuyu açtıktan sonra sadece 10 dakika içinde hazırdı.
Lehimlemeden sonra kartın birkaç resmi aşağıda gösterilmiştir.
Arduino'nun Programlanması
Artık donanımımız hazır olduğuna göre, Arduino kartımıza yüklenmesi gereken programa bakalım. Kodun amacı , verileri QMC5883L manyetometre sensöründen okumak ve dereceye (0 ila 360) dönüştürmektir. Dereceyi öğrendikten sonra, belirli bir yönü gösteren LED'i yakmalıyız. Bu programda kullandığım yön kuzeydir. Yani nerede olursanız olun panonuzda yanan sadece bir LED olacak ve LED'in yönü KUZEY yönünü gösterecektir. Bir zamanlar daha sonra hesaplanabilen diğer yön bir yön biliniyor.
Bu Dijital Pusula Projesi için tam kod bu sayfanın sonunda bulunabilir. Kitaplığı ekledikten sonra doğrudan panonuza yükleyebilirsiniz ve gitmeye hazırsınız. Ama bilmek istiyorsan