- Gerekli Bileşenler ve Donanım Kurulumu
- Analog Voltajı Okumak için Nuvoton N76E003 Devre Şeması
- N76E003'teki GPIO ve Analog Pinler hakkında bilgi
- N76E003'teki ADC Çevre Birimi hakkında bilgi
- ADC için N76E003'ün Programlanması
- Kodun ve çıktının yanıp sönmesi
Analogdan Dijitale dönüştürücü (ADC), bir mikrodenetleyicide en çok kullanılan donanım özelliğidir. Analog voltajı alır ve bunu dijital bir değere dönüştürür. Mikrodenetleyiciler dijital cihazlar olduğundan ve ikili rakam 1 ve 0 ile çalıştığından, analog verileri doğrudan işleyemedi. Bu nedenle, bir ADC, analog voltajı almak ve onu bir mikro denetleyicinin anlayabileceği eşdeğer dijital değerine dönüştürmek için kullanılır. Analogdan Dijitale Dönüştürücü (ADC) hakkında daha fazla bilgi istiyorsanız, bağlantılı makaleye göz atabilirsiniz.
Elektronikte Analog çıkış sağlayan MQ gaz sensörleri, ADXL335 İvmeölçer sensörü vb. Gibi farklı sensörler mevcuttur. Bu nedenle, Analogdan Dijitale dönüştürücü kullanılarak, bu sensörler bir mikro denetleyici birimiyle arayüzlenebilir. ADC'yi diğer mikro denetleyicilerle kullanmak için aşağıda listelenen diğer eğitimlere de göz atabilirsiniz.
- 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
- MSP430G2'de ADC nasıl kullanılır - Analog Gerilim Ölçümü
- STM32F103C8'de ADC nasıl kullanılır
Bu eğitimde, N76E003 mikro denetleyici biriminin dahili ADC çevre birimini kullanacağız, bu yüzden bu uygulama için ne tür bir donanım kurulumuna ihtiyacımız olduğunu değerlendirelim.
Gerekli Bileşenler ve Donanım Kurulumu
Kullanmak için N76E003 üzerinde ADC, bir potansiyometre kullanarak bir gerilim bölücü kullanmak ve 0V-5.0V arasında değişen voltaj okuyacaktır. Voltaj 16x2 Karakter LCD'de gösterilecektir, eğer LCD ve N76E003 ile yeniyseniz, LCD ile Nuvoton N76E003 arasında nasıl arayüz oluşturacağınızı kontrol edebilirsiniz. Dolayısıyla bu proje için gerekli olan ana bileşen 16x2 Karakter LCD'dir. Bu proje için aşağıdaki bileşenleri kullanacağız-
- Karakter LCD 16x2
- 1k direnç
- 50k potansiyometre veya trim potu
- Birkaç Berg kablosu
- Birkaç bağlantı teli
- Breadboard
Bahsetmiyorum bile, yukarıdaki bileşenlerin dışında N76E003 mikro denetleyici tabanlı geliştirme kartına ve Nu-Link Programlayıcısına ihtiyacımız var. LCD, programcının sağlayamayacağı kadar yeterli akımı çektiğinden, ek bir 5V güç kaynağı ünitesi de gereklidir.
Analog Voltajı Okumak için Nuvoton N76E003 Devre Şeması
Şematikte görebileceğimiz gibi, LCD ile ilgili bağlantı için P0 portu kullanılır. En solda, programlama arayüzü bağlantısı gösterilmektedir. Potansiyometre, bir voltaj bölücü görevi görür ve bu, analog giriş 0 (AN0) tarafından algılanır.
N76E003'teki GPIO ve Analog Pinler hakkında bilgi
Aşağıdaki resim, N76E003AT20 mikro denetleyici biriminde bulunan GPIO pinlerini göstermektedir. Ancak 20 pinden LCD bağlantılı bağlantı için P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 ve P0.7) kullanılmaktadır. Analog pinler KIRMIZI renkte vurgulanmıştır.
Gördüğümüz gibi, Port P0 maksimum analog pinlere sahiptir, ancak bunlar LCD ile ilgili iletişim için kullanılır. Böylece, P3.0 ve P1.7 Analog giriş pinleri AIN1 ve AIN0 olarak mevcuttur. Bu proje sadece bir analog pin gerektirdiğinden, bu proje için Analog giriş kanalı 0 olan P1.7 kullanılmıştır.
N76E003'teki ADC Çevre Birimi hakkında bilgi
N76E003, 12 bitlik bir SAR ADC sağlar. N76E003'ün çok iyi bir ADC çözünürlüğüne sahip olması çok iyi bir özellik. ADC, tek uçlu modda 8 Kanallı girişlere sahiptir. ADC ile arayüz oluşturmak oldukça basit ve kolaydır.
İlk adım, ADC kanal girişini seçmektir. N76E003 mikro denetleyicilerinde 8 Kanallı girişler mevcuttur. ADC girişlerini veya I / O pinlerini seçtikten sonra, tüm pinlerin koddaki yöne göre ayarlanması gerekir. Analog giriş için kullanılan tüm pinler, mikro denetleyicinin giriş pinleridir, bu nedenle tüm pinlerin Yalnızca Giriş (yüksek empedans) modu olarak ayarlanması gerekir. Bunlar, PxM1 ve PxM2 kaydı kullanılarak ayarlanabilir. Bu iki kayıt, x'in Port numarasını temsil ettiği G / Ç modlarını ayarlar (Örneğin, Port P1.0, kayıt P1M1 ve P1M2, P3.0 için P3M1 ve P3M2 vb.) Yapılandırma aşağıdaki resimde görülebilir-
ADC'nin konfigürasyonu iki kayıt ADCCON0 ve ADCCON1 tarafından yapılır. ADCCON0 Register açıklaması aşağıda gösterilmektedir.
Kaydın 0 bitinden 3 bitine ilk 4 biti, ADC Kanalı seçimini ayarlamak için kullanılır. AIN0 kanalını kullandığımız için, bu dört bit için seçim 0000 olacaktır.
6. ve 7. bitler önemli olanlardır. ADCS'nin, ADC dönüşümünü başlatmak için 1'i ayarlaması gerekir ve ADCF, başarılı ADC dönüşümü hakkında bilgi sağlayacaktır. ADC dönüşümünü başlatmak için aygıt yazılımı tarafından 0'a ayarlanması gerekir. Bir sonraki kayıt ADCCON1-
ADCCON1 kaydı esas olarak harici kaynaklar tarafından tetiklenen ADC dönüşümü için kullanılır. Bununla birlikte, normal sorgulama ile ilgili işlemler için, birinci bit ADCEN'in ADC devresini açmak için 1'i ayarlaması gerekir.
Daha sonra, ADC kanalının girişinin, dijital girişlerin bağlantısının kesilebildiği AINDIDS kaydında kontrol edilmesi gerekir.
N, kanal bitini temsil eder (Örneğin, AIN0 kanalının, AINDIDS kaydının ilk biti P17DIDS kullanılarak kontrol edilmesi gerekecektir). Dijital girişin etkinleştirilmesi gerekir, aksi takdirde 0 olarak okunacaktır. Bunların tümü ADC'nin temel ayarlarıdır. Şimdi, ADCF'yi temizlemek ve ADCS'yi ayarlamak ADC dönüşümü başlatılabilir. Dönüştürülen değer aşağıdaki kayıtlarda mevcut olacaktır.
Ve
Her iki kayıt da 8 bittir. ADC 12 bitlik veri sağladığından, ADCRH tam (8 bit) olarak kullanılır ve ADCRL yarım (4 bit) olarak kullanılır.
ADC için N76E003'ün Programlanması
Her seferinde belirli bir modül için kodlama telaşlı bir iştir, bu nedenle N76E003 ile 16x2 karakter LCD arabirimi için çok yararlı olacak basit ancak güçlü bir LCD kitaplığı sağlanır. 16x2 LCD kitaplığı, aşağıdaki bağlantıdan indirebileceğiniz Github depomuzda mevcuttur.
Nuvoton N76E003 için 16x2 LCD Kitaplığını İndirin
Nazikçe (klonlama veya indirerek) kütüphane var ve sadece içerir lcd.c ve LCD.h sizin dosyaları Keil N76E003 projesi istenen uygulama veya projede 16x2 LCD kolay entegrasyonu için. Kitaplık, aşağıdaki yararlı ekranla ilgili işlevleri sağlayacaktır:
- LCD'yi başlatın.
- LCD'ye komut gönderin.
- LCD'ye yazın.
- LCD'ye bir dizi (16 Karakter) yerleştirin.
- Onaltılık değer göndererek karakteri yazdırın.
- 16'dan fazla karakter içeren uzun mesajları kaydırın.
- Tam sayıları doğrudan LCD'ye yazdırın.
ADC için kodlama basittir. Enable_ADC_AIN0 kurulum işlevinde ; kurmak için kullanılan ADC için AIN0 girişi. Bu dosyada tanımlanmıştır.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Dolayısıyla, yukarıdaki satır, pimi bir giriş olarak ayarlar ve ADCCON0, ADCCON1 yazmacının yanı sıra AINDIDS yazmacını da yapılandırır. Aşağıdaki işlev ADC'yi ADCRH ve ADCRL kayıtlarından ancak 12 bit çözünürlükte okuyacaktır .
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; süre (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; return adc_value; }
Bit 4 kez sola kaydırılır ve ardından veri değişkenine eklenir. Ana işlevde, ADC Verileri okur ve doğrudan ekranda yazdırılır. Bununla birlikte, voltaj aynı zamanda bir oran veya voltaj arasındaki ilişkinin bit değerine bölünmesiyle de dönüştürülür.
12 bitlik bir ADC, 5.0V girişte 4095 bit sağlayacaktır. Böylece 5.0V / 4095 = 0.0012210012210012V'yi böler
Bu nedenle, 1 basamaklı bit değişiklikleri, 0.001V'deki (Yaklaşık) değişikliklere eşit olacaktır. Bu, aşağıda gösterilen ana işlevde yapılır.
void main (void) { int adc_data; kurmak(); lcd_com (0x01); while (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("ADC Verileri:"); adc_data = ADC_read (); lcd_print_number (adc_data); voltaj = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", voltaj); lcd_com (0xC0); lcd_puts (str_voltage); Zamanlayıcı0_Gecik1ms (500); } }
Veriler bit değerinden voltaja dönüştürülür ve bir sprintf işlevi kullanılarak çıktı bir dizeye dönüştürülür ve LCD'ye gönderilir.
Kodun ve çıktının yanıp sönmesi
Kod 0 uyarı ve 0 Hata döndürdü ve Keil tarafından varsayılan yanıp sönme yöntemi kullanılarak yanıp söndü, yanıp sönen mesajı aşağıda görebilirsiniz. Keil veya Nuvoton'da yeniyseniz, temel bilgileri ve kodun nasıl yükleneceğini anlamak için Nuvoton mikrodenetleyicisini kullanmaya başlayın.
Yeniden oluşturma başladı: Proje: zamanlayıcı Yeniden oluşturma hedefi 'Hedef 1' STARTUP.A51'i birleştiriyor… main.c derleniyor… lcd.c derleniyor… derleniyor Delay.c… bağlanıyor… Program Boyutu: data = 101.3 xdata = 0 code = 4162 ". \ Objects \ timer"… ". \ Objects \ timer" dan onaltılık dosya yaratma - 0 Hata (lar), 0 Uyarı (lar). Geçen Oluşturma Süresi: 00:00:02 Yükleme "G: \\ n76E003 \\ Ekran \\ Nesneler \\ zamanlayıcı" Flaş Silme Tamamlandı. Flash Write Done: 4162 bayt programlandı. Flash Doğrulama Tamamlandı: 4162 bayt doğrulandı. Flash Yükleme 11:56: 04'te tamamlandı
Aşağıdaki resim, bir DC adaptörü kullanılarak güç kaynağına bağlanan donanımı göstermektedir ve ekran, sağdaki potansiyometre tarafından ayarlanan voltaj çıkışını göstermektedir.
Potansiyometreyi çevirirsek ADC pinine verilen voltaj da değişecek ve LCD'de gösterilen ADC değeri ve Analog voltajı görebiliyoruz. Bu eğiticinin eksiksiz çalışma gösterimi için aşağıdaki videoyu inceleyebilirsiniz.
Umarım makaleyi beğenmişsinizdir ve yararlı bir şey öğrenmişsinizdir, sorularınız varsa aşağıdaki yorum bölümüne bırakın veya diğer teknik soruları göndermek için forumlarımızı kullanabilirsiniz.