ADC ile ölçüm

Başlatan muhittin_kaplan, 06 Ekim 2012, 20:00:53

muhittin_kaplan

Evet yuksek kapasiteli aku icin dusunuluyor

OG

Alıntı yapılan: muhittin_kaplan - 06 Ekim 2012, 20:08:55
Analog bir değer ölçeceğiz parazit vs olacak.  en ufak değişiklikte "Aha yakaladım" demeyecek.
Parazitleri yazılımla değil donanımla çözmek bana daha kolay geliyor, LC filtre gibi.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

muhittin_kaplan

Dogrudur hocam. Peki sinyalin devamli yukseldigini yada alcaldigini nasil anlariz. Ben
Adc adinda 10 boyutlu bir dzi olusturdum. Okuma yaptikca dolduruyor ve onceki okumayla karsilastiriyorum.eger buyukse baskabir degiskeni arttiriyorum. Sonra bu degiskeni kontrol ediyorum.

The Gariban

Burada Microchip in PIC ile akü şarz uygulamasının pdf i ve C ile yazılmış örnek var.
Oldukça detaylı izah etmiş.
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en010970

Klein

@Muhittin Parazitleri çok dert etmene gerek yok.  Basit bir LC filtre ve basit ortalama alma bile sorununa çözüm olur.  Çok çok parazit varsa 1-2LSB dalgalanma olur.  o da 5V referans kullandığını varsayarsak , 10 bitte 2Bit  dalgalanma olsa en fazla  0.03V civarına gelir ki şarj devrenin bu  çözünürlükte olduğunu sanmıyorum.

muhittin_kaplan

 Hocam paraziti bir şekilde hallederim düşüncesindeyim. lc olmadı, kalman, unutulan geçmiş vs.
ama sinyali takip edip "evet arkadaş bu yükseliyor" "evet bu da düşüyor" ozaman stage 1 e geç demem gerek.

Klein

Çok karışık bir algoritmaya ihtiyacın yok aslında.  Voltaj yükseliyor, düşüyor meselesinden çok , voltaj istediğim değere geldi mi? meselesi önemli senin için. 
1. aşama sabit akım. Sabit akımı bastın aküye. Gerilim hücre başına 2.35-2.4 v Olmuş mu? olmamış mı?  basit bir karşılaştırma.
Eğer  Eğer gerilim istediğin değere gelmişse , 2. aşamaya, yani sabit gerilim moduna geçtin. Burada da akıma baktın. eğer akım belirlediğin değere gelimş veya altına düşmüşse , 3.aşamaya , yani floating şarj moduna geçtin.

Eğer sabit akım veya sbit gerilimi donanımla yapmayayım onu da yazılmla halledeyim diyorsan , orada braz kod yazman gerekecek. Basit bir PID hatta sadece P işini görür.  Şarj akımı ve gerilimi çok hızlı düşme ve yükselme eğilimi göstermeyeceği için , çok daha basit bir algoritma bile işini görür.

Diyelim ki  300mA akım basman gerekiyor.   Set değerin 300.  Okuduğun değer  200.  Yani hata=100. Belirli zaman aralıkları ile çıkışı artırdın. Değeriher artırdığında  ölçtüğün akıma baktın.  Eğer ölçtüğün akım ile set değeri eşit ise yani hata=0 ise, orada kaldın. herhangi bir değişiklik yapmadın. 
Tekrar ölçtüğünde baktın ki  akım yükselmiş. Hemen çıkışı 1 azalttın.  Baktın akım halen yüksek 1 daha azalttın. Ta ki set değerine gelene kadar böyle devam ettin.

F.T

#22
 :D muhittin hocam ben geçenlerde triaksiyonel aküleri şarj ettim.forklift akü grubu 80 volt 600 amper saat.yaptığım iş opamp üzerinden akım gerilim okumak ortalamasını almak.bu okunanlarıda belirlemiş olduğunuz noktalardaki set noktaları ile karşılaştırıp bir sonraki duruma geçmek.ben setlenen noktalarda aç kapa yaparak kontrol yaptım bir sorunum olmadı sadece kontaktörden dolayı parazitler lcd yi bozuyordu onuda kontaklara ve besleme kartına taktığım rc filtrelerle çözdüm.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

muhittin_kaplan

Hocam nöbetteyim ve prototip devre kuruyorum. Simulasyonda Kaba ca yazılım bitti ama gerçekte nasıl olur gözlemlemem gerek. hayırlısıyla cumaya kadar bitimem gerek bu işi. bu arada derse girip, gyro ve stm32 ile açı hesaplatıp pc ye göndermem gerek. çokca çay az uyku.
Zaten Uykucunun oğlu kızı olmazmış :D

F.T

hocam sizden aldığım kalman filtre artı opamp girişindede kapasite ile stabil yapmaya çalıştım ölçümü.şarjerler canavar gibi devam ediyor.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

SpeedyX

#define ADC_QUANT 16

u16 VMON;
u8 Vslope = 0x80;
BOOL Vconst;

void ADCRead(void)
{
	static u16 VSUM=(ADC_QUANT-1)*0x3FF;
	u16 MVal;

	VSUM += (__ADC_DEGER_OKUMA_REGISTERI__);
	MVal = VSUM/ADC_QUANT;
	Vconst = false;

	if(VMON>MVal)
	{
		if(Vslope)
		Vslope--; // voltaj dusuyor
	}
	else if(VMON<MVal)
	{
		if(Vslope<0xFF)
		Vslope++; // voltaj yukseliyor
	}
	else
		Vconst = true; // degisim yok

	VMON = MVal;
	VSUM -= VMON;
}

VMON anlık ortalama voltajı tutuyor, Vconst true iken voltaj sabit oldugunu goruyoruz, Vslope ile de voltajın değişim yönünü ve hızını takip edebiliyoruz. Yalnız filtrenin belli bir oturma süresi var, ilk anda maximumdan başlar, ADC_QUANT kadar ölçüm sonrasında gerçek değerler veriyor hale gelir.
Bu experimental bir kod, buna offset ve hysteresis özelliği ekleyerek uygulanabilir hale getirebiliriz.
Belli bir süre Vconst==true olduğunda da Vslope = 0x80; yaptırarak değişim eğimini orta noktaya çekebiliriz.

Hattusa

s.a.
yeni bir konu açmadan bir sorunumu sizinle paylaşmak istiyorum.
18f4520 ile kurduğum bir devremde 3 kanal ADC okuması yapıyorum. adc kanal girişlerini tamponladım ve devreyi deneme aşamasında tampon opampı takmadan işlemciyi çalıştırdım ve okuttuğum ADC kanallarına sinyal girmemesine rağmen nedense 600 küsür adc değeri ekrana çıktı. yazılımla ADC okumadan önce değişkenleri sıfırlamama rağmen bu değer hala orada duruyordu, işlemcinin ADC kanallarını voltmetre ile ölçtüm ve 100mV a yakın değer okudum, şimdi kafama takılan okuduğum bu V değeri nedir? ve neden işlemcinin ADC kanallarından okunan değer 0 değil, sizce ben nerede hata yapmış olabilirim. :(
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

jrcapa

ADC pinlerini dirençle eksiye çektiniz mi? pinler boştaysa o tür gerilimler oluşabiliyor.

Hattusa

Alıntı yapılan: jrcapa - 21 Ekim 2012, 15:56:19
ADC pinlerini dirençle eksiye çektiniz mi? pinler boştaysa o tür gerilimler oluşabiliyor.

usta ADC girişlerinde buffer tampon var ve bu tampon çıkışını GND ye şaselemem gerekmediğini düşünüom, acaba yanlışmı düşünüyorum
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

F.T

bende opamp üzerinden düşük seviyeli bir gerilimi yükseltip pice vermiştim.ölçüm  uçları boşta iken picte değer okuyabiliyordum.buna benzer bir durumdanmı bahsediyorsunuz.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.