Arama butonu
Bu konudaki kullanıcılar: 1 misafir
18
Cevap
4227
Tıklama
0
Öne Çıkarma
pic adc den okurken sorun !!
H
15 yıl
Yüzbaşı
Konu Sahibi

slm arkadaşlar, pic16f877 ile analog/dijital çeviri modülünü kullanarak 8 bit (0-255) çözünürlükte veri okuyorum ve örnekleme zamanında geçen sürede üretilen dijital sayım kadar kare dalga üretiyor sistem , bu kare dalgaları sayıcıda saydırıyorum. herşey güzel işliyor da sistem boştayken (sensör ucu boştayken) kendi kendine sayıyor. bu sorun neyken kaynaklanabilir ?



< 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 >

B
15 yıl
Teğmen

Belki boşta bıraktığındada parazit yapabilir. ADC girişini devrede göremedim. POT yerine sabit direnç kullanırsan daha verimli olabilir.



Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: BoRDoX

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 ????


Bu mesaja 2 cevap geldi.
R
15 yıl
Yarbay

"sistem boştayken" ne demek???



U
15 yıl
Teğmen

-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.


Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: ustura2

-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 >


Bu mesaja 1 cevap geldi.
R
15 yıl
Yarbay

senin adc 0 değerini almıyor olmasın...


Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: r2d2droids

senin adc 0 değerini almıyor olması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ş ?


Bu mesaja 2 cevap geldi.
T
15 yıl
Çavuş

Yazılımda ADC nin 1/2 LSB hata oranını hesaba kattın mı?



R
15 yıl
Yarbay

quote:

Orijinalden alıntı: herokyar3


quote:

Orijinalden alıntı: r2d2droids

senin adc 0 değerini almıyor olması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ş ?



nasıl bir bağlantın var tam olarak anlamadım ama ADC girişine bir 100n ister gibi...


Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: r2d2droids


quote:

Orijinalden alıntı: herokyar3


quote:

Orijinalden alıntı: r2d2droids

senin adc 0 değerini almıyor olması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ş ?



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 ?


Bu mesaja 1 cevap geldi.
S
15 yıl
Teğmen

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 >





< Bu mesaj bu kişi tarafından değiştirildi sondunya -- 16 Eylül 2009; 6:19:16 >
Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: sondunya


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




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.





< Bu mesaj bu kişi tarafından değiştirildi herokyar3 -- 16 Eylül 2009; 10:15:00 >
Bu mesaja 1 cevap geldi.
S
15 yıl
Teğmen

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.


Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: sondunya

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 

ADC_result = ADC_OKU(5)

if x == low then
x = high
ilkdeger = ADC_result

else
x = low
sondeger = ADC_result
pulse = ( ilkdeger - sondeger )
if ilkdeger >= sondeger then
for pulse loop
pin_b0 = high
Gecikme_1ms (1)
pin_b0 = low
Gecikme_1ms (1)
end loop
elsif ilkdeger < sondeger then

end if
ilkdeger = 0
sondeger = 0
end if

end loop





< Bu mesaj bu kişi tarafından değiştirildi herokyar3 -- 17 Eylül 2009; 9:37:30 >
Bu mesaja 1 cevap geldi.
S
15 yıl
Teğmen

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.


Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: sondunya

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..



Q
15 yıl
Teğmen

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


Bu mesaja 1 cevap geldi.
H
15 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: quigon1977

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





< Bu mesaj bu kişi tarafından değiştirildi herokyar3 -- 30 Eylül 2009; 8:43:48 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.