Akım hesaplaması

Başlatan ensar, 04 Ocak 2014, 20:51:07

ensar

Selamün aleyküm.

Pic ile akım ölçümü yapıyordum. 1 ohm'luk bir direnç kullandım. gelen desimal veriye göre basit bir if bloğu kullanarak, hassas ve büyük ölçümleri yapıyordum.Filtre olarakta lm358'i gerilim izleyici olarak kullanıyordum.

Direnç değerini değiştirince işler karıştı :)

0.01 ohm 11 w'lık bir direnç kullanmaya karar verdim.Ne kadar küçük değerli olursa ve w değeri ne kadar yüksek olursa o kadar iyi anladığım kadarı ile.

devrede gene opamp kullanıyorum.Lm358 evirmeyen yükselteç olarak.

Şimdi, ölçmek istediğim azami akım 3 A buna göre opampın kazancı:

opamp kazancı 1+100/1 = 101

(3amp * 0.01şönt)*kazanç 101 = 3.3 v

opamp beslemesi 5 v olduğu için anladığım kadarı ile 3.7 v çıkış veriyor.simetrik besleme değil.

şöyle bir denene yaptım. şönt direncinin üzerinden 500  ma akım geçirdiğimde.Okuduğum V değeri 55 mV.

1.6 A geçirdiğimde ise okuduğum değer 290 - 300 mV arasında idi.

bir türlü hesaplayamadım gitti.

hesap = (5/1023) * opampın kazancı * şönt değeri * adc değeri  hesaplaması böyle değilmi ? yani

hesap = (5/1023) * 101 * 0.01 * adcgelen = akım değeri

Kafam karma karışık oldu  :o bunun net hesabı nasıl ?






z

Opampin cikisinda 5v verip verememesi hesabi degistirmez.

Direnc uclarindaki gerilim Vr=0.01xI

Opamp kazanci 101

Adc girisindeki gerilim Vadc=101x0.01*I=1.01xI

ADC nin verdigi deger ADC olsun.

Vadc=(5/1023)*ADC=1.01*I

Akimi cekersen I=(5/1023)*(1/1.01)*ADC=4.84*ADC sonuc (mA)

Mesela ADC den okudugun deger 255 ise akim 4.84*250 den 1.23 A demektir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ensar

#2
kazancı yannış hesaplamışım.

şimdi 2 ye katlıyor. 1+1/1 = 2

halettim en sonunda

hesap =  0.48875855327468*oku2*10

gelen değeri 10 ile çarpıp  sonra 2.2 ile çarpınca oldu. Şönt direncinden şüphelenmiştim. 0.22 ohm' luk bir direnç ile değiştirdim.

yani 2*0.22 = 0.44 = (1/0.44) = 2.2  board üzerinde olduğundan dolayı hassas ölçmese de oldu. Yardımınız için çok teşekkür ederim. Allah c.c sizden razı olsun. Yardım etmeseydiniz çok uğraşırdım.

procedure akim is
var float hesap
var word  oku2
const byte A[] ="A:"
oku2 = adc_read_high_res(2)
_usec_Delay(100)


hesap =  0.48875855327468*oku2*10

hesap2 =  hesap*1.9


lcd_cursor_position(1,0)
print_string(lcd , A)
lcd_cursor_position(1,2)
format_dword_dec(lcd,hesap2,8,0)

end procedure