GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ 6.HAFTA Yrd. Doç. Dr. Fecir DURAN Arş. Gör. Esra SÖĞÜT
İÇİNDEKİLER ANALOG-DIGITAL DÖNÜŞTÜRME (ADC) DIGITAL-ANALOG DÖNÜŞTÜRME (DAC) POTANSİYOMETRE AnalogRead(); AnalogWrite(); Map(); PWM SERİ ANALOG OKUMA UYGULAMASI
Analog-Digital Dönüştürme (ADC ve DAC) Maksimum ve minimum sınırları arasında farklı değerler alarak değişen elektriksel büyüklüklere analog bilgi ya da analog değer denir. Akım ve gerilim analog değerlerdir. Büyüklüklerin, gerilimleri için 1 (var) veya 2 (yok) şeklinde ifade edilmesine dijital bilgi ya da dijital değer denir. Sensör ve transdüser çıkışlarında genellikle analog değer bulunur. Mikroişlemci ile çalışan elektronik cihazlar sadece dijital bilgileri alıp değerlendirebilir. Bu durumda mikroişlemcili ve dijital birçok cihaz için analog bilgilerin dijital bilgilere dönüştürülmesi gerekir.
ADC Analog değerleri dijital değerlere dönüştüren devrelere ADC (Analog Digital Converter – AD Dönüştürücü) denir.
ADC Özellikleri Çevrim Zamanı Örnekleme Frekansı (Çevrim Frekansı) Çözünürlük Quantum Seviyesi (Bölüntü Seviyesi) Doğruluk Polarite
ADC Çeşitleri Paralel karşılaştırıcı (Flash) A/D dönüştürücü Sayısal eğimli (Basamak rampalı) A/D dönüştürücü Girişi izleyen A/D dönüştürücü Tek eğimli A/D dönüştürücü Çift eğimli A/D dönüştürücü Ardışık yaklaşımlı (SAR) A/D dönüştürücü Şarj dengeleme sistemli A/D dönüştürücü Gerilim/Frekans dönüştürücülü ADC Delta-Sigma A/D dönüştürücü Boru Hattı Tipi (Pipeline) A/D dönüştürücü Ayrık Zamanlı ADC (Time-Interleaved, TI-ADC)
ADC Çeşitleri
ADC Çeşitleri
DAC Analog değerler dijitale dönüştürüldükten sonra işlem görür, saklanır, uzak mesafelere iletilir, çeşitli ekranlarda gösterilir. Bazı durumlarda dijital değerleri yeniden analog değerlere dönüştürmek gerekir. Örneğin bilgisayarımızda bir müzik parçasını dijital olarak kayıtlı bulunmaktadır. Dinlemek istediğimizde bu dijital değerler hoparlör için anlamlı ve kullanılabilir değerler değildir. Yeniden analog değere dönüştürülerek hoparlöre verilmelidir.
DAC Dijital değerleri analog değerlere dönüştüren devrelere DAC (Digital Analog Converter, D/A dönüştürücü ) denilir.
DAC Özellikleri Çözünürlük Tam Skala (Full Scala) Doğruluk Giriş-Çıkış İlişkisi
DAC Çeşitleri Ağırlık Dirençli (Paralel Girişli) D/A Dönüştürücü
DAC Çeşitleri R-2R Merdiven Tipi D/A Dönüştürücü
Potansiyometre Potansiyometre basitçe ele alınırsa, bir eksen üzerinde dönen ayarlı direnç olarak düşünülebilir. Potansiyometre, dışardan fiziksel müdehaleler ile değeri değiştirilebilen dirençlerdir. Potansiyometrelerin daha çok karbon veya karbon içerikli direnç elemanlarından yapılmaktadır. Potansiyometreler devrelerde akımı sınırlamak ya da gerilimi bölmek amacıyla kullanılırlar.
Potansiyometre Dış kısmındaki pinlerden birini Vcc’ye ve diğerini GND’a bağlanır. Ortadaki pin analog giriş pinidir. Buradan analog voltaj değişimi gözlemlenebilir.
AnalogRead(); Belirtilen analog pinden değeri okur. Arduino kartı 6 kanal (Mini ve Nano'da 8 kanal, Mega'da 16), 10 bit analogdan dijital çeviriciye sahiptir. Bu, 0 ile 5 volt arasındaki giriş voltajlarını 0 ile 1023 arasında tam sayı değerlerine haritalandırması anlamına gelir. Bu, 5 volt / 1024 ünite veya birim başına 0,0049 volt (4,9 mV) okumaları arasında çözünürlük sağlar. Giriş aralığı ve çözünürlük, analogReference() kullanılarak değiştirilebilir. Bir analog girişi okumak yaklaşık 100 mikrosaniye (0.0001 s) alır, bu nedenle maksimum okuma hızı saniyede yaklaşık 10.000 kez olur.
AnalogRead(); Bir pine bir analog değer (PWM dalgası) yazar. Bir LED'i farklı parlaklıklarda aydınlatmak veya çeşitli hızlarda bir motoru sürmek için kullanılabilir. AnalogWrite () çağrısından sonra pin, analogWrite () için sonraki çağrı (veya aynı pin üzerinde digitalRead () veya digitalWrite () çağrısı) oluncaya kadar belirtilen görev döngüsünün kararlı bir kare dalga oluşturacaktır. Çoğu pim üzerindeki PWM sinyalinin frekansı yaklaşık 490 Hz'dir. Uno ve benzeri kartlarda 5 ve 6 numaralı pinlerin frekansı yaklaşık 980 Hz'dir. Leonardo'da 3. ve 11. parmaklar da 980 Hz'de çalışıyor. Potansiyometre
Map(); map() Fonksiyonu: Bu fonksiyon bir oranlama fonksiyonudur. Belirli bir aralıktaki sayının, başka bir aralıkta hangi sayıya karşılık geldiğini hesaplar. map fonksiyonuna parametre olarak beş değer girilir. map(sayi, aralik_1_altdeger, aralik_1_ustdeger, aralik_2_altdeger, aralik_2_ustdeger); Yukarıdaki ifadede sayi, aralik_1_altdeger ile aralik_1_ustdeger arasında bir değerdir. map fonksiyonunun ürettiği yeni değer ise aralik_2_altdeger ile aralik_2_ustdeger arasında bir değerdir. Örneğin: map fonksiyoni ile analogRead’den aldığımız 0-1023 skalasındaki değeri 0-255 skalasında bir değere çevirebilir ve bu değeri çıkış olarak yazdırabiliriz.
AnalogWrite(); Çoğu Arduino kartında (ATmega168 veya ATmega328 olanlar) bu işlev 3, 5, 6, 9, 10 ve 11. pinlerde çalışır. Arduino Mega'da 2 - 13 ve 44 - 46'da çalışır. Eski Arduino ATmega8'e sahip boardlar yalnızca 9, 10 ve 11 numaralı pinlerde analogWrite () desteklemektedir. Arduino Due, 2'den 13'e kadar olan pinlerde analogWrite (), artı DAC0 ve DAC1 pinleri destekler. PWM pinlerinin aksine DAC0 ve DAC1, Dijital-Analog dönüştürücülerdir ve gerçek analog çıkışlar gibi davranırlar.
PWM PWM (Pulse Width Modulation/darbe-sinyal genişliği modulü) Mikrodenetleyiciler dış dünyayı genel yapısı itibari ile yaklaşık 0V ve 5V gibi ara seçeneği olmayan gerilim değerleriyle kontrol etmektedir. Bu durum arduino kullanıcısının ara değerlere ulaşamamasına sebep olur. PWM sayesinde istenen ara değerler elde edilebilir. Arduino Uno’da pwm 8 bit çözünürlüğe sahiptir, yani 0 ve 5V aralığındaki değerleri 256 parçaya bölebilirsiniz.
PWM Pwm’e 0 verdiğinizde 0V, 255 verdiğinizde 5V verecektir.Farklı pwm değerleri için çıktıları aşağıdaki şekilde görebilirsiniz.
Seri Analog Okuma Uygulaması Potansiyometre ile fiziksel dünyadan analog veriler okuyacağız. Gerekli Donanımlar • Arduino • 10 Kohm Potansiyometre
Seri Analog Okuma Uygulaması Şekildeki gibi bağlantıyı yaptıktan sonra yapmanız gereken Board'a kodu yüklemektir. Kodu File=>Examples=>Basics=>AnalogSerialRead yolunu izleyerek açabilirsiniz.
Seri Analog Okuma Uygulaması Kodu yükledikten sonra Seri Monitor'u açıp gerçekleşen olaylara bakabilirsiniz. Eğer potensiyometreyle oynarsanız değerlerin değiştiğini göreceksiniz. Arduino'da bulunan ADC (Analog to Digital Converter) sayesinde 0-1023 arasında sayılara dönüştüğünü görebilirsiniz.