İçindekiler:

Kesintili Arduino Hall Etkisi Sensörü: 4 Adım
Kesintili Arduino Hall Etkisi Sensörü: 4 Adım

Video: Kesintili Arduino Hall Etkisi Sensörü: 4 Adım

Video: Kesintili Arduino Hall Etkisi Sensörü: 4 Adım
Video: Lesson 17: Using NJK-5002C Proximity Hall Sensor | Arduino Step By Step Course 2024, Kasım
Anonim
Image
Image
Hall Etkisi Sensörü Nedir?
Hall Etkisi Sensörü Nedir?

Herkese selam, Bugün size bir salon efekti sensörünü bir Arduino'ya nasıl bağlayabileceğinizi ve onu kesinti ile nasıl kullanabileceğinizi göstereceğim.

Videoda kullanılan araç ve gereçler (Ortak bağlantıları):Arduino Uno:

Hall etkisi sensörleri:

Çeşitli Dirençler:

Adım 1: Hall Etkisi Sensörü Nedir?

Hall Etkisi Sensörü Nedir?
Hall Etkisi Sensörü Nedir?
Hall Etkisi Sensörü Nedir?
Hall Etkisi Sensörü Nedir?
Hall Etkisi Sensörü Nedir?
Hall Etkisi Sensörü Nedir?

Hall etkisi sensörü, manyetik alanın büyüklüğünü ölçmek için kullanılan bir cihazdır. Çıkış voltajı, içinden geçen manyetik alan gücü ile doğru orantılıdır.

Hall etkisi sensörleri, yakınlık algılama, konumlandırma, hız algılama ve akım algılama uygulamaları için kullanılır.

Bugün çalışacağım, öncelikle yüksek sıcaklık ve otomotiv uygulamaları için kullanılan bir hall efekt anahtarı olan 3144 olarak etiketlendi. Çıkışı varsayılan olarak yüksektir ve bir manyetik alan varlığında bir kez düşer.

Sensörün 3 pini, VCC'si, topraklaması ve çıkışı vardır. Sensörü etiketleri kendinize doğru tutarsanız, bu sırayla tanımlayabilirsiniz. VCC solda ve çıkış sağ tarafta. Herhangi bir voltaj kaymasını önlemek için, bir pull-up konfigürasyonunda VCC ile çıkış arasında 10k'lık bir direnç kullanılır.

Adım 2: Kesinti Nedir?

Kesinti Nedir?
Kesinti Nedir?
Kesinti Nedir?
Kesinti Nedir?

Sensörü Arduino'ya bağlamak için Kesme adı verilen basit ama çok güçlü bir özellik kullanacağız. Bir Kesme işi, işlemcinin önemli olaylara hızla yanıt vermesini sağlamaktır. Belirli bir sinyal algılandığında, bir Kesinti (adından da anlaşılacağı gibi) işlemcinin yaptığı her şeyi keser ve Arduino'ya beslenen herhangi bir harici uyarana tepki vermek için tasarlanmış bazı kodları yürütür. Bu kod tamamlandıktan sonra, işlemci hiçbir şey olmamış gibi ilk başta ne yapıyorsa ona geri döner!

Bunun harika yanı, sisteminizi yazılımda tahmin edilmesi kolay olmayan önemli olaylara hızlı ve verimli tepki verecek şekilde yapılandırmasıdır. Hepsinden iyisi, bir etkinliğin ortaya çıkmasını beklerken işlemcinizi başka şeyler yapmak için serbest bırakır.

Arduino Uno'da Interrupt olarak kullanabileceğimiz pin 2 ve 3 olmak üzere iki pin vardır. Pin'i interrupt olarak kaydetmek için kullandığımız fonksiyona AttachInterrupt adı verilir, burada kullanılacak pinde ilk parametre olarak gönderdiğimiz ikinci parametre ise ikinci parametredir. Bir kesme algılandığında çağırmak istediğimiz fonksiyonun adı ve üçüncü bir parametre olarak kesmenin çalışmasını istediğimiz modda gönderiyoruz. Video açıklamasında bu işlevin tam referansına bir bağlantı var.

3. Adım: Bağlantılar ve Kod

Bağlantılar ve Kod
Bağlantılar ve Kod
Bağlantılar ve Kod
Bağlantılar ve Kod
Bağlantılar ve Kod
Bağlantılar ve Kod

Örneğimizde salon efekt sensörünü Arduino üzerindeki pin 2'ye bağladık. Çizimin başında, yerleşik LED'in pin numarası, kesme pini ve kesme yoluyla değiştirmek için kullanacağımız bir bayt değişkeni için değişkenleri tanımlıyoruz. Bunu geçici olarak işaretlememiz çok önemlidir, böylece derleyici, kesme yoluyla ana program akışının dışında değiştirildiğini bilebilir.

Setup fonksiyonunda önce kullanılan pinler üzerinde modları belirliyoruz ve daha sonra daha önce anlatıldığı gibi interrupt’ı ekliyoruz. Burada kullandığımız diğer bir işlev de adından da anlaşılacağı gibi pin numarasını kesme numarasına çeviren digitalPinToInterrupt işlevidir.

Ana yöntemde, durum değişkenini LED pinine yazıp çok küçük bir gecikme ekleyerek işlemcinin düzgün çalışması için zamana sahip oluyoruz.

Kesmeyi eklediğimiz yerde, ikinci parametre olarak yanıp sönmeyi belirledik ve çağrılacak fonksiyon adı bu. İçeride sadece durum değerini tersine çeviriyoruz.

AttachIntertupt işlevinin üçüncü parametresi, çalıştığı moddur. CHANGE olarak aldığımızda, kesme durumu her değiştiğinde yanıp sönme işlevi yürütülecek, bu nedenle mıknatısı sensöre yaklaştırdığımızda bir kez çağrılacak ve çıkardığımızda tekrar tetiklenecek. Bu sayede mıknatısı sensöre yakın tuttuğumuzda LED yanar.

Şimdi modu RISING olarak değiştirirsek, yanıp sönme fonksiyonu sadece kesme pininde sinyalin yükselen bir kenarı görüldüğünde tetiklenecektir. Şimdi mıknatısı sensöre her yaklaştırdığımızda, LED ya sönüyor ya da açılıyor, bu yüzden temelde bir manyetik anahtar yaptık.

Deneyeceğimiz son mod DÜŞÜK. Bununla birlikte, mıknatıs yakın olduğunda, yanıp sönme işlevi sürekli olarak tetiklenecek ve durumu her zaman tersine çevrilerek LED titreyecektir. Mıknatısı çıkardığımızda, zamanlamaya bağlı olduğu için durumun nasıl sonuçlanacağı gerçekten tahmin edilemez. Ancak, bunu belirlemek için zamanlama işlevlerini kullanabileceğimiz için bir düğmeye ne kadar süreyle basıldığını bilmemiz gerekiyorsa bu mod gerçekten yararlıdır.

4. Adım: Diğer Eylemler

Daha fazla eylemler
Daha fazla eylemler

Kesintiler, sisteminizi zamana duyarlı görevlere daha duyarlı hale getirmenin basit bir yoludur. Ayrıca, sistemdeki bazı birincil görevlere odaklanmak için ana 'loop()'unuzu serbest bırakma avantajına da sahiptirler. (Bunun, onları kullandığımda kodumu biraz daha düzenli hale getirme eğiliminde olduğunu görüyorum - kesintiler periyodik olayları ele alırken, ana kod parçasının ne için tasarlandığını görmek daha kolay.) Burada gösterilen örnek hemen hemen en iyisidir. bir kesme kullanmak için temel durum - bunları bir I2C cihazını okumak, kablosuz veri göndermek veya almak ve hatta bir motoru başlatmak veya durdurmak için kullanabilirsiniz.

Bir kesinti veya salon efektleri sensörünün ilginç bir kullanımı varsa, yorumlarda bana bildirdiğinizden, bu Eğitilebilir Yazıyı beğendiğinizden ve paylaştığınızdan emin olun ve daha harika öğreticiler ve projeler için YouTube kanalıma abone olmayı unutmayın. gelecek.

Şerefe ve izlediğiniz için teşekkürler!

Önerilen: