Ortalama analog değer

alio1984

Yeni üye
Katılım
9 Ağu 2019
Mesajlar
7
Tepkime puanı
0
Puanları
1
Konum
istanbul
Merhaba,

Aşağıda örnek bir ortalama değer alma fonksiyonu paylaştım. sistemimde bir problem yok sorunsuz bir şekilde çalışıyor.

Sormak istediğim, doğru ortalamayı almak için her seferinde Analog 0 (A0) pinini kapatıp açmak zorundayım. ( 0V,5V) Diğer türlü ortalama 2 kat değer veriyor. Bunun içinde ortalama=(toplam/10) yapınca sonuç doğru çıkıyor. Her iki şekilde de sistem çalışıyor tabii ki ilk yaptığım daha doğru bir mantık. Peki neden? Neden 5 kere okuyup toplamı yazması gerekliyken neden 10 defa okunmuş gibi davranıyor?


toplam=0;
ortalama=0
deger=0;
i=1;

digitalWrite(A0,HIGH);

for(i=1; i<=5; i++)
{
digitalWrite(A0,HIGH);
deger= analogRead(A1);
digitalWrite(A0,LOW);
toplam=toplam+deger;
delay(100);

}
digitalWrite(A0,LOW);
ortalama=(toplam/5);
.
.
etc...

Teşekkürler,
Ali
 
Moderatör tarafında düzenlendi:

amenofis

Yeni üye
Katılım
18 Tem 2019
Mesajlar
22
Tepkime puanı
4
Puanları
3
Konum
Bursa
A0 pinine bağlı birşey var mı? Başka bir analog pinden ölçünce de aynı şekilde mi davranıyor? A0 sürekli HIGH konumda kalsa doğru ölçmüyor mu?
 

alio1984

Yeni üye
Katılım
9 Ağu 2019
Mesajlar
7
Tepkime puanı
0
Puanları
1
Konum
istanbul
A1 pininde ölçmek istedigim bir ohm değeri var. (Sensor diyelim) bunun beslemesini, A0 pininden alıyorum.
 

xbrknx

Üye
Katılım
16 Tem 2019
Mesajlar
78
Tepkime puanı
16
Puanları
8
Konum
istanbul
bu şekilde denermsn tel den yazdım karakter hataları olabilir :

int i;
int toplam;
float ortalama;
while (i<5) {
digitalWrite(A0, HIGH);
delay(50);
toplam += analogRead(A1);
digitalWrite(A0, LOW);
delay(50);
i++;
}
ortalama=(toplam/5);
 

alio1984

Yeni üye
Katılım
9 Ağu 2019
Mesajlar
7
Tepkime puanı
0
Puanları
1
Konum
istanbul
bu şekilde denermsn tel den yazdım karakter hataları olabilir :

int i;
int toplam;
float ortalama;
while (i<5) {
digitalWrite(A0, HIGH);
delay(50);
toplam += analogRead(A1);
digitalWrite(A0, LOW);
delay(50);
i++;
}
ortalama=(toplam/5);
While döngüsü de ile yapılabilir, daha önce denemiştim. Benim merak ettiğim neden A0 'ı döngü içerisinde kapatıp açmak zorunda kaldığım. Sizinde yazmış olduğunuz örnekte A0 açılıp kapatılmış, bunun nedeni nedir? Eğer açıp kapatmaz isek ve sadece döngüden sonra kapatırsak, girilen değerin 2 katı okuma yapıyor. Girilen değerin 2 katına bölersek te ortalama değeri bulmuş oluyoruz. Peki neden? Topraklama ile ilgili olabilir mi? Aklıma başka bir şey gelmiyor. Ölçtüğüm değer yaklaşık 2,5V 'a tekabül ediyor, sanırım iki kat ölçüm bu değerle ilişkili. Daha düşük bir değer ölçseydim, sanırım 1,5 kat vs yada daha düşük olacaktı.

Teşekkürler,
Ali
 

amenofis

Yeni üye
Katılım
18 Tem 2019
Mesajlar
22
Tepkime puanı
4
Puanları
3
Konum
Bursa
Direkt işlemciden besleme alınmaz. Boarda gelen harici 5v'u kullan.
 

xbrknx

Üye
Katılım
16 Tem 2019
Mesajlar
78
Tepkime puanı
16
Puanları
8
Konum
istanbul
ben senin örnekten gittim o yüzden high low yaptım normalde gerek yok ( sensörle ilgili açıp kapatarak bi işlem olduğunu düşündüm )

arduino +5 den besle

istediğin zaman okursun sorun olmadan

pinleri besleme olarak kullanmak doğru değil zaten
 
Üst