Yavaş şekilde Analog okuma??

Başlatan Maxim, 29 Mart 2022, 16:36:21

Maxim

önce nasıl anlatabilirim onu düşünüyorum.

bir voltaj okuması yapacağız, o kolay
diyelim analog girişimize 15 volt verdik tak lcd ekranda 15.0 volt çıktı
(tabi gerekli gerilim bölücüler, kondansatörler var)

şöyle bir şeyi nasıl yaparız? algoritma nasıl olmalı?
girişe 15 volt verince ekranda 0.0 yazıyor ya, oradaki değerimiz yavaş yavaş yukarıya doğru çıksın?
mesela 0 dan 15 e gelmesi 3 saniye sürsün

yada şöyle anlatayım
ibreli voltmetre düşünün, girişine 15 volt verince ibre yavaş yavaş sağa doğru yükselsin
tak diye çıkmasın. (15 volt bir örnek elbette)


önce okuduğumuz değerleri bir yerde tutup arttırarakmı ekrana vermeli ne yapmalı?

Mucit23

Moving Average yaparsanız istediğiniz olur. Moving average boyutu ile sample hızı sizin yükseliş hızınızı belirler.

MCansız

Merhabalar

median filter kullanın ve fonksiyon parametrelerinde örnekleme zamanını ve örnekleme katarını yükseltin

https://github.com/binarymaker/moving-median-filter

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

fide

float dizi[100];
int i;
int  sayac;
int32 sum;

for (i=0;i<100;i++)
{
   dizi[i]=0;
}

while(1)
{
i++;
if (i>=100)
{i=0;}
dizi[i]=read_adc(0);

sum=0;
for (sayac=0;sayac<100;sayac++)
{
sum+=dizi[sayac];
}
result=sum/100;

}

Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

Melih1802

Alıntı yapılan: Maxim - 29 Mart 2022, 16:36:21önce nasıl anlatabilirim onu düşünüyorum.

bir voltaj okuması yapacağız, o kolay
diyelim analog girişimize 15 volt verdik tak lcd ekranda 15.0 volt çıktı
(tabi gerekli gerilim bölücüler, kondansatörler var)

şöyle bir şeyi nasıl yaparız? algoritma nasıl olmalı?
girişe 15 volt verince ekranda 0.0 yazıyor ya, oradaki değerimiz yavaş yavaş yukarıya doğru çıksın?
mesela 0 dan 15 e gelmesi 3 saniye sürsün

yada şöyle anlatayım
ibreli voltmetre düşünün, girişine 15 volt verince ibre yavaş yavaş sağa doğru yükselsin
tak diye çıkmasın. (15 volt bir örnek elbette)


önce okuduğumuz değerleri bir yerde tutup arttırarakmı ekrana vermeli ne yapmalı?


ADC girişini okuması için bir TIMER koyun, her TIMER da ANALOG girişi okuyarak LCD ye yazsın.

eti

önce okunan değerin %80i ile sonra okunan değerin %10 unu toplayın.
oranları değiştirebilirsiniz.

Sozuak

2 türlü yapabilirsin. İlk olarak yazılımsal bir filtreleme şart. Sabit gerilim olsa bile okunan değer oynak olur. Ya adc bit derinliğini yüksek tutup  yüksek değerlileri alıp basamak değerini düşürürsün ya ortalama alırsın vs. 2 kademede de okunacak değeri  gerekiyorsa bir diyot üzerinden rc devresine uygularsın oradan yavaş yükselir ama düşerken de yavaş düşer.

Erol YILMAZ

Alıntı yapılan: eti - 29 Mart 2022, 22:36:01önce okunan değerin %80i ile sonra okunan değerin %10 unu toplayın.
oranları değiştirebilirsiniz.

bu yöntem güzel,,, fakat oranların toplamı 1 olmalı.  %80 ise diğeri %20.

Sozuak

Erol abi şöyle %80 ile %10 toplayıp 2 ile çarpıp beşe böleceksin. Sonuç 1947 ise 13 çıkar değilse 45 ekle  en sonunda bulduğun rakamın son iki hanesi rastgele bir sayı olur. Onu da bir yerlerde gösteririz.

tunayk

Alıntı yapılan: Erol YILMAZ - 30 Mart 2022, 11:39:46bu yöntem güzel,,, fakat oranların toplamı 1 olmalı.  %80 ise diğeri %20.
Bu yöntem dijital RC filtre aslında. Oran korunarak değerler 1yeni+99eski/100, 1yeni+199eski/200 gibi de kullanılabilir.
Bu filtrenin dezavantajı son değere hiç bir zaman ulaşamıyor. Örneğin sinyal 15V a ulaştığında bunun çıkışı 14.999... veya sıfıra düştüğünde 0.00011... gibi kalıyor. artış azalış küçüldükçe, bölüm sonuçları sonsuz küöülmeye doğru gidiyor.

fahri-

100 örnek değil de 10-20 örnekle sonuç hızlandırılabilir.

Epsilon

#12
Ekrana yazdırılacak sonuç voltajı bir procedure içinde örneğin 5,4,3 ve 2 ye böldürüp herbirini en küçük değerden başlayıp örneğin 0,5 saniye gösterilip sonra sonuç prosedurüne gönderilir

Tabiki bu arada sırada ölçüm yapmak gibi bir uygulama için uygun olur herhalde.Eğer sistemde devamlı düşük değerden yukarıya çıkan voltajı gösterecekse pek anlamlı olmayabilir.

Andromeda

..gelen voltaj nasıl değişip geliyor bilmiyorum ama,
diyelim 15 volt geldi ve okundu..sonra 0 dan 15 kadar olan sayıları sırayla ekranda yazsak..
sonra tekrar okunsa..
soruyu anlamadım mı yoksa..?
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

Maxim

Beyler, hepinize ayrı ayrı teşekkür ediyorum.
yazdıklarınızın tamamını harfi harfine not aldım
üzerinde çalışıyorum

genelde moving filter tavsiye edildi
araştırmalarım sonrasında median filter sanki 1 tık daha iyi gibi duruyor
şu an hangi yöntem daha uygun belli değil
sağolun