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.
teşekkürler hocam msp430 ile daha çok eğitim video istiyoruz
Çok teşekkür ederim.
Hocam esp8266 ile ilgili de bir video çekebilir misiniz ?
Hocam merhaba elimde MSP430G2231 var bunu LAUNCHPAD üzerinden programlayabilir miyiz?
hocam sanırım proteus'da çalışmıyor
Allah aşkına gelin dersi siz anlatın.
illa kod program yazmak zorunda mıyız
devreyi kursak olmaz mı
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ı.
mikrodenetleyicilerin ADC'si ile bunu yapabilirsin.mikrodenetleyici öğrenmen gerecek.hazır kodlar bulup isteğine göre kodları düzenleyebilirsin.
Hocam merhabalar. Dijital bir bilgi analog radyo arayüzünden nasıl gönderilir?
AM modulasyon demodulasyon diye aratabilirsin.devre şemaları mevcut ,nette
çok faydalı (hiçbişey anlamadim)
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);
}
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.
#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.
}