Bu eğitimde ARDUINO UNO'da ADC (Analogdan Dijitale Dönüştürme) kavramını tanıtıyoruz. Arduino kartının aşağıdaki şekilde gösterildiği gibi altı ADC kanalı vardır. Bunların arasında herhangi biri veya tümü analog voltaj için giriş olarak kullanılabilir. Arduino Uno ADC 10 bit çözünürlükte ait ((0- (2 ^ 10) 1023) arasında bir tam sayı değerleri çok). Bu, 0 ile 5 volt arasındaki giriş voltajlarını 0 ile 1023 arasındaki tam sayı değerlerine eşleyeceği anlamına gelir. Yani birim başına her (5/1024 = 4.9mV) için.
Tüm bunlarda 'A0' kanalına bir potansiyometre veya pot bağlayacağız ve ADC sonucunu basit bir ekranda göstereceğiz. Basit ekranlar 16x1 ve 16x2 ekran birimleridir. 16x1 görüntüleme birimi 16 karaktere sahip olacak ve tek satırdadır. 16x2 32 toplam 16in 1 karakterleri olacak st hattı ve 2 başka 16 nd hattı. Burada, her karakterde 5x10 = 50 piksel olduğu anlaşılmalıdır, bu nedenle bir karakteri görüntülemek için 50 pikselin hepsinin birlikte çalışması gerekir, ancak bunun için endişelenmemize gerek yok çünkü ekran biriminde bunu yapan başka bir kontrolör (HD44780) var pikselleri kontrol etme işi (LCD biriminde görebilirsiniz, arkadaki siyah göz).
Gerekli Bileşenler
Donanım: ARDUINO UNO, güç kaynağı (5v), JHD_162ALCD (16x2LCD), 100uF kapasitör, 100KΩ pot veya potansiyometre, 100nF kapasitör.
Yazılım: arduino IDE (Arduino her gece)
Devre Şeması ve Açıklama
16x2 LCD'de arka ışık varsa 16 pim vardır, arka ışık yoksa 14 pim olacaktır. Arka ışık pimlerine güç verebilir veya bırakabilirsiniz. Şimdi 14 pimde 8 veri pini (7-14 veya D0-D7), 2 güç kaynağı pini (1 ve 2 veya VSS ve VDD veya GND ve + 5v), kontrast kontrolü için 3. pim (karakterlerin ne kadar kalın olması gerektiğini VEE kontrol eder) gösterilmiştir) ve 3 kontrol pini (RS & RW & E).
Devrede, sadece iki kontrol pini aldığımı gözlemleyebilirsiniz, kontrast biti ve READ / WRITE sıklıkla kullanılmadığından toprağa kısa devre yapılabilir. Bu, LCD'yi en yüksek kontrast ve okuma moduna getirir. Karakterleri ve verileri buna göre göndermek için sadece ENABLE ve RS pinlerini kontrol etmemiz gerekiyor.
LCD için yapılan bağlantılar aşağıda verilmiştir:
PIN1 veya VSS toprağa
PIN2 veya VDD veya VCC ila + 5v güç
Zemine PIN3 veya VEE (yeni başlayanlar için en iyi maksimum kontrastı verir)
ARDUINO UNO'nun PIN8'ine PIN4 veya RS (Kayıt Seçimi)
PIN5 veya RW (Okuma / Yazma) zemine (LCD'yi okuma moduna geçirerek kullanıcı için iletişimi kolaylaştırır)
ARDUINO UNO'nun PIN9'una PIN6 veya E (Etkinleştir)
ARDUINO UNO'nun PIN11 veya D4'ü
ARDUINO UNO'nun PIN12 veya D5'ten PIN11'e
ARDUINO UNO'nun PIN13 veya D6'sı
ARDUINO UNO'nun PIN13'üne PIN14 veya D7
ARDUINO IDE, kullanıcının LCD'yi 4 bit modunda kullanmasına izin verir. Bu tür bir iletişim, kullanıcının ARDUINO'daki pin kullanımını azaltmasını sağlar, diğerlerinden farklı olarak, ARDUINO'nun 4 it modunda kullanılması için ayrı olarak programlanması gerekmez, çünkü varsayılan olarak ARDUINO, 4 bit modunda iletişim kuracak şekilde ayarlanmıştır. Devrede 4 bit iletişim kullandığımızı görebilirsiniz (D4-D7).
Bu nedenle, yukarıdaki tablodan sadece gözlemden, 6 pin LCD'yi, 4 pinin veri pini ve kontrol için 2 pini olan denetleyiciye bağlıyoruz.
Yukarıdaki şekil ARDUINO UNO'nun ADC'sinin devre şemasını göstermektedir.
Çalışma
LCD'yi ARDUINO UNO'ya bağlamak için birkaç şey bilmemiz gerekiyor.
|
Öncelikle UNO ADC kanallarının varsayılan referans değeri 5V'tur. Bu, herhangi bir giriş kanalında ADC dönüşümü için maksimum 5V giriş voltajı verebileceğimiz anlamına gelir. Bazı sensörler 0-2.5V arasında voltaj sağladığından, 5V referans ile daha az doğruluk elde ederiz, bu nedenle bu referans değerini değiştirmemizi sağlayan bir talimatımız var. Referans değerini değiştirmek için elimizde ("analogReference ();")
Varsayılan olarak, 10 bit olan maksimum kart ADC çözünürlüğünü elde ederiz, bu çözünürlük komut kullanılarak değiştirilebilir ("analogReadResolution (bit);"). Bu çözünürlük değişikliği bazı durumlarda kullanışlı olabilir.
Şimdi yukarıdaki koşullar varsayılan olarak ayarlanırsa, "analogRead (pin)" işlevini doğrudan çağırarak "0" kanalının ADC'sinden değeri okuyabiliriz; burada "pin", analog sinyali bağladığımız pini temsil eder, bu durumda "A0" olun. ADC'den gelen değer “int ADCVALUE = analogRead (A0); ", Bu komutla ADC'den sonraki değer" ADCVALUE "tamsayısında saklanır.
ŞİMDİ 16x2 LCD'den biraz bahsedelim. İlk önce başlık dosyasını etkinleştirmemiz gerekiyor ('#include
İkinci olarak, burada hangi tip LCD kullandığımızı panoya söylememiz gerekiyor. Çok farklı LCD türlerimiz olduğu için (20x4, 16x2, 16x1 vb.). Burada 16x2 LCD'yi UNO'ya bağlayacağız, böylece 'lcd.begin (16, 2);' elde ederiz. 16x1 için 'lcd.begin (16, 1);' alıyoruz.
Bu talimatta panele pinleri nereye bağladığımızı anlatacağız. Bağlanan pinler sırasıyla “RS, En, D4, D5, D6, D7” olarak gösterilecektir. Bu pimler doğru şekilde gösterilmelidir. RS'yi PIN0'a bağladığımız ve benzerlerini devre şemasında gösterildiği gibi, pin numarasını karta “LiquidCrystal lcd (0, 1, 8, 9, 10, 11);” olarak gösteriyoruz.
Yukarıdakilerden sonra geriye kalan tek şey veri göndermek, LCD'de görüntülenmesi gereken verilerin “cd.print (" merhaba, dünya! ");” Şeklinde yazılması gerekiyor. Bu komutla LCD'de 'merhaba, dünya!' Görüntülenir.
Gördüğünüz gibi başka herhangi bir şey için endişelenmemize gerek yok, sadece başlatmamız gerekiyor ve UNO verileri göstermeye hazır olacak. BYTE tarafından buraya veri BYTE göndermek için bir program döngüsü yazmak zorunda değiliz.
Arduino Uno'nun ADC'sinin kullanılması aşağıda verilen C programında adım adım anlatılmıştır.