1. sayfa
Belki boşta bıraktığındada parazit yapabilir. ADC girişini devrede göremedim. POT yerine sabit direnç kullanırsan daha verimli olabilir. |
parazit yapıyosa şayet nasıl engelleriz bunu ? adc girişi an5 yani analog 5. kanal . aslında orda potansiyometre değil de uzama sensörü var fakat aynı potansiyometre gibi çalışıyor. tavsiyesi olan ???? |
"sistem boştayken" ne demek??? |
-sistemin boşta- olmasından kasıt nedir? Analog girişi boşta bırakıyor iseniz girişi 0V. a çekmek için girişle GND arasına 10k bağlayabilirsiniz. |
sistemin boşta olması dediğim analog kanaldan herhangi bir veri okunmuyorken yani uzama sensörü ilk halindeyken ( uzama sensörü resmi altta ) max boydayken bu durumda sayıcı halen saymaya devam ediyor 1 er 1 er . bunun sebebi ne olabilir? gürültü falan mı alıyor kanallar < Resime gitmek için tıklayın > |
benim adc nin öyle kötü huyları yoktur . zaten sensör tersten çalışıyor boştayken 5 volt tam uzamada 0 volt veriyor filtrelemeye gidersek nasıl olcak o iş ? |
Yazılımda ADC nin 1/2 LSB hata oranını hesaba kattın mı? |
nasıl bir bağlantın var tam olarak anlamadım ama ADC girişine bir 100n ister gibi... |
şekildeki potansiyometrenin pice bağlandığı 16f877 nin 8. bacağına uzama sensörü bağlı. 33. bacak olan b0 dan da kare dalga çıkış alıyorum. uzama sensörü ne kadar uzarsa o kadar kare dalga pulse sinyali alıyorum ? ADC nin 1/2 LSB hata oranını hesaba kattın mı? biraz daha açar mısın konuyu ? |
Yazılımı da eklersen daha faydalı olur. Adc den gelen veri değişken olabilir.Bu yüzden de yazılımsal yada donanımsal olarak filtreleme yapmalısınız. Donanımsal filtre olarak, basit bir alçak geçirgen filtre kullanılabilir. alçak geçirgen filtre(RC) bir direnç ve bir kondansatörden oluşur. Uygun değerleri alttaki adresten hesaplayabilirsin: http://www.muzique.com/schem/filter.htm Yazılımsal filtre ise Adc den aldığın verileri biriktirip ortalamasını almak gibi birşey olur.Mesela her aldığın değerle kare dalga üretmektense, 10 tane değer alıp ortalamasını bulup,o değerle kare dalga üretebilirsin.Tabi bu en basit yazılımsal filtre olur. Filtre uygulanmış adc girişi ile filtre uygulanmamış adc girişi arasındaki farkı anlamak için şu 2 resim yeterli olur sanırım. filtresiz: < Resime gitmek için tıklayın > filtreli: < Resime gitmek için tıklayın > |
sondunya, yorumlar için çok çok teşekkürler. şimdi donanimsal filtre için kare dalga çıkışı veren b0 bacağına RC filtresini bağlıyorum, şimdi benim ürettiğim kare dalga sinyali max 500 hz. sitede corner frequency (köşe frekansı) tabiriyle anılan şey misal 300ohm ve 1uf kapasite değeri ile 530Hz hesaplanıyor. bu değerin üstünü geçirmiyor sanırım doğru mu düşünüyorum ? peki analog girişte parazitlenmeyi önlemeye yönelik hangi yaklaşımlar getirilebilir? yabancı bir forumda oraya yüksek değerlikli direnç bağlanması tavsiye edilmiş. analog girişle sistem toprak hatta arasına. |
Ben yanlış anlattım sanırım.Ben sorunun adc girişinde olduğunu söylemek istemiştim. Verdiğim şekiller birim zamanda adc girişinden okunan değeri gösteriyor.Tahminen senin devrende de adc girişinden gelen değerler 1.şekildeki gibi.Aslında her 2 şekildede okunan değer(referans değeri) 30 dur. 1.şekle dikkatli bakarsan 30 değerinin hizasındaki düz çizgiyi farkedeceksin Ancak arada okuduğu 1 eksik, 1 fazla değerler girişin bozulmasına, bu nedenle de girişi referans alarak uyguladığın çıkışın(kare dalganın) çok fazla değişmesine neden oluyor. Benim tahminimce girişteki dalgalanmayı(osilasyonu) engellemen sorununu çözecektir. http://www.muzique.com/schem/filter.htm low pas filter şeklinin girişini(IN), sensor e bağlayıp,çıkışını(OUT) da işlemcinin adc girişine bağlarsan, daha dengeli bir girişe ve de çıkışa sahip olursun. Eğer kare dalganın çıkışına low pass filter koyarsan kondansatörden dolayı kare dalgan ac sinyale dönüşebilir.Bence kare dalganın çıkışına filtre koymamanı tavsiye ederim ben. İyi çalışmalar Bu arada Yazılımı da eklersen daha faydalı olur. |
evet adc 5. kanalın girişine filtre uyguladım yalnız değişen fazla birşey olmadı yine fazlasıyla osilasyon var. filtre değerlerini mi yanlış seçtim acaba? RC değerlerini hangi formüle göre hesaplıyoruz? Fkesim= 1/(2xpixRC) formülünden mi? Uygun RC değerleri ne olabilir ? bu arada adc nin çözünürlüğünü 8 bitten 10 bite çıkarmış bulunuyorum. bu da daha fazla osilasyon anlamına mı geliyor acaba? 1cm uzama değeri için 1024 dijital sayım değeri Altta yazılımın işler kısmını ekliyorum.... forever loop |
Filtre uyguladığın halde değişiklik olmaması ilginç.Bu durumda yazılımsal filtrelemeyide devreye sokmak lazım. Eklediğin kod parçacığını pek anlayamadım.Basic de yazılmış sanırım.if blokları ve döngüler belli olmuyor. Adc den okuduğun bölüm döngüye sokulup 10 kere tekrarlanabilir ----------------------- Dongu (10defalık) { ADC_result =ADC_result+ ADC_OKU(5) }Dongu bitti ADC_result =ADC_result/10 ----------------------- Bu çok dandik filtre bile bir fark oluşturmalı.(En azından sabit anolog giriş için). Kodlardan anladığım kadarıyla,eğer yamulmuyorsam; okuduğun 2 değer arasındaki fark kadar kare dalga üretiyorsun. -------------------------- ilkdeger >= sondeger ise -------------------------- kare dalga üret, değilse birşey yapma. eşit ise neden kare dalga üretiyorsun? Ben kodları anlayamadım galiba! Bu arada kare dalga üretmek neden? Onun yerine en basitinden 7-segment gösterge olsa sistemin durumunu(boy uzunluğunu) rakamsal olarak gösterebilsen daha iyi olmaz mı?Gösterge ile hem pozitif hemde negatif değişimleri gösterebilirsin. Filtre değerlerini sormuşsun.Ben kendi uygulamamda formul kullanmadan 100nF kapasitor 100 ohm direnç kullanmıştım.İş görmüştü Formul hesabı içinde;Adc nin örnekleme periyodunu bulman lazım.Bu da kullandığın harici kristal değerine göre ve adc için ayırdığın prescaler değerine göre değişir. Çözünürlüğü arttırarak hassasiyeti arttırmış olursun.Bu durumda dalgalanmayı da arttırmış olursun Pek yardımcı olamadım kusura bakma ama yazılımı anlayamadım. |
düzeltiyorum, şu anda yeni filtre değerleri ile adc girişini filtreledim RC filtresi R:100ohm C:100nF ile ve bir iyileşme olduğunu söyleyebilirim. kullandığım dil JAL (just another language) açık kaynak kodlu , ve onunda jALTURK v.2.0 (türkçeleştirilmiş) versiyonu evet 5 ms arayla analog giriş değerlerini okuyorum ve aradaki fark kadar kare dalga sinyali gönderiyorum b0 kanalından. ilkdeğer sondeğere eşitse kare dalga üret diyorum , o hakkaten manasız oldu da yine de birşey üretilmiş olmuyor zaten . onu her ihtimali dikkate almak maksadıyla öyle yaptım ilkdeger >= sondeger şeklinde ve sonrasında ilkdeger < sondeger ifadesi var. yani tüm durumlar tanımlı. böyle olmak durumunda çünkü kare dalga sinyalini sayıcıya giriyorum ve ordan da bilgisayar yazılımı ile ekrana grafik çizdiriliyor. yazılımsal filtrelemeye henüz gitmedim. onu da tamamladığım zaman sonucu yazıcam. teşekkürler.. |
pic16f877 .pic18f452 eski teknolojiler hemde pahalı .Ben biryerde okumuştum bunların adc lerinde yapılarından kaynaklanan çözülemez problemler varmış. Ama yeni ürünlerde düzeltmişler pic18f4520, pic18f45k20 ile çalışıyorum 10 bit adc ile hiçbir sorun yok. pic18f4520 yi deneyebilirsin 877 ile bacakları aynıdır özellikle pic18f45k20 çok iyi çalışıyor adc yaparken kocaman bir trafonun yanına koydum sürekli trafoyu açıp kapattım hiç etkilenmedi ama 3,3v ile besleniyor. İkisinden birini tavsiye ederim |
quigon1977 teşekkür ederim yorum için, yalnız ben JAL derleyicisiyle yazıyorum kodları, JAL da henüz 18f serisi tanımlı değil de programlama anında çipset ayarları yapılır sanırım. bundan sonra bu dediğin piclere yöneleceğim. yazılımsal ve donanimsal filtreleme ile analog osilasyon değeri baya bir azaldı, picin sağlam çalışması için adc durumunda düzgün regülasyonlu gerilim kaynağı kullanmak çok gerekli |
1. sayfa
< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >
< Bu mesaj bu kişi tarafından değiştirildi herokyar3 -- 15 Eylül 2009; 15:22:38 >