ADC ile Yüksek Akımda Pil Gerilimi Ölçümü

Başlatan sensorless, 14 Mayıs 2011, 17:41:12

sensorless

Merhabalar;

Devremde çalışma sırasında 4 ila 10Amper arası akım çeken bir motorum var ve lithium pil ile çalıştırıyorum. Kalan pil seviyesini görebilmem için pilin gerilimini ölçmek istedim. Gerilim bölücü ile pilin gerilimini mikrodenetleyicinin ADC'si ile ölçtüm. Fakat hiç beklemediğim bir sonuçla karşılaştım. Herhangi bir multimetre ile doğru gerilimi ölçüyorum. Fakat ADC ile ölçtüğüm değerler yaklaşık 0.8V aşağıda. ADC ile yaptığım matematiksel çevrimlerin doğru olduğuna eminim. Çünkü motor çalışmaz iken yaptığım ölçümler multimetre ile aynı. Fakat motor çalışmaya başlayınca yanlış gerilim ölçüyorum. Tahminimce motor çalışması sırasındaki ripplelardan kaynaklanıyor bu ölçüm hatası. Yaklaşık 1Hzlik RC filtresi ve MCU'içerisinde dijital Alçak geçiren uyguladım fakat sonuç tatmin edici değil.
Acaba bu sorunumu nasıl çözebilirim?

Şimdiden teşekkür ederim, iyi çalışmalar..

sensorless

Tam olarak varmak istediğiniz noktayı anlayamadım ama; yol üzerinde ölçümler aldım. Fakat olumsuz bir şeye rastlamadım, ölçüm aletim beklenen gerilimleri ölçüyor. Dediğim gibi mikrodenetleyici malesef doğru ölçüm alamıyor.
Ticari bir 5V 2.5A switching güç kaynağında şu ibareye rastladım; "power rail filter"

"there is a power rail filter- so you can use your main battery (3s lipoly - or other 12V) without interference from the motor or ESC."

Ticari olduğu için açık kaynak değil. Acaba böyle birşey benim sorunumu çözermi, yol gösterebilirseniz sevinirim.




elt42at

Merhaba! Ben de bi ara DC motorun çektiği akımı sürekli ölçen, ve üzerine düşen gerilim ile tüketim gücünü hesaplayan bir deneme yaptım. Motorun her magnet değişiminde farklı değer üretti. Tamamen sallamasyon ripple manyağı değer okudum. Malumunuz bobin ilk kontak değişimi anında acayip anma akımı çekiyor. Yüksek devirde dahi bu gözlenebiliyor. İlk aklıma belli sürelerdeki sample değerlerini toplayıp ortalamasını alarak bi yorum yapmak geldi ama genede o oranlar da çok stabil olmamıştı.

Şimdi, ölçüm yaptığın hatta bi filtre tasarlamak, ADC ucu ile toprak arasına bi kondansatör atmak teorik olarak olumlu ama pratikte bi değer elde edemedim.

Not: bu olay atmel8051 ve adc0804 ile yapmıştım. Devrede toprağa giden kısma bi direnç atıp onun üzerine düşen gerilimi ölçmüştüm. 8 bitlik bir ADC ike verim düşüktü. Yüksek akımda gerilim düşümü çok olacak diye düşük direnç kullanmaya çalıştım ve bu sebeple de direnç üstündeki gerilim değeri azaldığı için ADC ile de olumlu ölçüm yapamadım.

:D Şimdi uygun ve ekonomik bir 18 serisi pic bile 12bitlik ADC ye sahip. Sample alma süresi mikroSaniyelerde.

Bu konuda üstadlarımızın yorum ve deneyimlerini dinlemeyi ben de çok isterim.

herkese iyi çalışmalar

sensorless

Tekrar merhaba, benimle aynı sorunu yaşamış olmanıza bir bakıma sevindim:) Sanırım hata yapmıyorum.
Bende 12Bitlik ADC ile çalışıyorum. Sürekli sample alıp ortalama almak aklıma geldi fakat böyle basit gibi gözüken bir işlem için işlemci gücünü harcamak istemiyorum, yapması gereken ve kritik olan işler var çünkü.
şimdiye kadar RC filtresi kullandım sadece. acaba işin içine indüktans katmak ne kadar büyük bir fark yaratır bilmiyorum.
Tecrübeli arkadaşlardan fikir bekliyorum:)

malaga

Hiç bir kimsenin gönlünü yapmak için Allahın hükmünü çiğneme

f_machine

Genelde profesyonel dizaynlarda gerilim okumak için anti-aliasing filtreler kullanıldığını gördüm.Bende daha o konuda bi deneme yapmadım ama çözüm olabilir.

CLR

Alıntı yapılan: sensorless - 14 Mayıs 2011, 17:41:12
Merhabalar;

Devremde çalışma sırasında 4 ila 10Amper arası akım çeken bir motorum var ve lithium pil ile çalıştırıyorum. Kalan pil seviyesini görebilmem için pilin gerilimini ölçmek istedim. Gerilim bölücü ile pilin gerilimini mikrodenetleyicinin ADC'si ile ölçtüm. Fakat hiç beklemediğim bir sonuçla karşılaştım. Herhangi bir multimetre ile doğru gerilimi ölçüyorum. Fakat ADC ile ölçtüğüm değerler yaklaşık 0.8V aşağıda. ADC ile yaptığım matematiksel çevrimlerin doğru olduğuna eminim. Çünkü motor çalışmaz iken yaptığım ölçümler multimetre ile aynı. Fakat motor çalışmaya başlayınca yanlış gerilim ölçüyorum. Tahminimce motor çalışması sırasındaki ripplelardan kaynaklanıyor bu ölçüm hatası. Yaklaşık 1Hzlik RC filtresi ve MCU'içerisinde dijital Alçak geçiren uyguladım fakat sonuç tatmin edici değil.
Acaba bu sorunumu nasıl çözebilirim?

Şimdiden teşekkür ederim, iyi çalışmalar..

Merhaba,

Açıklaman yetersiz, çünkü bataryayı nezaman okuyorsun ? Motoru aktif eder etmez mi veya nekadar bekliyorsun bu süre motorun kalkışı için yeterli mi? Okuma devren nasıl, şematik yani? Okuma anında bir porttan puls verip scop ile batarya voltajını kontrol ettin mi?

Ve ölçü aleti ile pic'in okuduğu değer karşılaştırılmaz çünkü pic ile ani voltajı okursun, voltmetre ise belirli bir periyotta okur ve rms'ini alır. 



Knowledge and Experience are Power

sensorless

Merhabalar,
Kullandığım işlemci CortexM3 STm32. Yaklaşık 300Hzde PID kontrolcusuyle motor sürmeye çalışıyorum. Motora giden referans %40'lık bir bant içerisinde sürekli değişiyor. Motor çalışmasına devam ederken 50Hz'de bir pilden gerilim ölçümü alıyorum.
Devremi sormuşsunuz, pilin + ucunda bir gerilim bölücü ile 16V lik pili 3.3v'a düşürüyorum ve ADC bacağına gönderiyorum.
Dediğiniz gibi Voltmetre'nin yaptığı işlemler farklı. Ben bu işlemleri max 300Hz olmak üzere gerçekleştiremezmiyim?

CLR

Alıntı yapılan: sensorless - 27 Mayıs 2011, 10:51:59
Merhabalar,
Kullandığım işlemci CortexM3 STm32. Yaklaşık 300Hzde PID kontrolcusuyle motor sürmeye çalışıyorum. Motora giden referans %40'lık bir bant içerisinde sürekli değişiyor. Motor çalışmasına devam ederken 50Hz'de bir pilden gerilim ölçümü alıyorum.
Devremi sormuşsunuz, pilin + ucunda bir gerilim bölücü ile 16V lik pili 3.3v'a düşürüyorum ve ADC bacağına gönderiyorum.
Dediğiniz gibi Voltmetre'nin yaptığı işlemler farklı. Ben bu işlemleri max 300Hz olmak üzere gerçekleştiremezmiyim?

Stm32 çok iyi bir işlemci, bende kullanıyorum, adc'side çok iyi ve 12bit. O nedenle okumada hata olmaz. Sadece gerilim bölücülerin adc'nin giriş empedansını değiştirmemesi lazım yoksa hatalı okursun.

Yeni pil ile endüktif yüke enerji verdiğin anda okuma yapıp, pil voltajı nekadar değişiyor ve aynı testi pil enerjisi bitmek üzereyken voltaj ne seviyede oluyor test edip, bu değerlere göre pil bitiyor diyebilirsin, temel mantık bu. Bu şekilde piyasada çalışan 6 çeşit pilli ve mükemmel enerji tasarruflu projem var. Senin sistemini tam bilmiyorum ama hem pilli hemde motoru çok çalışan bir sistem değildir sanırım, yoksa mantıksız olur, pil voltajını 300kez okumanda gereksiz olur, hatta okuma yapmazken adc'yi off yapmalısın veya uygunsa işlemciyi uykuya bırakmalısın ki pil daha çok kullanılsın, bunun gibi bir çok enerji tasarrufu var.
       
Knowledge and Experience are Power

sensorless

Verdiginiz bilgiler icin tesekkur ederim. Proje bir model helikopter uzerine oldugu icin motorlar surekli calisiyor. Amacim pil tasarrufu degil; adcnin enerjisini cekilen akimlarin yaninda gorulebilecek birsey bile degil;) sadece kac dk daha ucus yapilabilir bunu hesaplamaya calisiyorum.
Motorun donus hizina gore adcden okudugum veriye bir offset eklemem gerektigini anliyorum dogrumudur?


Maxim

bir sürü eksikler var
bir kere neden ölçüm yaptığınız adc nin şemasını vermiyorsunuz ? rc filtre değerleri ne ?
12bit !! ne gerek var o kadar hassas bir şey değilki olay
voltaj ölçümü bir şekilde halledilir ve doğrulanır, 10 bit boru değil gayet yeterlidir

ama

gerilim ölçerek pildeki kalan süreyi nasıl hesaplayacaksınız ? böyle birşey yokki?
siz pilden çekilen akımı ölçecek ve oradan hesap yapacaksınız
diyelim pil 3000mah yani 1 saat boyunca 3 amper verebiliyor.
sizde diyelim 3 amper çekiyorsunuz(yani tam 60 dakika uçabilirsiniz ve güvenli olması için 45. dakikada inmeniz lazım)
arkada bir rtc olacak ve çekilen akıma göre zaman geriye sayacak ki kaç dakikan kaldı bilesin ?


sensorless

#11
ADC olarak 12bit olsun diye bir kaidem yok, bana bırakın 10biti 8bit bile yeter.
Kullandığım temel devre aşağıdadır. Fakat buna ek olarak bir çok şey denedim. Gerilim bölücüyle RC filtreyi ayrı olarakta yaptım. yani gerilim böücüye seri 220k ve 1uF (yaklaşık 1Hz'lik alçak geçiren). Fakat hiçbirisinde düzgün sonuç alamadım.
Akım ölçümü ile hesaplama yapıyorum bu zaten gerekli. Fakat gerilim ölçmenin bir çok yararı var. Eğer kullandığınız pilin modelini çok iyi çıkarabilirseniz tahmini uçuş süresini elde edebilirsiniz, çünkü kullanıcının %kaçı dolu bir pil taktığını asla bilemezsiniz.

Maxim

çok net bilmiyorum ama belli bir noktadan sonra voltaj aniden düşmüyormu o tip pillerde ?

birde maxim-ic nin bu iş için iddalı ürünleri var
fuel gauge falan diyorlar
size, notebooklarımızdaki % olarak hatta kalan saat-dakika bilgisi lazım değilmi ?
öyle bağımsız özel bir entegre kullanmayı düşündünüzmü ?
pahalı şeyler değilmiş