Hemen hemen her gömülü uygulamada kullanılan ortak bir özellik, ADC modülüdür (Analogdan Dijitale Dönüştürücü). Bu Analogdan dijitale Dönüştürücüler, Sıcaklık sensörü, Eğim sensörü, Akım sensörü, Esnek sensör ve çok daha fazlası gibi analog sensörlerden voltaj okuyabilir. Bu eğitimde, Energia IDE'yi kullanarak Analog voltajları okumak için MSP430G2'de ADC'yi nasıl kullanacağımızı öğreneceğiz . MSP kartına küçük bir potansiyometre arabirimi oluşturacağız ve bir Analog pinine değişen bir voltaj sağlayacağız, voltajı okuyacağız ve Seri Monitörde göstereceğiz.
ADC modülünü anlamak:
İnanın bana, MSP430G2'yi Analog voltajı okuyacak şekilde bağlamak ve programlamak 10 dakika sürmez. Ancak MSP kartındaki ADC modülünü anlamak için biraz zaman harcayalım, böylece gelecek tüm projelerimizde onu etkin bir şekilde kullanabilelim.
Mikrodenetleyici dijital bir cihazdır, yani sadece 1'leri ve 0ları anlayabilir. Ancak gerçek dünyada sıcaklık, nem, rüzgar hızı gibi hemen hemen her şey doğada analogdur. Mikrodenetleyici, bu analog değişikliklerle etkileşim kurmak için ADC adı verilen bir modül kullanır. Mevcut birçok farklı ADC modülü türü vardır, MSP'mizde kullanılan SAR 8 kanallı 10 bit ADC'dir.
Ardışık Yaklaşım (SAR) ADC: SAR ADC, bir karşılaştırıcı ve bazı mantık konuşmalarının yardımıyla çalışır. Bu tip ADC, bir referans voltajı (değişken olan) kullanır ve bir karşılaştırıcı kullanarak giriş voltajını referans voltajı ile karşılaştırır ve dijital bir çıkış olacak fark, En önemli bit'ten (MSB) kaydedilir. Karşılaştırmanın hızı, MSP'nin çalıştığı Saat frekansına (Fosc) bağlıdır.
10-bit Çözünürlük: Bu ADC, 8 kanallı 10 bitlik bir ADC'dir. Burada 8 kanal terimi, analog voltajı ölçebileceğimiz 8 ADC pini olduğunu ima eder. 10 bit terimi, ADC'nin çözünürlüğünü ifade eder. 10-bit, 1024'ün on (2 10) üssü anlamına gelir. Bu, ADC'miz için örnek adımların sayısıdır, dolayısıyla ADC değerlerimizin aralığı 0'dan 1023'e çıkacaktır. Değer 0'dan Aşağıdaki formül kullanılarak hesaplanabilen adım başına voltaj değerine göre 1023
Not: Energia'da varsayılan olarak referans voltajı Vcc (~ 3v) olarak ayarlanır, analogReference () seçeneğini kullanarak referans voltajını değiştirebilirsiniz.
Ayrıca ADC ile diğer Mikroişlemciler arasında nasıl arayüz oluşturacağınızı kontrol edin:
- Arduino Uno'da ADC Nasıl Kullanılır?
- ADC0808 ile 8051 Mikrodenetleyici arasında arayüz oluşturma
- PIC Mikrodenetleyicisinin ADC Modülünü Kullanma
- Raspberry Pi ADC Eğitimi
Devre şeması:
Önceki eğitimimizde, LCD'yi MSP430G2 ile nasıl arayüzleyeceğimizi zaten öğrendik, şimdi MSP430'a değişken bir voltaj sağlamak ve LCD'de voltaj değerini görüntülemek için bir potansiyometre ekleyeceğiz. Eğer LCD ile arayüz oluşturmanın farkında değilseniz, o zaman yukarıdaki bağlantıya geri dönün ve tövbe etmekten kaçınmak için bilgileri atlayacağım için okuyun. Projenin tam devre şeması aşağıda verilmiştir.
Gördüğünüz gibi burada kullanılan iki potansiyometre var, biri LCD'nin kontrastını ayarlamak için, diğeri ise panele değişken bir voltaj sağlamak için kullanılıyor. Bu potansiyometrede, potansiyometrenin bir uç ucu Vcc'ye ve diğer ucu Toprağa bağlanır. Merkez pimi (mavi tel) P1.7 pimine bağlanır. Bu P1.7 pimi, 0V (toprak) ile 3.5V (Vcc) arasında değişken bir voltaj sağlayacaktır. Bu yüzden P1.7 pinini bu değişken gerilimi okumak ve LCD'de görüntülemek için programlamalıyız.
Energia'da P1.7 pininin hangi analog kanala ait olduğunu bilmemiz gerekiyor? Bu, aşağıdaki resme başvurarak bulunabilir
Sağ tarafta P1.7 pinini görebilirsiniz, bu pin A7'ye (Kanal 7) aittir. Benzer şekilde, diğer pinler için de ilgili kanal numarasını bulabiliriz. Analog voltajları okumak için A0'dan A7'ye kadar herhangi bir pin kullanabilirsiniz burada A7'yi seçtim.
MSP430'unuzu ADC için programlama:
MSP430'unuzu analog voltajı okuyacak şekilde programlamak çok basittir. Bu programda değerin analogunu okuyacak ve bu değerle voltajı hesaplayacak ve ardından her ikisini de LCD ekranda gösterecektir. Programın tamamı bu sayfanın alt kısmında bulunabilir, daha aşağıda, daha iyi anlamanıza yardımcı olmak için programı parçacıklar halinde açıklıyorum.
LCD pinlerini tanımlayarak başlıyoruz. Bunlar, LCD pinlerinin MSP430'un hangi pinine bağlandığını tanımlar. Pinlerin sırasıyla bağlandığından emin olmak için bağlantıya başvurabilirsiniz.
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Daha sonra, LCD ekran için başlık dosyasını ekliyoruz. Bu, MSP'nin LCD ile nasıl iletişim kurması gerektiği ile ilgili kodu içeren kitaplığı çağırır. Bu kütüphane, varsayılan olarak Energia IDE'ye kurulacaktır, bu yüzden eklemekle uğraşmanıza gerek yoktur. Ayrıca Liquid Crystal işlevinin yukarıda tanımladığımız pin adlarıyla çağrıldığından emin olun.
#Dahil etmek
Inside kurulum () fonksiyonu, sadece LCD ekranda görüntülenecek bir intro mesajı verecekti. MSP430G2 ile LCD'yi nasıl kullanacağımızı zaten öğrendiğimiz için fazla derine inmiyorum.
lcd.begin (16, 2); // 16 * 2 LCD ekran kullanıyoruz lcd.setCursor (0,0); // İmleci 1. satırın 1. sütuna getirin lcd.print ("MSP430G2553"); // Bir giriş mesajı görüntüle lcd.setCursor (0, 1); // imleci 1. sütun 2. satıra ayarlayın lcd.print ("- CircuitDigest"); // Bir giriş mesajı göster
Son olarak, infinite loop () fonksiyonumuzun içinde A7 pinine sağlanan voltajı okumaya başlarız. Daha önce tartıştığımız gibi, mikro denetleyici dijital bir cihazdır ve voltaj seviyesini doğrudan okuyamaz. SAR tekniği kullanılarak voltaj seviyesi 0 ile 1024 arasında eşlenir. Bu değerler ADC değerleri olarak adlandırılır, bu ADC değerini elde etmek için aşağıdaki satırı kullanın
int val = analogRead (A7); // ADC değerini A7 pininden okuyun
Burada analogRead () fonksiyonu pinin analog değerini okumak için kullanılır, P1.7 pinine değişken voltaj bağladığımız için içinde A7 belirledik. Son olarak bu değeri " val " adlı bir değişkene kaydediyoruz . Bu değişkenin türü tamsayıdır çünkü bu değişkende saklanmak üzere sadece 0 ile 1024 arasında değerler alacağız.
Bir sonraki adım , ADC değerinden voltaj değerini hesaplamak olacaktır. Bunu yapmak için aşağıdaki formüllere sahibiz
Gerilim = (ADC Değeri / ADC Çözünürlüğü) * Referans Gerilim
Bizim durumumuzda mikrodenetleyicimizin ADC çözünürlüğünün 1024 olduğunu zaten biliyoruz. ADC değeri de önceki satırda bulunuyor ve val denilen değişkeni saklıyor. Referans voltajı mikro çalıştığı voltaj eşittir. MSP430 tahta USB kablosu ile güç verildiğinde daha sonra çalışma gerilimi ise 3.6V. Kart üzerindeki Vcc ve topraklama pini boyunca bir multimetre kullanarak da çalışma voltajını ölçebilirsiniz. Dolayısıyla, yukarıdaki formül aşağıda gösterildiği gibi bizim durumumuza uyar
float voltaj = (float (val) / 1024) * 3.6; // ADC değerini voltaja dönüştürmek için formüller
Float (val) ile karıştırılabilirsiniz . Bu, "val" değişkenini int veri türünden "float" veri türüne dönüştürmek için kullanılır. Bu dönüşüm gereklidir çünkü sadece float'ta val / 1024 sonucunu alırsak bunu 3.6 ile çarpabiliriz. Değer tam sayı olarak alınırsa her zaman 0 olacak ve sonuç da sıfır olacaktır. ADC değerini ve voltajını hesapladıktan sonra, geriye kalan tek şey sonucu aşağıdaki satırları kullanarak yapılabilecek LCD ekranda görüntülemek.
lcd.setCursor (0, 0); // imleci sütun 0, satır 0'a ayarlayın lcd.print ("ADC Değeri:"); lcd.print (val); // ADC değerini göster lcd.setCursor (0, 1); // imleci sütun 0, satır 1'e ayarlayın lcd.print ("Voltaj:"); lcd.print (voltaj); // Voltajı göster
Burada ilk satırda ADC değerini, ikinci satırda Gerilim değerini görüntüledik. Son olarak 100 mil saniye gecikme vererek LCD ekranı temizliyoruz. Bu, her 100 mil için güncellenecek değerdi.
Sonucunuzu test ediyoruz!
Son olarak, programımızı test eden ve onunla uğraşan eğlenceli kısma geliyoruz. Bağlantıları devre şemasında gösterildiği gibi yapın. Bağlantılarımı yapmak için küçük bir devre tahtası ve devre tahtasını MSP430'a bağlamak için jumper kabloları kullandım. Bağlantılar yapıldığında benimki aşağıdaki gibi görünüyordu.
Daha sonra aşağıda verilen programı Energia IDE üzerinden MSP430 panosuna yükleyin. Potansiyometreyi kullanarak LCD'nin kontrastını net kelimeler görene kadar ayarlamıyorsanız, giriş metnini LCD'de görebilmeniz gerekir. Ayrıca, sıfırlama düğmesine basmayı deneyin. İşler beklendiği gibi çalışıyorsa, aşağıdaki ekranı görebilmeniz gerekir.
Şimdi potansiyometreyi değiştirin ve LCD'de görüntülenen voltajın değiştiğini de görmelisiniz. Bunu yapmak için voltajı doğru ölçüp ölçmediğimizi doğrulayalım, POT'un merkezi ve toprak arasındaki voltajı ölçmek için bir multimetre kullanın. Multimetre üzerinde görüntülenen voltaj, aşağıdaki resimde gösterildiği gibi LCD'de görüntülenen değere yakın olmalıdır.
Yani, MSP430 kartının ADC'sini kullanarak analog voltajın nasıl ölçüleceğini öğrendik. Artık gerçek zamanlı parametreleri okumak için birçok analog sensörü kartımızla arayüzleyebiliriz. Öğreticiyi anladığınızı ve öğrenmekten keyif aldığınızı umarız, herhangi bir sorun yaşarsanız lütfen aşağıdaki yorum bölümünden veya forumlardan bize ulaşın. Başka bir yeni konu ile MSP430'un başka bir öğreticisini yakalayalım.