avatar_jun

5.Ders A/D Cevirici hakkında

Başlatan jun, 06 Mayıs 2012, 08:35:44

jun

merhabalar ete abi bu aralarderslerinizden analog digital cevirici üzerinde kafa yoruyorum,fakat dersin birinci örneginde verdiginiz şu ;

'Okunan değer 0-5 volt için 0-1024 olacağından okunacak değer başına volt değeri
' 5/1024 =0,0048828 olacaktır. Sayı çok küçük olduğundan bu değeri 1000 ile
'çarpmalıyız. O halde (Okuma/V)= 4,8828 bu değeri 256 ile çarpar isek
'4,8875 x 256 = 1250 değerini buluruz. Bu değeri kullanarak 32 bit işlem yapabiliriz.
'1250 değeri (5/1024)*256 değerine karşılık gelmektedir.
'sonuçta ADC HAM değerini bu sayı ile çarpıp 256'ya bölersek sonucu elde etmiş oluruz.
'ancak sonuç 32 bitlik sınırda olduğundan bu işi 32 bit çarpma ile yapıyoruz ve orta
'baytı aldığımızda ise zaten sayının 256'ya bölünmüş halini aldığımızdan başka bir
'işlem yapmadan sonucu elde etmiş oluruz.

hesaplamaları anlayamadım,yani daha dogrusu 256 nın orada neden kullanıldıgını anlamadım,mantıgını açıklarmısınız lütfen.

ete

İşin sırrı */ çarpma komutunda yatmaktadır. Bu komut ile iki sayı 32 bit üzerinden çarpılmaktadır. 32 bitlik sayı 4 adet 8 bitlik sayıdan oluşur.  Bu çarpma işleminde sonuç bu 4 adet 8 bitlik sayının ilk sekiz bitlik olanı göz ardı edilerek kalanları alır. A */ B = $00 32 23 12  yani $00322312 şeklinde bir sayı ise sonucu size $003223 olarak verir.
Bu ise o sayının 256 ya bölünmüş hali demektir.
Bu nedenle sabit çarpan değerini virgülden kurtarırken sonuçta eşitlik bozulmasın diye önceden 256 ile çarpıyoruz.
Yinebir örnek vereyim.

Diyelimki Voltmetre yapıyoruz. Ekran ADC den okuduğu 0-5 Volt değerine karşı elde ettiği ADC değerini bize 0-25V olarak gösterecek.
Sistem 5V da 1023 değerini okuyacaktır. Sıfır ile birlikte bu 1024 kademe edecektir.
O halde 25/1024 =0,024414 sayısını elde ederiz.
Şayet ondalıklı sayılarla işlem yapabilse idik bu çarpan işimizi görecek idi. Zira diyelimki adc den 500 okuduk. Bunun 0-25V skalasında kaç volt ettiğini bulmak için 500 * 0,024414 = 12,2 V şeklinde bulacak idik. Ancak ondalıklı sayılarla işlem yapamıyoruz. O halde çarpan sayıyı virgülden kurtaracağız.
0,024414 sayısını önce 256 ile çarpalım 0,024414 * 256 = 6,2499 şeklinde bir sayı buluruz. Bu sayıyı 6,25 kabul edebiliriz. 6,25 sayısını virgülden kurtarmak için 100 ile çarparız ve 625 sayısını buluruz.
Demekki ben */ işlemini kullanarak Adc değerini 625 ile çarpıp 100 e bölersem sonucu doğru bulacağım demektir.
Deneyelim, Volt=500 *625 =312.500 bulunur. Sonuç bize bu sayının 256 ya bölünmüş halini vereceği için ,
312500/256=1220 olarak bulunur. Gerçek sayımızı ise bulunan bu değeri 100 e bölerek bulacağız. SOnuçta yine 12,20 sayısını elde ederiz bu işlemler sonucunda. Hemde küsüratla uğraşmamış oluruz böylece.

Matematikte bir kural vardır. Bir eşitliğin iki tarafı aynı sayı ileçarpılırsa eşitliğin değeri bozulmaz denir.
3=3 bir eşitliktir. Bunun her iki tarafını 2 ile çarparsam eşitlik bozulmaz. sonuçta 6=6 eşitliğini elde edersiniz.
Bütün yaptıklarımız bu kuralı desteklemektedir.

Ete

jun

teşekkürederim ete abi kavramak için hemen denemelere başlıyacagım.

Hattuşa

ete hocam yukarıda vermiş olduğunuz matematik byte ve word değerler için gecerli değil mi? yani float ve dword değerlerde virgüllü çarpma ve bölme işlemi yapılabiliyor sanıyorum, acaba hatalı mı düşünüyorum.

ete

Protonda float değişken tanımlarsanız onda virgüllü işlem yapabilirsiniz. Ama PBP da virgüllü işlem yoktur.
Değişken tip farketmiyor

Ete

Powered by EzPortal