Haberler

Analogdan Dijitale Dönüştürücü (ADC): Raspberry Pi Analog Okuma

Raspberry Pi, birçok harika projeyi gerçekleştirebilen küçük bir bilgisayardır, bu nedenle birçok meraklı ve teknoloji tutkununun favorisi olmaya devam etmektedir. Ancak, bu harika makine bile mükemmel değildir. Günümüzdeki diğer minicontroller veya MCU’ların aksine, Raspberry Pi’nin yerleşik bir Analogdan Dijitale Dönüştürücü (ADC) devresi yoktur.

Analog-to Digital Converter (ADC)_ Reading Raspberry Pi Analog

Bu nedenle, bu makalede Analogdan Dijitale Dönüştürücüler (ADC) hakkında konuşacağız ve umarım bu, projelerinizde size yardımcı olur!

Kapsanacak konular:

  • Raspberry Pi Analogdan Dijitale Dönüştürücüler (ADC) Genel Bakış
  • Raspberry Pi ADC için Öneriler
  • Raspberry Pi ADC Kurulumu
  • Raspberry ADC ile Projeler

Raspberry Pi Analogdan Dijitale Dönüştürücüler (ADC) Genel Bakış

ADC’ler nedir?

ADC’ler, analog (sürekli, sonsuz değişken) sinyalleri dijital (kesirli zaman, kesirli genlik) sinyallere dönüştürmek için çalışır.

ADC, Analogdan Dijitale Dönüştürücüler için bir kısaltmadır, temelde bir analog girişi dijital bir girişi dönüştürür.

Daha fazla bilgi edinmek isterseniz, Analog ve Dijital sinyaller hakkında buraya tıklayın!

ADC’ler nasıl çalışır?

ADC’lerin arkasındaki konsepti anlamak için, önce ADC’lerin analog sinyalleri dijitale dönüştürürken bir sıra izlediğini bilmek gerekir.

ADC’ler hakkında dikkat edilmesi gereken 2 özellik vardır:

Örnekleme Hızı (Frekans)

  • ADC’nin hızına bağlıdır.
  • Dönüştürücü türüne ve gereken hassasiyete bağlıdır.
  • Saniyedeki örnek sayısı ile ölçülür.
Ref: Arrow

Örnekleme hızı için denklem:

fs = 1/T

Burada,

fs = Örnekleme Hızı/Frekans

T = Örnekleme süresi veya bir sonraki örnekleme için geçen süre.

Çözünürlük

  • Bit uzunluğu ile belirlenir.
  • Çözünürlük, hem bit uzunluğuna hem de referans voltajına bağlıdır.
Ref: Arrow

Toplam çözünürlük için denklem:

Adım Boyutu = VRef/N

Burada,

Adım Boyutu = Voltaj cinsinden her seviyenin çözünürlüğü

VRef = Voltaj referansı (voltaj aralığı)

N = ADC’nin toplam seviye boyutu.

ADC’ler neden gereklidir?

Başlangıçta belirtildiği gibi, Raspberry Pi analog girişleri okuyamaz. Bu nedenle, ADC’ler analog girişleri çıkışlara dönüştürmek için kullanışlıdır, bu da Pi’nin analog dostu olmasına yardımcı olur.

Şimdi bir Raspberry Pi ADC almak ister misiniz? Seeed’in sunduğu bazı seçenekleri göstereceğiz!


Raspberry Pi ADC için Öneriler

ADC’nin bazı arka planını inceledikten sonra, şimdi Raspberry Pi ile uyumlu ADC’leri göstereceğiz! Bugün, 2 ürün önereceğiz. Umarım projenize uygun bir tane bulabilirsiniz!

Raspberry Pi için 8 Kanal 12 Bit ADC (STM32F030) ($9.90)

Bu ürün, STM32F030 tabanlı 8 kanallı bir ADC’dir, tüketici ürünleri ve sıcaklık ölçümü için mükemmeldir. Ayrıca maliyet etkin, düşük güç tüketen bir ARM Cortex M0 MCU’dur!

Özellikler:

  • Raspberry Pi 3B/3B+/4 desteği
  • CRC hesaplama birimi
  • 5 kanallı doğrudan bellek erişimi (DMA) denetleyici
  • Seri tel hata ayıklama (SWD)
  • Alarm ve duraklama/standby’den periyodik uyanma ile takvim RTC
  • Gerçek zamanlı saat (RTC)
  • Zamanlayıcılar:
    • Gelişmiş kontrol zamanlayıcısı
    • Genel amaçlı zamanlayıcılar & Temel zamanlayıcılar
    • Bağımsız ve sistem izleme zamanlayıcıları
    • SysTick zamanlayıcısı
Genel Bakış

Daha sonra bu ADC’yi Raspberry Pi ile nasıl kuracağımızı göstermek için kullanacağız!

Raspberry Pi için 4 Kanal 16 Bit ADC (ADS1115) ($10.95)

Bu ürün, Texas Instruments’ın ADS1115 tabanlı 4 kanallı bir ADC’dir, taşınabilir ölçüm aletleri ve pil izleme vb. için mükemmeldir. Ayrıca entegre analog Grove konektörleri ile kompakt bir Raspberry Pi Zero form faktörüne sahiptir!

Özellikler:

  • Raspberry Pi 3B/3B+/4 desteği
  • Geniş besleme voltajı aralığı
  • I2C uyumlu seri arayüz
  • İki diferansiyel veya dört tek uçlu girişi sağlayan giriş çoklayıcı (MUX).
  • Programlanabilir veri hızı: 8SPS’den 860SPS’ye
  • Programlanabilir karşılaştırıcı
  • İçsel PGA
  • İçsel düşük kaymalı voltaj referansı
  • İçsel osilatör
  • Düşük akım tüketimi:
    • Sürekli Mod: Sadece 150μA
    • Tek Atım Modu: Otomatik Kapatma
Genel Bakış

Raspberry Pi ADC Kurulumu

Bir Raspberry Pi ADC satın aldınız ama nasıl kullanacağınızı bilmiyor musunuz? Endişelenmeyin! Raspberry Pi ADC’nizi nasıl kuracağınızı göstereceğiz!

İhtiyacınız olanlar:

Gerekli her şeyi topladıktan sonra, aşağıdaki adımları takip edebilirsiniz:

Donanım

Adım 1: Raspberry Pi için 8 Kanal 12 Bit ADC’yi Raspberry Pi’ye takın.

Adım 2: Raspberry Pi’yi USB kablosu ile PC’ye bağlayın.

Yazılım

Adım 1: grove.py kütüphanesini klonlayarak kaynak dosyayı indirin.

cd ~
git clone https://github.com/Seeed-Studio/grove.py

Adım 2: grove.py kütüphanesini kurun.

cd grove.py
# Python2
sudo pip install .
# Python3
sudo pip3 install .

Adım 3: Aşağıdaki komutları çalıştırarak kodu çalıştırın.

cd grove.py/grove
python adc_8chan_12bit.py 

Aşağıdaki kod, adc_8chan_12bit.py kodudur.

import time
from grove.i2c import Bus
 
ADC_DEFAULT_IIC_ADDR = 0X04
 
ADC_CHAN_NUM = 8
 
REG_RAW_DATA_START = 0X10
REG_VOL_START = 0X20
REG_RTO_START = 0X30
 
REG_SET_ADDR = 0XC0
 
 
class Pi_hat_adc():
    def __init__(self,bus_num=1,addr=ADC_DEFAULT_IIC_ADDR):
        self.bus=Bus(bus_num)
        self.addr=addr
 
 
    #tüm ham adc verilerini al, maksimum değer 4095'tir, çünkü bu 12 Bit ADC'dir
    def get_all_adc_raw_data(self):
        array = []
        for i in range(ADC_CHAN_NUM):  
            data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+i,2)
            val=data[1]<<8|data[0]
            array.append(val)
        return array
 
    def get_nchan_adc_raw_data(self,n):
        data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+n,2)
        val =data[1]<<8|data[0]
        return val
    #tüm verileri mv birimiyle al.
    def get_all_vol_milli_data(self):
        array = []
        for i in range(ADC_CHAN_NUM):  
            data=self.bus.read_i2c_block_data(self.addr,REG_VOL_START+i,2)
            val=data[1]<<8|data[0]
            array.append(val)
        return array
 
    def get_nchan_vol_milli_data(self,n):
        data=self.bus.read_i2c_block_data(self.addr,REG_VOL_START+n,2)
        val =data[1]<<8|data[0]
        return val
 
    #tüm veri oranlarını al, birim 0.1%'dir
    def get_all_ratio_0_1_data(self):
        array = []
        for i in range(ADC_CHAN_NUM):  
            data=self.bus.read_i2c_block_data(self.addr,REG_RTO_START+i,2)
            val=data[1]<<8|data[0]
            array.append(val)
        return array
 
    def get_nchan_ratio_0_1_data(self,n):
        data=self.bus.read_i2c_block_data(self.addr,REG_RTO_START+n,2)
        val =data[1]<<8|data[0]
        return val
 
 
 
ADC = Pi_hat_adc()
def main():
    raw_data=ADC.get_all_adc_raw_data()
    vol_data=ADC.get_all_vol_milli_data()
    ratio_data=ADC.get_all_ratio_0_1_data()
    print("her kanal için ham veri:(1-8kanal)(12 bit-maks=4096):")
    print(raw_data)
    print("her kanal için voltaj:(birim:mv,maks=3300mv):")
    print(vol_data)
    print ("her kanal için oran(birim 0.1%,maks=100.0%):")
    print(ratio_data)
 
    print(" ")
    print("DUYURU!!!:")
    print("ADC PIN'in varsayılan ayarı floating_input'tır.")
    print(" ")
 
if __name__ == '__main__':
    main()

Artık hata yoksa, böyle görünmelidir!

pi@raspberrypi:~/grove.py/grove $ python adc_8chan_12bit.py 
her kanal için ham veri:(1-8kanal)(12 bit-maks=4096):
[2177, 2098, 2064, 2038, 2127, 2066, 2172, 2145]
her kanal için voltaj:(birim:mv,maks=3300mv):
[1599, 1741, 1668, 1658, 1644, 1787, 1694, 1677]
her kanal için oran(birim 0.1%,maks=100.0%):
[521, 544, 514, 504, 500, 559, 524, 505]
 
DUYURU!!!:
ADC PIN'in varsayılan ayarı floating_input'tır.

Raspberry Pi ADC kullanma konusunda hala belirsizlik mi var? İşte size yardımcı olacak bir örnek:

İhtiyacınız olanlar (şu anda belirtilen öğeler dahil):

Donanımınızı nasıl bağlayacaksınız:

Adım 1: Raspberry Pi için 8 Kanal 12 Bit ADC’yi Raspberry Pi’ye takın.

Adım 2: Grove – Ses Sensörünü ADC modülünün A0 portuna bağlayın.

Adım 3: Raspberry Pi’yi USB kablosu ile PC’ye bağlayın.

Şu şekilde görünmelidir:

Yazılım

Aşağıdaki komutu ++python grove_sound_sensor.py 0++ komut satırı arayüzünde yazın.

pi@raspberrypi:~/grove.py/grove $ python grove_sound_sensor.py 0
Ses algılanıyor...
Ses değeri: 433
Ses değeri: 342
Ses değeri: 443
Ses değeri: 300
Ses değeri: 632
Ses değeri: 258
Ses değeri: 591
Ses değeri: 267
Ses değeri: 871
^CTraceback (most recent call last):
  File "grove_sound_sensor.py", line 67, in <module>
    main()
  File "grove_sound_sensor.py", line 64, in main
    time.sleep(.3)
KeyboardInterrupt

Bu programdan çıkmak istediğinizde Ctrl + C tuşlarına basabilirsiniz. Ve işte Raspberry Pi ADC’nizi nasıl kuracağınız!

İşte daha fazla ayrıntı sağlayacak bazı yararlı bağlantılar:


Raspberry Pi ADC ile Projeler

Raspberry Pi ADC’nizi nasıl kuracağınızı öğrendikten sonra, şimdi dışarıdaki proje denizini keşfetmeye hazırsınız!

Raspberry Pi ADC Eğitimi

Ref: Circuit Digest

Bu eğitim, Raspberry Pi’de hala yeniyseniz faydalı olacaktır, size Raspberry Pi ve devrelerin temellerini öğretir!

İhtiyacınız olanlar:

Bu proje hakkında daha fazla bilgi edinmek ister misiniz? Tıklayın burada!

Raspberry Pi ADC ile Flex Sensör Arayüzü

Ref: Circuit Digest

Raspberry Pi ADC’nize bir analog sensör bağlamak ister misiniz? Bu proje size nasıl yapılacağını gösterir!

İhtiyacınız olanlar:

İlginç geliyor mu? Daha fazla bilgi edinmek için buraya tıklayın!

Raspberry Pi Basınç Pedini (FSR) Nasıl Kurulur

Ref: PiMyLifeUp

Kendi basınç ped sensörünüzü yapmak ister misiniz? Daha fazla aramayın! Bu proje, basıncı nasıl algılayacağınızı gösterir!

İhtiyacınız olanlar:

Tam size göre mi? Daha fazla bilgi edinmek için buraya tıklayın!


Özet

Ve Raspberry Pi ADC ile ilgili her şey bu kadar! Yeni bir şey öğrendiniz mi? ADC’nin temellerini, Raspberry ADC’nizi nasıl kuracağınızı ve denemeniz için bazı eğlenceli projeleri kapsadık! Umarım projeniz için uygun bir ADC bulmanıza yardımcı olabiliriz!

Önerilen Okumalar

Daha temel bilgiler için aşağıdaki ilgili okumaları kontrol edin!

Leave a Reply

Your email address will not be published. Required fields are marked *