avatar_Hattuşa

harici ADC entegresi nasıl araştırırım?

Başlatan Hattuşa, 21 Aralık 2014, 23:38:35

Hattuşa

slm arkadaşlar;
bir sinyalden adc okutulması yapabilmek için min. 5v seviyesinde min. 12 bit adc okuyabilen, max.1uS sürede çevrimi tamamlayabilen ve peşpeşe 30-40 ölçüm alıp, bu ölçümü okuma işlemi bittikten sonra işlemciden alabileceğimiz harici bir ADC entegresini nasıl bulabiliriz. sorunum yabancı dilimin olmayışı ve aradığım kriterleri googleden aratmayı beceremediğim için ve baktığım entegrelerin datasheetini anlayamadığım için tıkandım. konu hakkında bilgisi olan veya önerisi olan arkadaşlardan yardım bekliyorum.

Mucit23

MCP3204-3208 Piyasada bol bulunan bir adc.  Yalnız hız konusuna dikkat etmedim. Bi araştırmanı tavsiye ederim.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Hattuşa

#2
mucit ustam;
elimde MCP3201 ve MCP3202 var yani tekli ve çiftli 6.5uS ta çevrimi tamamlıyor, adc ler hakkında çok fazla bilgi sahibi değilim açıkcası, 1-2 tane PDF indirip inceledim az-çok fikir sahibi oluyor insan ama benim öğrenemediğim acaba peşpeşe 20-25 tane adc okuması yapıp , okuma işlemi bittikten sonra veya işlemci istediği zaman değerleri toptan veren bir adc varmıdır?

yoksa çok şey isteyip kış kış bir yerlerimizi açıkta bırakıp hayal görmeye mi başladım  ;D

Hattuşa

slm arkadaşlar;
kullandığımız işlemcilerde ki ADC kesmesi nedir? ne tip bir uygulamalarda kullanılır. @ete hocam datasheette var dersiniz ama malum yabancı dil özürlüyüm. belki forumda bu tip bir uygulamayı yapan arkadaşımız varsa tecrübelerini öğrenmek isterim.

Mucit23

Normalde ADC çevrim işlemi. Belirli bir süre içerisinde gerçekleşir. Kısaca yazmam gerekirse eğer normalde kesme kullanmadan ADC çevrim işlemine start veririz. Bundan sonra ADC modülünün çevrim işlemini tamamlamasını bekleriz. Bu bekleme süresine çevrim süresi denir. Bu işlem sonucunda Dijital değeri alıp geri geliriz.

Kesme kullandığımızda ise beklemeye gerek kalmaz. Çevrim işlemi tamamlanınca kesme oluşur. Bizde gidip dijital değeri okuruz.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Hattuşa

Alıntı yapılan: Mucit23 - 25 Aralık 2014, 21:14:00
Normalde ADC çevrim işlemi. Belirli bir süre içerisinde gerçekleşir. Kısaca yazmam gerekirse eğer normalde kesme kullanmadan ADC çevrim işlemine start veririz. Bundan sonra ADC modülünün çevrim işlemini tamamlamasını bekleriz. Bu bekleme süresine çevrim süresi denir. Bu işlem sonucunda Dijital değeri alıp geri geliriz.

Kesme kullandığımızda ise beklemeye gerek kalmaz. Çevrim işlemi tamamlanınca kesme oluşur. Bizde gidip dijital değeri okuruz.

Hmm ya mucid ustam,
yani timer kesmesi gibi bişeymi? yani vakti gelince ana programda kod işlerken timer süresi gelince kesmeye girdiği gibi (bu arada hocam 2 sene önce bu konu ile alakalı basit bir örnek kod yazacaktınız unutmadım. ;D)
bununla ilgili basit bir örnek olsa anlamak daha kolay olacak aslında...

ete

Analog değerlerin digital değerlere çevrilmesi işlemi işlemci içinde bulunan bir kondansatörün şarj edilip deşarj süresinin ölçülmesi ile yapılmaktadır. Dolayısıyla şarj ve deşarj işlemi zaman alan bir işlem olup işlemciye göre farklılık arzeder.
Genelde bir ADC işlemine önce kanal seçilerek başlanır. Ardından start verilerek kondansatörün şarj edilmesi ve ardından da deşarj edilmesi beklenir. Bu bekleme işlemi bir kaç şekilde aşılabiliyor.
Birinci metod;
ADCON0 registerinin 2 nolu biti olan GO/DONE biti 1 ise işlem hala devam ediyor demektir.  Bu bit'in sıfır olmasını bekleyerek bekleme süresi aşılmış olur.
Hemen belirteyim Basic bu işlemi otomatik yapmaktadır aslında GO/DONE bitini takip etmeye gerek yoktur aslında.

İkinci metod ise kesme kullanmaktır. Bunun için Önce Global Kesmeler Aktif edilir. (INTCON.7=1)
Sonra Peripheral Kesmeler aktif edilir. (INTCON.6=1)
Sonra PIE1 registeri 6 nolu biti (A/D Kesme aktivasyon biti) set edilir. (PIE1.6=1)
Sonra her ihtimale karşı kesme bayrağı sıfırlanır. (PIR1.6=0)
ADC çevirim işlemini başlatmak için GO/DONE biti set edilir. ADCON0.2=1
Bu aşamadan sonra A/D kesme sinin oluşması beklenir.  Kesme oluştuğu zaman program otomatik kesme etiketine gidecektir.
Burada HAM.Byte0=ADRESL ve Ham.Byte1=ADRESH şeklinde ADC değeri okunup HAM isimli 16 bitlik registere aktarılır.
Kesme bayrağı sıfırlanarak kesme alt programından çıkılır.

Görüleceği üzere kesme kullandığınız zaman ADCIN komutunu kullanmamak gerekiyor.
Bu nedenle komutun otomatik yaptığı ;
- ADC işlemi için Ref voltajı seçimini, (ADCON1 registerineden ama bazı işlemcilerde farklı register kullanılabilir)
- ADC okuma kanal seçimini, (ADCON1 registerinden ama bazı işlemcilerde ANSEL registeri bu işi yapmaktadır)
- ADC işlemi için OSC (CLK Seçimi) , (ADCON1 registeri)
- ADC modülün aktive edilmesi (ADCON0,0 biti)
işlemlerininde yapılması gerekir.


Umarım yardımcı olmuştur.

Ete


Bir ADC işlemini başlattıktan sonra kes

Hattuşa

@ete hocam biz basicciler için bu adc kesmesi çok kullanışlı değil sanırım, yani gerek duyulmamış, yukarıda yazılanlardan anladığım "bir adc okundu ise ardından işlemciye ve osc ye bağlı olarak belirli miktarda gecikme koy ve fazla detaya girme" olarak anladım. ;D
zira bu konu ile ilgili olarak hiç kimse bir uygulamasında ADC kesmesi kullanmamış...

ete

Normal şartlarda bu gerekmez. Bu nedenle ben dahil kimse kullanmamış olsa gerek.
ADCIN komutu bu işi gerektiği gibi yapmaktadır zaten.
Ete

Powered by EzPortal