Bu projede ARDUINO UNO'da ADC (Analogdan Dijitale Dönüşüm) konseptini kullanıyoruz. Bir mıknatısın alan gücünü ölçmek için bir Hall Effect sensörü ve Arduino uno kullanacağız. Burada kullandığımız sensör UGN3503U'dur. Bu, manyetik alan kuvvetini algılayan ve alan gücüyle orantılı çıkışta değişken bir voltaj sağlayan bir salon sensörüdür. Bu sensör, ' GAUSS ' birimlerinde alan gücünü alır.
Yani bu sensör ile değişen voltaj olarak alan gücüne sahip olacağız. ADC özelliğini kullanarak bu voltajı bir sayıya çevireceğiz. Bu sayı alan gücünü temsil eder ve LCD'de gösterilir.
Arduino'nun altı ADC kanalı vardır. Bunlardan herhangi biri veya tümü analog voltaj için giriş olarak kullanılabilir. UNO ADC, 10 bit çözünürlüklüdür (yani (0- (2 ^ 10) 1023) arasındaki tam sayı değerleri). 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 (2 adet), UGn3503U.
Yazılım: arduino IDE (Arduino her gece)
Devre Şeması ve Açıklama
Yukarıdaki şekil, arduino uno kullanılarak manyetik alan ölçümü için devre şemasını göstermektedir.
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österilmektedir) ve 3 kontrol pini (RS & RW & E).
Yukarıdaki devrede, sadece iki kontrol pini aldığımı gözlemleyebilirsiniz, kontrast biti ve READ / WRITE sık sık 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ğerlerinin aksine, 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.
Ç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.
Bir mıknatıs sensörün yanına getirildiğinde, sensör alanla orantılı çıkışta bir voltajı temsil eder, bu değer Uno tarafından alınır ve LCD'de gösterilir. Bu manyetik alan ölçüm projesinin çalışması aşağıdaki C kodu ile daha ayrıntılı açıklanmaktadır.