Raspberry Pi, elektronik mühendisleri ve hobiler için tasarlanmış ARM mimarisi işlemci tabanlı bir karttır. PI, şu anda piyasadaki en güvenilir proje geliştirme platformlarından biridir. Daha yüksek işlemci hızı ve 1 GB RAM ile PI, Görüntü işleme ve Nesnelerin İnterneti gibi birçok yüksek profilli proje için kullanılabilir.
Yüksek profilli projelerden herhangi birini yapmak için, PI'nin temel işlevlerini anlamak gerekir. Bu eğitimlerde Raspberry Pi'nin tüm temel işlevlerini ele alacağız. Her öğreticide PI işlevlerinden birini tartışacağız. Bu Raspberry Pi Eğitim Serisinin sonunda, yüksek profilli projeleri kendi başınıza yapabileceksiniz. Aşağıdaki eğiticilere göz atın:
- Raspberry Pi'ye Başlarken
- Raspberry Pi Yapılandırması
- LED Yanıp Sönen
- Raspberry Pi Düğme Arayüzü
- Raspberry Pi PWM üretimi
- Raspberry Pi kullanarak DC Motorun Kontrol Edilmesi
- Raspberry Pi ile Step Motor Kontrolü
- Raspberry Pi ile Vardiya Kaydını Arabirim
Bu eğitimde, Raspberry Pi'ye bir ADC (Analogdan Dijitale Dönüştürme) yongasını Arayüz. Analogun tüm parametrelerini biliyoruz, yani zamanla sürekli değişiyor. Diyelim ki odanın bir örnek sıcaklığı, oda sıcaklığı zamanla sürekli değişiyor. Bu sıcaklık, ondalık sayılarla sağlanır. Ancak dijital dünyada ondalık sayı yoktur, bu nedenle Analog değeri Dijital değere dönüştürmemiz gerekir. Bu dönüştürme işlemi ADC tekniği ile yapılır. ADC hakkında daha fazla bilgiyi burada bulabilirsiniz: ADC0804'e Giriş
ADC0804 ve Raspberry Pi:
Normal denetleyicilerin ADC kanalları vardır, ancak PI için dahili olarak sağlanan ADC kanalları yoktur. Dolayısıyla, herhangi bir analog sensörle arayüz oluşturmak istiyorsak, bir ADC dönüştürme ünitesine ihtiyacımız var. Bu amaçla , Raspberry Pi ile ADC0804 Arayüzüne gidiyoruz.
ADC0804, analog sinyali 8 bitlik dijital verilere dönüştürmek için tasarlanmış bir çiptir. Bu çip, popüler ADC serilerinden biridir. Bu 8 bitlik bir dönüştürme birimi, yani değerlerimiz veya 0 ila 255 değerimiz var. Maksimum 5V'luk bir ölçüm voltajı ile her 19.5mV için bir değişimimiz olacaktır. Aşağıda ise ADC0804 arasında Pin:
Şimdi burada bir diğer önemli şey, ADC0804'ün 5V'de çalışması ve bu nedenle 5V lojik sinyalde çıkış sağlamasıdır. 8 pin çıkışında (8 biti temsil eder), her pin lojik'1'i temsil etmek için + 5V çıkış sağlar. Yani sorun şu ki PI mantığı + 3.3v'dir, bu nedenle PI'nin + 3.3V GPIO pinine + 5V mantığı veremezsiniz. Herhangi bir PI GPIO pinine + 5V verirseniz kart zarar görür.
Dolayısıyla, + 5V'den mantık seviyesini düşürmek için voltaj bölücü devresi kullanacağız. Gerilim Bölücü Devresini daha önce tartıştık, daha fazla açıklama için ona baktık. Yapacağımız şey, + 5V mantığını 2 * 2.5V mantığına bölmek için iki direnç kullanacağız. Böylelikle bölünmeden sonra PI'ye + 2.5v mantığı vereceğiz. Dolayısıyla, ADC0804 tarafından '1' mantığı sunulduğunda, PI GPIO Pininde + 5V yerine + 2.5V göreceğiz.
Raspberry Pi'nin GPIO Pinleri hakkında buradan daha fazla bilgi edinin ve önceki eğitimlerimizi inceleyin.
Gerekli Bileşenler:
Burada Raspbian Jessie OS ile Raspberry Pi 2 Model B kullanıyoruz. Tüm temel Donanım ve Yazılım gereksinimleri daha önce tartışılmıştır, ihtiyaç duyduğumuz dışında bunları Raspberry Pi Giriş bölümünde bulabilirsiniz:
- Bağlantı pimleri
- 220Ω veya 1KΩ direnç (17 adet)
- 10.000 saksı
- 0.1µF kapasitör (2 adet)
- ADC0804 IC
- Ekmek Tahtası
Devre Açıklaması:
+ 5V besleme geriliminde çalışır ve 0-5V aralığında değişken bir gerilim aralığını ölçebilir.
Ahududu PI ADC0804 elektrik olarak karşılıklı bağlantıları, yukarıdaki devre şemasında gösterilmiştir.
ADC'de her zaman çok fazla gürültü vardır, bu gürültü performansı büyük ölçüde etkileyebilir, bu nedenle Gürültü Filtrasyonu için 0.1 uF kapasitör kullanıyoruz . Bu olmadan, çıktıda çok fazla dalgalanma olacaktır.
Çip, RC (Direnç-Kapasitör) osilatör saatinde çalışır. Devre şemasında gösterildiği gibi, C2 ve R20 bir Saat oluşturur. Burada hatırlanması gereken önemli şey, C2 kapasitörünün daha yüksek ADC dönüşümü oranı için daha düşük bir değere değiştirilebilmesidir. Ancak daha yüksek hızda doğrulukta azalma olacaktır. Bu nedenle, uygulama daha yüksek doğruluk gerektiriyorsa, daha yüksek değerli kondansatörü seçin ve daha yüksek hız için daha düşük değerli kondansatörü seçin.
Programlama Açıklaması:
Her şey devre şemasına göre bağlandıktan sonra, programı PYHTON'da yazmak için PI'yi AÇIK hale getirebiliriz.
PYHTON programında kullanacağımız birkaç komuttan bahsedeceğiz, Kütüphaneden GPIO dosyasını içe aktaracağız, aşağıdaki fonksiyon PI'nın GPIO pinlerini programlamamızı sağlar. Ayrıca "GPIO" yu "IO" olarak yeniden adlandırıyoruz, bu nedenle programda GPIO pinlerine başvurmak istediğimizde "IO" kelimesini kullanacağız.
RPi.GPIO'yu IO olarak içe aktar
Bazen kullanmaya çalıştığımız GPIO pinleri başka işlevler yapıyor olabilir. Bu durumda programı çalıştırırken uyarılar alacağız. Aşağıdaki komut PI'ya uyarıları dikkate almamasını ve programa devam etmesini söyler.
IO.setwarnings (False)
PI'nın GPIO pinlerini, kart üzerindeki pin numarasına veya fonksiyon numaralarına göre yönlendirebiliriz. Tahtadaki 'PIN 29' gibi 'GPIO5'. Yani burada ya buradaki pimi '29' veya '5' ile temsil edeceğimizi söylüyoruz.
IO.setmode (IO.BCM)
Giriş pinleri olarak 8 pin ayarlıyoruz. Bu pinlerle 8 bitlik ADC verisi tespit edeceğiz.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Küme parantezlerindeki koşul doğru ise, döngü içindeki ifadeler bir kez çalıştırılacaktır. Dolayısıyla, GPIO pini 19 yükselirse, IF döngüsünün içindeki ifadeler bir kez çalıştırılacaktır. GPIO pini 19 yükselmezse, IF döngüsünün içindeki ifadeler yürütülmeyecektir.
(IO.input (19) == Doğru) ise:
Aşağıdaki komut sonsuz döngü olarak kullanılır, bu komutla bu döngü içindeki ifadeler sürekli olarak çalıştırılır.
1 iken:
Programla ilgili ayrıntılı açıklama aşağıdaki Kod Bölümünde verilmiştir.
Çalışma:
Programı yazıp çalıştırdıktan sonra ekranda '0' göreceksiniz. '0', girişte 0 volt anlamına gelir.
Çipe bağlı 10K potu ayarlarsak, ekranda değerlerin değişimini göreceğiz. Ekrandaki değerler sürekli kaymaya devam eder, bunlar PI tarafından okunan dijital değerlerdir.
Diyelim ki potu orta noktaya getirirsek, ADC0804 girişinde + 2.5V'ye sahibiz. Yani aşağıda gösterildiği gibi ekranda 128 görüyoruz.
+ 5V analog değer için 255'e sahip olacağız.
Dolayısıyla, potu değiştirerek ADC0804 girişindeki voltajı 0 ile + 5V arasında değiştiriyoruz. Bu PI ile 0-255 arasındaki değerleri okur. Değerler ekrana yazdırılır.
Bu yüzden ADC0804'ü Raspberry Pi'ye Arabirimlendirdik.