OPAMPLI DEVREMDE SORUNUM VAR.

Başlatan picmanya, 23 Şubat 2011, 19:03:06

picmanya

[IMG]http://img34.imageshack.us/img34/893/adszrv.png[/img]
Uploaded with ImageShack.us

devre şöyle çalışmalı;
IC1B opampına gelen 3...3,5 volt arasında sürekli değişken olan gerilim.
IC1A opampındaki potdan gelen 3 volt gerilimden çıkarılmalı.
ve aradaki 0...0,5 volt arasında değişken olan yarım voltluk fark gerilimi
işlemcimin adc pin girişine 0....5 volt aralığında uygulanmalı.

sorularım;
1-) üstdeki devre bu türden bir işi yapması için iyi bir devremi?
2-) üstdeki devrede A noktasından sonra IC1D opampına girmeden hemen önce,
altdaki resimdede gösterdiğim gibi araya seri direnç ve gnd ye paralel kondansatör koymanın bir faydası olurmu?
böyle bir kullanım hatalı olurmu?
3-) çıkarma yapan IC1C opampı için kullandığım 4 Adet 100k %1 dirençler her ne kadar metal film cerment tipi hassas değerli olsalarda değerleri illaki azda olsa birbirinden farklılar.Bu benim için ne derece sorun oluşturur.Büyük sorunmudur?
4-)devredeki IC1A ve IC1B voltaj takipçi opampların + girişlerine seri bir dirençle giriş yapmanın bir zararı yada faydası olurmu?
direnç eklense bu opampların çıkışı ne şekilde değişir.

IC1B opampı girişindeki sensör yazan yere 3...3,5 volt arası ayarlı sürekli elle değiştirdiğim gerilim verdiğimde devre çalışıyor.ama bu girişi sensör çıkışına bağladığımda birde dc fırçalı motor çalışıyorsa işlemcim hatalı sonuç üretiyor.
buda zannediyorum sensör çıkışının çok değişmesinden kaynaklanıyor.işlemci programında adc yi her çevrimde 16-32 kez okuyup ortaamasını alıp öyle iş yaptırıyorum örnekleme sayısını azalttığımda hatamda artıyor ama sayıyı 32 ve üzerine çıkardığımda ise toplam adc örnekleme zaman gecikmesinden dolayı işlemcime geç iş yaptırmış oluyorum dolayısıyla hatam yine artıyor.işlemcimin adc modül beslemesini digital beslemesinde kullandığım LM2575-5 den ayrı bir LM7805 ile sağladığımda sorun biraz daha azalıyor ekstradan birde adc modül beslemesinin AVSS si ile normal gnd arasına seri bobin koyduğumda  çalışmada az daha düzelme oluyor.ama ne yaptıysam istediğim hassasiyetde çalışmayı sağlayamadım.

bu tür bir çalışma için resimdeki devreye özelliklede sensör girişine donanımsal filtre tarzı birşeyler daha eklemem gerekirmi?
ne ekleyebilirim.

ADC için SAMC : Auto-Sample Time bits TAD ayarını anlayabiliyorum benim bunu 12TAD yapmam gerekiyormuş yaptımda daha fazlasında sorun yok ama azında sorun olabiliyor.

yalnız ADCS A/D Conversion Clock Select bits TCY ayarını tam anlayamadım ne değer versem bir şey değişmiyor bunun ne olması gerkiyor bu değer ne işe yarıyorki?ben faydası yada zararını kavrayamadım.

iyildirim

#1
Alıntı yapılan: picmanya - 23 Şubat 2011, 19:03:06
yalnız ADCS A/D Conversion Clock Select bits TCY ayarını tam anlayamadım ne değer versem bir şey değişmiyor bunun ne olması gerkiyor bu değer ne işe yarıyorki?ben faydası yada zararını kavrayamadım.

Datasheet'de 10 bit ADC için min TAD 76ns, 12 bit için min TAD 117.6ns olarak veriliyor.  Bunların biraz daha üzerinde değerler olması daha iyi.

ADCS ile kullanılan kristal frekansına göre TAD yi ayarlıyoruz.
Eğer 40MIPS kullanılıyorsa,  12 bit için de 150ns TAD peryodu dersek, 150/25  = 6 -->  ADCS = 5 gibi bir değer çıkıyor. TAD nin daha büyük olması daha iyi, Ancak gördüğüm kadarı ile çok büyük değerlerinde pek bir farkı yok... 
Sample süresini biraz daha büyük tutmak daha iyi olabilir.

Gerçi sinyale göre değişir ama çok kısa sample süreleri ile çok sayıda örnekle ortalama almaktansa uzun sample süresi ile daha az örnekle ortalama almak daha iyidir diye düşünüyorum.


ADC'ye sinyali girmeden önce kullanılan dirençler içinde;
70183a da sayfa 49.. da "the maximum recommended source impedance, RS, is 200Ω" denmekte.



picmanya

#2
işlemcim DSPIC30F4012 - 30 MIPS
ADC çözünürlüğü 10 Bit.
70046E.pdf  dosyasında sayfa:449 da bir tablo verilmiş örnekleme kapasitesi ve TAD zamanları ADC bağlantıları gösterilmiş.
birde dipnotu yeni farkettim. bazı değerler için Vref+ ve Vref- pinlerine illa ki besleme vermek gerekiyormuş.
Ben AVDD ve AVSS pinlerinden adc modülü besliyorum bu şekilde ayarladım ama 1000kpbs ile ölçüm yaptığımı düşünüyordum. bu tabloyu tam anlayamadım.

benim programda ve işlemcide şunlardan emin olduktan sonra devreye geri dönmem gerekiyor galiba.
* ADC pin girişindeki RS direncini ben 470R kullanıyorum dosyadada en az 500R kullan denmiş.burda 470R de yüksek mi?
* TAD ve TCY değerlerimi en az ne yapmalıyım?
* benim bu işim için örnekleme kapasitesi önemlimi?

bu sayfadaki tablo üzerinden gidilirse değerlerim ne olmalı?

iyildirim

33 serisi kullandığını düşünmüştüm.

Tablodan anladığım 500ksps üzerinde sağlıklı ADC işlemi için referans olarak AVDD, AVSS değil VRef+ ve Vref- pinlerinin kullanılması gerektiği. Pin bağlantıları için önerilen şema sayfa 450de  verilmiş. 1 Msps çalışmak için iki adet S/H devresi kullanılması gerekiyor. Bir S/H kanalı convert edilirken, diğer kanalda sample edilmeye devam ediliyor. Konvert işlemi sırasında diğer kanalın sample işlemi yapılarak 1Msps'ye ulaşılıyor.  Yani iki adet S/H kanalı kullanmadı isen bu şekilde değişiklik yapılmalı. Öte yandan 750kpsp yeterli dersen tek kanal S/H da iş görüyor.

Anlamadığım tek kanal S/H kullanılırken 2TAD sample süresi yeterli iken çift kanal S/H kullanıldığında 12TAD sample süresi gerekmesi. Niye böyledir, hangisini tercih etmeli bende bilmiyorum. Datasheet'de bir yerlere sıkışmıştır, aramak gerekir. Sanırım gereklilikten daha çok, min 12 TAD derken zaten o sırada diğer S/H kanalı konvert edildiği ve süresi bu kadar olduğundan daha az bir süre sample süresi tanımlamak anlamsız olduğu için olabilir.

70046 'ya göre;
470R direnç uygun gibi. 1Msps için max 500R kullanılması öneriliyor. Sanki biraz daha düşük olsa daha iyi olur.
Sayfa 449daki tabloda çeşitli konvert hızlarına  göre TAD değerleri verilmiş. Burada min TAD değeri 83.33ns.

TCY clock period'umuz. Bu da kullandığımız hıza, kristale bağlı.  30MIPS kullanılıyorsa TCY 33ns olacak. 1Msps ADC için min TAD 83ns den , sayfa 413'e göre ADCS de 4 seçilmeli. 
Öte yandan TAD nin uzun seçilmesi,  daha az örnek ile ortalama almayı sağlayacaksa yada daha doğru sonuçlar üretecek ise tercih edilebilir.

picmanya

#4
kafam iyice karıştı, bu güne kadar hep karambole ezberden ADC yi kullanmışım,ezbere hazır kod üzerinden gitmişim.

70046E.pdf dosyanın 449.sayfasındaki tablonun 4. satırındaki 500 kpbs modeli benim için en uygun devre modeli oluyor değilmi?
Ben VREF+ ve VREF- pinlerini ADC için kullanmayı asla düşünmüyorum. bu pinleri normal port ve dış kesme işleri için kullanıyorum.
Bu pinlerin ADC port ile alakaları olmasın istiyorum.
Beslemem de 4,5-5,5 arası sabit tam 5 volt.

Bu 4. satırda sağdaki gibi ADC beslemesini AVDD ve AVSS pinlerinden yapıyorum.ADCON2 registerindende ADC port voltaj referans beslemesini AVDD ve AVSS pinlerinden yaptığımıda belirtiyorum.ANx girişindende ölçüm yapacağım 0...5 volt arası ayarlı analog girişimi yapıyorum ve 0...5 volt arası değerleri 10 bit olan 1024 ayrı değere ayırdığımı düşünüyorum.5 mili volt civarı bir hassasiyet elde etmiş oluyorum.

Buraya kadar hatam yoksa;
öncelikle şu kısmı anlamakla yola devam etmem gerekiyor
Sağdaki devre şeklinde SH + girişi yani ANx benim ADC ölçümünü yaptığım asıl girişim oluyor değilmi?
Peki burdaki SH - girişi ne oluyor? Bunu anlayamadım bu giriş ANx or VREF- ye bağlı olması gerekiyor gibi.
ben bunu kendim bizzat yapmıyorumki.
Bu şekilde 4 giriş var AVDD, AVSS ve SH+ ya bağlı ANx girişi bu üçünü anladım.
Ama SH- bağlı girişi anlamadım.Bu işlemci içerisindenmi oluyor yoksa bunundamı dışarıdan yapılması gerekiyor.

burayı anlayarak yola devam etsem daha iyi olacak.bu güne kadar bu SH- girişiyle bilerek bizzat bir alakam olmadı çünkü.

picmanya

#5
mesajımı karışık gördüm sorumu kısaca tekrar sorayım.

dsPIC30F de tek bir adc pininden analog okuma yapmak istiyoruz. bu pin diyelim AN0 olsun.
bu pinin analog voltaj referans beslemesinide dsPIC'in AVDD,AVSS pinlerinden veriyoruz.AVDD = +5V. , AVSS = 0V. şeklinde.
ve bundan sonra AN0 pinine 0 ile +5V. arasında değişken gerilim veriyoruz.Ve programda okuma yapıyoruz.
Bizim bu iş için yazdığım 3 pinin haricinde başka bir pinede giriş vermemiz gerekiyormu?yani ilaveten 4. bir giriş daha olması gerekiyormu?

bunu öğrenmek istiyorum.

şimdi işlemcinin dosyalarını tekrar incelediğimde 4. pin yani VREF- de gerekiyor gibi gözüküyor.ama bu güne kadar yukarıda anlattığım 3 pinle adc yi kullandım sorun çıkmamıştı.yeni projemde birtakım sorunlarım var.o yüzden bu soruyu sorma gereği hissediyorum.

picmanya

#6
tamam olayı şimdi anladım.
burda VREF- girişini dsPIC Avss pininden içinden alıyormuş.
ADCHS registeriyle bu ayarlanıyor.gördüğüm kadarıyla.ben bunu direkt her projemde otomatikmen 0 verip geçiyordum.
aslında bilmeden ayarı istediğim gibi yapıyormuşum.
yani 3 pin beslemesi tek kanaldan okuma için yeterli imiş.
bir an kendimden şüphelenmiştim.40 yıllık doğru oluyordu yahni.
insan ummadığı sorunlar yaşamaya başlayınca çok şüpheci oluyor.

ama yinede 70046E 449.syf 4. sıra tabloda sağda ANx or VREF- yazılan yere ANx,VREF- or AVSS yazmaları daha doğru olurdu.

picmanya

sonuç olarak;

adc okuması yapmak için ben işlemcimin VREF- ve VREF+ girişlerini adc için kullanmadığımdan dolayı,
şu değerlere ayarlama yapmalıyım sonucu çıkıyor.

A/D Speed              : Up to 500 ksps
TAD Minimum          : 153.85 ns
Sampling Time Min  : 1 TAD
Rs Max                    : 5.0 kΩ
VDD                        : 4.5V to 5.5V
ADCS                      : 9
TCY                         : 33,91 ns.

şu durumda ben 470R olarak kullandığım RS direncimi yine aynı değerde RS = 470R olarak kullanmaya devam edeyim.
TAD değerini bir üst değer olan TAD = 2 olarak vereyim.
ADCS  değerini bir üst değer olan ADCS = 10 olarak vereyim.
bu şekilde en iyi değerlerde okuma yapmış olurum herhalde değilmi?

son olarak iki yeri daha sormak istiyorum.
bu durumda benim adc örnekleme hızım 500 ksps üzerine çıkmayacak bu ne demek nerde 1000 kullanmam gerekirki?
dsPIC33F serisinde 2000 ksps değerlerinden bahsediliyor.

birde RS direncinden hemen sonra yani adc pini ile gnd arasına seramik 1nF. değerli kondansatör atıyorum bu kondansatörün değerini neye göre seçmeliyim bunu 1nF. olarak, büyük kullanıyor olabilirmiyim?küçültmek daha hızlı ve doğru değerlerde ölçüm yapmamı sağlarmı?

iyildirim yardımın için teşekkürler.

iyildirim

sayfa 449 daki tabloyu hangi bağlantı konfigurasyonunda ne kadar okuma hızına ulaşabilir, ve minimum TAD sample süreleri ne olmalıdır diye de yorumlayabiliriz.
Sonuç olarak seçilen değerler makul görünüyor.

VRef+ ve Vref- 'nin seçimi için ADCON2.VCFG kullanılıyor. Daha sonra pin konfigürasyonunda VRef- için dış bir pinmi, iç Vref mi seçileceğine karar veriliyor. 500kpsp üzeri okumalarda Vref+- pinlerinin kullanılması önerilmiş. Bu hızlarda okuma yapılmıyorsa gözardı edilebilir.

1nF kondansatör için net bir fikrim yok. Makul görünüyor. Sinyal frekansı, parazitik etki, sinyali ne kadar yumuşatacağımıza göre değişir. Okuyup çok ortalama alacağımıza, kondansatörü büyütmek de çözüm olabilir, sinyali daha net izlemek için küçültmek de.
Okuma sonuçları düzenli değilse sample süresini makul bir miktar arttırmak da çözüm olabilir.



picmanya

yardım için teşekkürler.
adc üzerindeki sorunlarımı bu gün istediğim kadar iyi düzeye getirebildim.sorun kalmadı gibi bir şey.
gerisi programda bitecek gibi.programda bir düzenleme ile sorun falan da kalmıyor aslında
ama o düzenlemede benim işime gelmiyor. farklı bir yordam yazmam gerekiyor.programda kastıracağım biraz.
bu sabah yeni bir pcb de topladım eskisinden kaynaklı sorunlarda varmış.