Analog Dijital Çevirici(ADC) Nedir?Detaylı Anlatım Örnek Uygulama

Поділитися
Вставка
  • Опубліковано 12 вер 2024
  • Arkadaşlar oynatma listesine tıklayarak düzenli bir biçimde kategorize edilmiş 250'ye yakın eğitim videolarını seyredebilirsiniz.Aradığınız bir çok konu ve içeriklere oynatma listesinden rahatlıkla ulaşabilirsiniz. Herkese Merhaba
    Bu videoda ,ADC (Analog Digital Converter) Analog Dijital Çevirici hakında bilgi verip örnek bir uygulama yapacağım.Yazılım kısmını Code Composer Studio ile yaptım ve C dilini kullandım.Kullandığım mikrodenetleyici msp430g2553.Fakat bunun bir önemi yok.Başka bir mikrodenetleyici kullanıyor olsanız dahi ana fikir aynı olduğu için sizde burada yapılanları kendi mikrodenetleyicinize kolaylıkla uyarlayabilirsiniz.Arka planın nasıl çalıştığını anlamak yeterli.Örneğimizde analog devremizin girişinden bir sinyal alacağız eğer bu sinyalin gerilimi 1,8Volt'un altında ise LED yanmayacak fakat 1,8 in üstünde ise Ledimiz yanacak.Burada LED'in yanması temsilidir.Planladğımız devrenin çalışıp çalışmadığını kontrol etmek içindir.Asıl amaç LED'i aydınlatmak olsaydı direkt bacaklarına uygun değerli bir pil bağlar istediğimize ulaşırdık.Elinizde bir cihaz var ve bu cihaz belli bir gerlimin altında veya üstünde verimli çalışmıyor,doğru sonuşlar üretmiyor veya arızalabiliyor olabilir.Belirli bir gerilim aralığında çalışmasını istiyorsunuz.İşte böyle veya benzeri problemleri bu şekilde çözebiliririz.Daha önemlisi burada asıl amaç ADC'nin ne olduğunu ve çalışma mantığını anlamak.
    Analog Dijital Çevirici ses,ışık,nem,sıcaklık,basınç,gerilim,akım vb analog değerleri sayısal değere çevirerek bu bilgilerin başka ortamlara taşınmasını ,matematiksel olarak okunmasını ,tekrar analog sinyal haline dönüşmesini kısaca anlamlı bir şekilde tekrar dış dünyaya aktarılmasını sağlayan elekronik bir devredir.
    Analog olan sinyal adc ile sayısal sinyale dönüştürülür.Bunun için ADC referans alacağı bir gerilim kaynağı kullanır.Analog sinyalden sürekli örneklem alınarak ADC'nin referans gerilimi ile örneklem analog sinyalden alınan gerilimler özel bir devre sayesinde büyüklük küçüklük vb yöntemlerle karşılaştırılır.Karşılaştırma sonuşları 0,1 şeklinde dijital olarak kaydedilir.Kullanılacak ADC modlünün bit sayısı ne kadar fazla ise o kadar keskin sonuçlar alınır.Gelen sinyali temsil etme oranı artar.Bizim kullacağımız msp430g2553 adc modülü 10 bit'tir.Bit sayısı arttıkça temsil edilme doğruluğu artar.Dolayısıyla 10 bitlik bir veri (2^10 =1024) analog değeri 1024 parçaya bölerek çözünürlük artmış olur.ÇözünürlüK analog bir sinyalin kaç tane bit ile ifade edildiği anlamına gelir.

КОМЕНТАРІ • 15

  • @mertcannane8134
    @mertcannane8134 4 роки тому

    teşekkürler hocam msp430 ile daha çok eğitim video istiyoruz

  • @alikaragoz8295
    @alikaragoz8295 3 роки тому

    Çok teşekkür ederim.

  • @talha_sa
    @talha_sa 3 роки тому

    Hocam esp8266 ile ilgili de bir video çekebilir misiniz ?

  • @furkanbayramoglu
    @furkanbayramoglu Рік тому

    Hocam merhaba elimde MSP430G2231 var bunu LAUNCHPAD üzerinden programlayabilir miyiz?

  • @gokhank.3498
    @gokhank.3498 Рік тому

    hocam sanırım proteus'da çalışmıyor

  • @talha_sa
    @talha_sa 3 роки тому +1

    Allah aşkına gelin dersi siz anlatın.

  • @serdarsarca6433
    @serdarsarca6433 3 роки тому

    illa kod program yazmak zorunda mıyız
    devreyi kursak olmaz mı

  • @ibrahimkuru450
    @ibrahimkuru450 3 роки тому

    Hocam merhabalar. Bu dönüştürücünün model kodu nedir.
    Ben 900 derece direksiyon sistemi yapmak istiyorum. Yani bir noktadan sonda okumak değil de sürekli değer okumak ve okunan değerin dijital karşılığını sürekli pc üzerinden takip etmek istiyorum. Bunun için bildiğiniz yol gösterici bir döküman var mı.

    •  3 роки тому

      mikrodenetleyicilerin ADC'si ile bunu yapabilirsin.mikrodenetleyici öğrenmen gerecek.hazır kodlar bulup isteğine göre kodları düzenleyebilirsin.

  • @pagan556
    @pagan556 3 роки тому

    Hocam merhabalar. Dijital bir bilgi analog radyo arayüzünden nasıl gönderilir?

    •  3 роки тому +1

      AM modulasyon demodulasyon diye aratabilirsin.devre şemaları mevcut ,nette

  • @zehraates1842
    @zehraates1842 4 роки тому +2

    çok faydalı (hiçbişey anlamadim)

  • @talha_sa
    @talha_sa 2 роки тому

    Hocam aynı uygulamayı kendim yapmak istiyorum fakat çalışmıyor. ADC10MEM registerında değer gözükmüyor ve ADC10SC biti setlenmiyor. Kodda nerede hata olabilir sizce ?
    #include "io430.h"
    unsigned int ADC_Result ;
    unsigned int Temperature;
    int main( void )
    {
    // Stop watchdog timer to prevent time out reset
    WDTCTL = WDTPW + WDTHOLD;

    P1SEL = 0X00;
    P1OUT = 0X00;
    P1DIR |= BIT0;

    P1DIR &=~ BIT3;

    ADC10CTL0 &= ~ENC;
    ADC10CTL0 = ADC10SHT_3 + ADC10ON + ADC10IE ;
    ADC10CTL1 = INCH_3 + ADC10SSEL_3 + ADC10DIV_3;
    ADC10AE0 = BIT3;

    while(1){

    ADC10CTL0 |= ENC + ADC10SC;
    __bis_SR_register(CPUOFF + GIE);

    ADC_Result = ADC10MEM ;
    if(ADC_Result >250)
    P1OUT |= BIT0;
    else
    P1OUT &=~ BIT0;

    }

    }
    #pragma vector=ADC10_VECTOR
    __interrupt void ADC_ISR(void)
    {
    __bis_SR_register_on_exit(CPUOFF);

    }

    •  2 роки тому

      ctl0'da REFON referans on açık değil.ctl1 de nasıl bir çevirim gerçekleşecek belli değil.tek kanal tek çevirim mi yoksa tek kanal sürekli çevirim mi .bunlar eksi.ayrıca cpuyu uykuya almadan yaparsan nerde hata var daha kolay tespit edilir.

    •  2 роки тому

      #include
      /*
      * P1.4'deki (A4) giriste 1,8 volttan küçükbir değer varsa,
      * P1.2'daki (BIT2) LED'i söndür, aksi halde yansın.
      * */
      double ADC_degeri;
      double volt;
      int main(void)
      {
      WDTCTL = WDTPW + WDTHOLD; // Stop WDT
      /* Giriş-Çıkış Ayarları */
      P1DIR |=BIT2; //2.PIN BIT 2 Çıkış olarak ayarlandı.
      P1OUT &= ~BIT2; // Program başladığında LED sönük olsun.Çıkışına lojik sıfır veriyoruz.
      P1DIR &= ~BIT4; // BIT4 Çıkış olarak seçildi.
      P1OUT =0x00;
      /* ADC10 Ayarları */
      ADC10AE0 |= BIT4; //ADC10 Analog Enable Analog giriş açıldı BIT4 Analog giriş seçildi.
      ADC10CTL0 |= ADC10ON +REFON+REF2_5V+SREF_1 + ADC10SHT_3 + ADC10IE; // ADC Aktif, Referans Gerilim 2,5V, 0-2,5arası, Örneği tutma zamanı 64 x ADC10CLKs,Interrupt Aktif
      ADC10CTL1 |= INCH_4 + ADC10SSEL_0 + CONSEQ_0 + SHS_0; // Veriyi 4 kanaldan al BIT4-ADC'nin kendi osulatoru seçildi 5MHZ,Tek kanal Tek Çeviri, ADC tetikleme ADC10SC secildi.
      // PA.1 ADC option select
      //for (;;)
      while(1)
      {
      ADC10CTL0 |= ENC + ADC10SC; // Cevirme Aktif, ADC10SC Çeviriye Başlasın.ADC10SC ,1 olduktan sonra otomatik 0 olur.
      __bis_SR_register(CPUOFF + GIE); // Genel Kesmeler Aktif -CPU uykuda.
      ADC_degeri=ADC10MEM;
      volt=(ADC_degeri*2443)/1000000; // Adım Aralıgı=2,5V/1023=0,002443; 1,8V/0,02443=737
      if (ADC10MEM < 737)
      P1OUT &= ~BIT2; // BIT2 deki LED sönük
      else
      P1OUT |= BIT2; // BIT 2 deki LED yanar.
      //ADC10MEM=0;
      }
      }
      // ADC10 interrupt service routine
      #pragma vector=ADC10_VECTOR
      __interrupt void ADC10_ISR(void)
      {
      __bic_SR_register_on_exit(CPUOFF); // CPU'yu uykudan uyandır.Çünkü ölçme yaacak.
      }