İçindekiler:

Arduino için 6 Buton İçin 1 Analog Giriş Kullanın: 6 Adım
Arduino için 6 Buton İçin 1 Analog Giriş Kullanın: 6 Adım

Video: Arduino için 6 Buton İçin 1 Analog Giriş Kullanın: 6 Adım

Video: Arduino için 6 Buton İçin 1 Analog Giriş Kullanın: 6 Adım
Video: Arduino Nedir? Nasıl Kurulur ve Neler Yapılabilir? #1 2024, Kasım
Anonim
Arduino için 6 Düğme için 1 Analog Giriş Kullanın
Arduino için 6 Düğme için 1 Analog Giriş Kullanın

Arduino'm için nasıl daha fazla Dijital Giriş elde edebileceğimi sık sık merak etmişimdir. Kısa süre önce birden fazla dijital giriş getirmek için Analog Girişlerden birini kullanabilmem gerektiği aklıma geldi. Hızlı bir arama yaptım ve insanların bunu nerede yapabildiğini buldum, ancak bunların bir seferde yalnızca tek bir düğmeye basılmasına izin verdiğini. AYNI ANDA basılacak herhangi bir düğme kombinasyonuna sahip olmak istiyorum. Ben de TINKERCAD DEVRELERİ yardımıyla bunu gerçekleştirmek için yola çıktım.

Neden aynı anda düğmeye basmak isteyeyim? TinkerCad Devreleri tasarımında gösterildiği gibi, program içinde farklı modların seçimi için DIP anahtar girişleri için kullanılabilir.

Ortaya çıkardığım devre Arduino'dan temin edilebilen 5V kaynağını kullanıyor ve 7 direnç ve 6 düğme veya anahtar kullanıyor.

Adım 1: Devre

Devre
Devre

Arduino'lar, 0V ila 5V girişi kabul eden analog girişlere sahiptir. Bu giriş 10 bit çözünürlüğe sahiptir, yani sinyal 2^10 parçaya veya 1024 sayıya bölünür. Buna dayanarak, aynı anda basmalara izin verirken bir analog girişe girebileceğimiz en fazla 10 düğme ila 1 analog giriş olacaktır. Ancak bu mükemmel bir dünya değil. İletkenlerde direnç, dış kaynaklardan gelen gürültü ve kusurlu güç vardır. Bu yüzden kendime bolca esneklik sağlamak için bunu 6 düğme için tasarlamayı planladım. Bu kısmen, TinkerCAD Circuits'in testi kolaylaştıracak 6-Switch DIP Switch nesnesine sahip olmasından etkilenmiştir.

Tasarımımdaki ilk adım, her bir düğmeye ayrı ayrı basıldığında benzersiz bir voltaj sağlayacağından emin olmaktı. Bu, tüm dirençlerin aynı değerde olmasını engelledi. Bir sonraki adım, paralel olarak eklendiğinde direnç değerlerinin herhangi bir tek direnç değeriyle aynı dirence sahip olamamasıdır. Dirençler paralel bağlandığında ortaya çıkan direnç Rx=1/[(1/R1)+(1/R2)] ile hesaplanabilir. Yani, eğer R1=2000 ve R2=1000 ise, Rx=667. Her bir direncin boyutunu ikiye katlayarak, herhangi bir kombinasyon için aynı direnci görmeyeceğimi tahmin ettim.

Yani, bu noktaya kadar olan devrem, her biri kendi direncine sahip 6 anahtara sahip olmaktı. Ancak bu devreyi tamamlamak için gereken bir direnç daha vardır.

Son direncin 3 amacı vardır. İlk olarak, bir Pull-Down direnci görevi görür. Direnç olmadan, hiçbir düğmeye basılmadığında devre tamamlanmaz. Bu, Arduino'nun Analog Girişindeki voltajın herhangi bir voltaj potansiyeline kaymasına izin verecektir. Bir Pull-Down direnci esasen gerilimi 0 V'a Aşağı Çeker. İkinci amaç bu devrenin akımını sınırlamaktır. Ohm yasası, V = IR veya Gerilim = Akımın Direnç ile çarpıldığını belirtir. Belirli bir voltaj kaynağı ile direnç ne kadar büyük olursa, akımın daha küçük olacağı anlamına gelir. Bu nedenle, 500ohm'luk bir dirence 5V'luk bir sinyal uygulanırsa, görebildiğimiz en büyük akım 0,01A veya 10mA olacaktır. Üçüncü amaç, sinyal voltajını sağlamaktır. Son dirençten geçen toplam akım şöyle olacaktır: i=5V / Rtoplam, burada Rtoplam = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Ancak, karşılık gelen düğmesine basılmış olan her Direnç için yalnızca 1/Rx ekleyin. Toplam akımdan, Analog Girişe sağlanan Voltaj i*Rlast veya i*500 olacaktır.

2. Adım: Kanıt - Excel

Kanıt - Excel
Kanıt - Excel

Bu devre ile benzersiz dirençler ve dolayısıyla benzersiz voltajlar elde edeceğimi kanıtlamanın en hızlı ve en kolay yolu Excel'in yeteneklerini kullanmaktı.

Tüm olası anahtar giriş kombinasyonlarını kurdum ve bunları ikili kalıpları takip ederek sıralı olarak düzenledim. "1" değeri anahtarın açık olduğunu, boş ise kapalı olduğunu gösterir. Elektronik tablonun en üstüne, her bir anahtar ve aşağı çekme direnci için direnç değerlerini koydum. Daha sonra, bu dirençlerin onu besleyen bir güç kaynağı olmadan bir etkisi olmayacağından, tüm dirençlerin kapalı olduğu durumlar dışında, kombinasyonların her biri için eşdeğer direnci hesapladım. Her bir kombinasyona kopyalayıp yapıştırabilmem için hesaplamalarımı kolaylaştırmak için, her bir anahtar değerini (0 veya 1) ters direnç değeriyle çarparak tüm kombinasyonları hesaplamaya dahil ettim. Bunu yapmak, anahtar kapalıysa direncini hesaplamadan çıkardı. Ortaya çıkan denklem, elektronik tablonun görüntüsünde görülebilir, ancak Req = Rx+1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Itotal = 5V / Req kullanarak devreden geçen toplam akımı belirleriz. Bu, Çekme direncinden geçen akımın aynısıdır ve bize Analog Girişimize Gerilim sağlar. Bu, Vin = İtoplam x Rx olarak hesaplanır. Hem Req verilerini hem de Vin verilerini incelediğimizde gerçekten de benzersiz değerlere sahip olduğumuzu görebiliriz.

Bu noktada devremiz çalışacak gibi görünüyor. Şimdi Arduino'yu nasıl programlayacağınızı bulmak için.

Adım 3: Arduino Programlama

Arduino Programlama
Arduino Programlama
Arduino Programlama
Arduino Programlama
Arduino Programlama
Arduino Programlama

Arduino'yu nasıl programlayacağımı düşünmeye başladığımda, başlangıçta bir anahtarın açık mı yoksa kapalı mı olduğunu belirlemek için ayrı voltaj aralıkları ayarlamayı planladım. Ama bir gece yatakta yatarken, bunu yapmak için bir denklem bulabilmem gerektiği aklıma geldi. Nasıl? mükemmel. Excel, bir grafikteki verilere en uygun denklemleri hesaplama yeteneğine sahiptir. Bunu yapmak için, bu değere karşılık gelen voltaj girişi ile anahtarların (ikili) Tam Sayı Değerinin bir denklemini isteyeceğim. Excel Çalışma Kitabımda, Tam Sayı Değerini elektronik tablonun sol tarafına koydum. Şimdi denklemimi belirlemek için.

İşte Excel'de bir çizginin denkleminin nasıl belirleneceğine dair hızlı bir eğitim.

1) Herhangi bir veri içermeyen bir hücre seçin. Veri içeren bir hücre seçiliyse, Excel neye eğilim göstermek istediğinizi tahmin etmeye çalışacaktır. Bu, bir trend oluşturmayı çok daha zor hale getirir, çünkü Excel nadiren doğru tahmin yapar.

2) "Ekle" sekmesini seçin ve bir "Dağılım" tablosu seçin.

3) Grafik kutusuna sağ tıklayın ve "Veri Seç…" üzerine tıklayın. Bu, "Veri Kaynağı Seç" penceresini açacaktır. Verileri seçmeye devam etmek için Ekle düğmesini seçin.

4) Bir Seri Adı verin (Opsiyonel). Yukarı oku tıklatarak ve ardından Gerilim verilerini seçerek X Ekseni için Aralığı seçin. Yukarı oku tıklatarak ve ardından Tamsayı Verilerini (0-63) seçerek Y Ekseni için Aralığı seçin.

5) Veri noktalarına sağ tıklayın ve "Trend Çizgisi Ekle…" seçeneğini seçin "Trend Çizgisini Biçimlendir" penceresinde, Polinom düğmesini seçin. Trende baktığımızda, Order of 2'nin tam olarak eşleşmediğini görüyoruz. 3'lük bir Düzen seçtim ve bunun çok daha doğru olduğunu hissettim. "Denklemi grafikte görüntüle" onay kutusunu seçin. Son denklem şimdi grafikte görüntüleniyor.

6) Bitti.

TAMAM. Arduino programına geri dönün. Artık denklem elimizde olduğuna göre, Arduino'yu programlamak kolaydır. Anahtar konumlarını temsil eden Tamsayı, 1 satır kodda hesaplanır. "Bitread" işlevini kullanarak, her bir bitin değerini alabilir ve böylece her bir düğmenin durumunu bilebiliriz. (FOTOĞRAFLARI GÖR)

Adım 4: TinkerCAD Devreleri

TinkerCAD Devreleri
TinkerCAD Devreleri

TinkerCAD Devrelerini henüz kontrol etmediyseniz, şimdi yapın. BEKLE!!!! Eğitilebilirliğimi okumayı bitirin ve ardından kontrol edin. TinkerCAD Devreleri, Arduino devrelerini test etmeyi çok kolaylaştırır. Arduino'yu test için programlamanıza bile izin veren birkaç elektrikli nesne ve Arduino içerir.

Devremi test etmek için bir DIP anahtar paketi kullanarak 6 adet anahtar kurdum ve bunları dirençlere bağladım. Excel Elektronik Tablomdaki voltaj değerinin doğru olduğunu kanıtlamak için Arduino Girişinde bir voltmetre gösterdim. Bunların hepsi beklendiği gibi çalıştı.

Arduino Programlamanın çalıştığını kanıtlamak için, Arduino'nun dijital çıkışlarını kullanarak anahtarların durumlarını LED'lere verdim.

Daha sonra her olası kombinasyon için her anahtarı değiştirdim ve "İŞE YARIYOR" demekten gurur duyuyorum!!!

Adım 5: "Çok Uzun ve Tüm Balıklar İçin Teşekkürler." (ref.1)

Şu anda iş için seyahat ettiğim için bunu henüz gerçek ekipman kullanarak denemedim. Ancak TinkerCAD Circuits ile kanıtladıktan sonra işe yarayacağına inanıyorum. Buradaki zorluk, belirttiğim direnç değerlerinin, dirençler için tüm standart değerler olmamasıdır. Bunu aşmak için, ihtiyacım olan değerleri elde etmek için potansiyometreler ve direnç kombinasyonları kullanmayı planlıyorum.

Talimatımı okuduğunuz için teşekkür ederim. Umarım projelerinize yardımcı olur.

Aynı engeli aşmaya çalıştıysanız ve nasıl çözdüyseniz lütfen yorum bırakın. Bunu yapmanın daha fazla yolunu öğrenmeyi çok isterim.

Adım 6: Referanslar

Kaynağını belirtmeden alıntı yapacağımı düşünmediniz değil mi?

referans 1: Adams, Douglas. Çok Uzun ve Tüm Balıklar İçin Teşekkürler. (Otostopçunun Galaksi Rehberi "üçlemesinin" 4. kitabı)

Önerilen: