Yük altında 12v pil gerilimini ölçmek ?

Başlatan Pyrodigy, 24 Mayıs 2012, 18:26:56

Pyrodigy

Arkadaşlar
1 veya 2A yük altında 12 Voltluk kuru pilimin durumunu ölçmem gerekli. ADC,gerilim bölücü vs deneyimim olmadı yol gösterirseniz memnun olurum.
Bu arada ölçülen voltaj (0 - 3v) Voltluk değerlere bölünmesi gerekiyor.
Yani tam dolu akü 13.8 Volt ise 3.3 Volt göstermeli
Tam boş olduğunda 0Volt veya benzeri birşey
Saygılar, sevgiler
Persistance is the name of the game in this business....

Klein

Tam boş olmasından kasıt 0V ise  10K/3K18 ( E48 sınıfında standart 3K16 mevcut)  dirençli gerilim bölücü ile halledersin.  Eğer tam boş olmasından kasıt 0V olması değil de 12, 11 , 10 V gibi değerler ise, ona göre hesabın yeniden yapılması ve ilave offsetleme devresi gerekir.

Pyrodigy

#2
Alıntı yapılan: Klein - 24 Mayıs 2012, 18:34:19
Tam boş olmasından kasıt 0V ise  10K/3K18 ( E48 sınıfında standart 3K16 mevcut)  dirençli gerilim bölücü ile halledersin.  Eğer tam boş olmasından kasıt 0V olması değil de 12, 11 , 10 V gibi değerler ise, ona göre hesabın yeniden yapılması ve ilave offsetleme devresi gerekir.
Selam
Tam boş aküden kastım 9 Volt. Gerilim bölücü hesabını nasıl yaptın?
Dolu hali 13 Volt 3.3 Volt ise
Boş hali 10 Volt 0v hesabına göre gerilim bölücü bir devremi yapmam daha sağlıklı olur? Bu işler için hazır entegrelermi var? Ne tavsiye edersin?
Daha sonra iş PIC in ADC si ile ölçüm yapmada değilmi? En uyuz olduğum, uzak durduğum konu ADC ydi, bu işle dalıcaz galiba ona! Hadi bakalım hayırlısı.
Edit: Araştırırken bir link buldum, yük altında pilin voltaj değerlerini gösteriyor.
Pil Yük altında %100 doluyken 12,57 volt, %20 haldeyken 11.73 volt gösteriyormuş.
http://www.rpc.com.au/products/services/faq-info/soc-monitoring.html
Pilin tam dolu ve boş aralığı 13 volt ile 11 volt olarak alınabilir.
Persistance is the name of the game in this business....

Pyrodigy

Gecenin ilerleyen saatlerinde şöyle bir kaynak buldum detaylı incelemedim ama gayet güzele benziyor.
http://picprojects.org.uk/projects/vmon/
Persistance is the name of the game in this business....

OG

Gerilim bölen direnç ile voltaja baktığınızda 13 Voltu 3,3V görecekseniz 10V'u da 2,53V görürsünüz. Program içinde ölçülen voltaj değerlendirilip sizin "sıfır" kabulunuz olur.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

tekosis

Alıntı yapılan: OG - 25 Mayıs 2012, 06:22:44
Gerilim bölen direnç ile voltaja baktığınızda 13 Voltu 3,3V görecekseniz 10V'u da 2,53V görürsünüz. Program içinde ölçülen voltaj değerlendirilip sizin "sıfır" kabulunuz olur.
bence de gerilimi bölmek için bu kadar uğraşmanıza gerek yok. misal olarak gerilimi 5'e bölün, adc den okuyun. sonra onu yazılım içerisinde kendiniz değerlendirin. bu şekilde yapmanız daha sağlıklı olur.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Pyrodigy

Teşekkür ederim cevaplarınız için.
Şimdi yapacağım işlemi özetlersek. 13 Voltluk bir gerilimi maksimum olarak baz alırsam, ve bu gerilimi voltaj bölücü ile 3.3v seviyesine düşürdüğümde (aynı zamanda bu değer benim referans değerim oluyor) bu seviyenin altına her birim indiğimde (voltaj bölücü için kullandığım direnç değerleri oranında) yazılımsal olarak tespit edip ona göre işlem yapacağım. 
Umarım doğru anlamışımdır.
Verdiğim linkte güzel bir çalışma var kaynak kodlarıyla birilikte.
Persistance is the name of the game in this business....

OG

Neden 3,3V?, Sistemin 3,3V mu çalışıyor?

Sistem 5V ise, o değeri 4,5V gibi daha yukarı çekersen çözünürlüğün artar.

Yalnızca 2 direnç alacak ve 12V'a seri bağlayacaksın ama düşük toleranslı olmalı ve bir zener alacaksın. 5K gibi tornavida ayarlı çok turlu trimpot işini kolaylaştırır. Zener, orta uç ile GND arasına koruma (5V1 veya 3,3V sistemine göre)

Dirençleri öyle sececeksin ki dış iki uca 12V'u verecek ve orta uçta 4,5V  ( veya 3,3V ) alacaksın veya trimpot ile ayarlayacaksın. İlla 4,5V (3,3V) da şart değil değer farklı olabilir bunu programda ayarlarsın ancak max voltaja (5V /3,3V) ne kadar yakın olursa ADC çalışma aralığın o kadar yüksek olur. Daha iyi sonuç alırsın, daha kolay değerlendirme yaparsın.

Not: Seçilen dirençlerin değerleri birkaç kiloohm u geçmemeli, çünkü ADC'nin doğru ölçüm yapmasını direk etkiler.

Linkdeki devreye takılma, güzel yapmış, 2 renkli led ile görsellik kazandırmış, seni ilgilendiren o ise tamam ama esas amacın ne ise program ona göre düzenlenir.

Program da kolay.

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Pyrodigy

Alıntı yapılan: OG - 25 Mayıs 2012, 10:16:51
Neden 3,3V?, Sistemin 3,3V mu çalışıyor?

Sistem 5V ise, o değeri 4,5V gibi daha yukarı çekersen çözünürlüğün artar.

Yalnızca 2 direnç alacak ve 12V'a seri bağlayacaksın ama düşük toleranslı olmalı ve bir zener alacaksın. 5K gibi tornavida ayarlı çok turlu trimpot işini kolaylaştırır. Zener, orta uç ile GND arasına koruma (5V1 veya 3,3V sistemine göre)

Dirençleri öyle sececeksin ki dış iki uca 12V'u verecek ve orta uçta 4,5V  ( veya 3,3V ) alacaksın veya trimpot ile ayarlayacaksın. İlla 4,5V (3,3V) da şart değil değer farklı olabilir bunu programda ayarlarsın ancak max voltaja (5V /3,3V) ne kadar yakın olursa ADC çalışma aralığın o kadar yüksek olur. Daha iyi sonuç alırsın, daha kolay değerlendirme yaparsın.

Not: Seçilen dirençlerin değerleri birkaç kiloohm u geçmemeli, çünkü ADC'nin doğru ölçüm yapmasını direk etkiler.

Linkdeki devreye takılma, güzel yapmış, 2 renkli led ile görsellik kazandırmış, seni ilgilendiren o ise tamam ama esas amacın ne ise program ona göre düzenlenir.

Program da kolay.
Cevap için teşekkürler, kullanıdğım rf modülün gömülü ADC si var direkt bilgileri ondan alırım diye hesap ettim 3.3v ile çalışmasını o yüzden istedim ama olmazsa harici bir PIC ile 5v ile çalışmasını sağlayabilirim. Burada önemli olan mantığını kavramaktı onuda kavradım sayılır.., yazılım işi daha basit gibi geliyor...ADC ile ilk denemem olucak bakalım hadi hayırlısı
Saygılar sevgiler
Persistance is the name of the game in this business....

OG

5V ilavesine gerek yok 3,3V yaparsınız.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Pyrodigy

Herkese tekrar merhaba
ADC ile ilgili Yaşadığım sıkıntımı paylaşmak istiyorum.
Kullandığım devre budur.



Okuma yaparken okuduğum değerler ile olması gereken değerler arasında fark olduğu gibi, giriş voltajı tam 10V olduğunda analogdan aldığım data değeri 0x03 oluyor. 9.98 Volta ve daha aşağısına indirdiğimde 0xFF den tekrar tur atlayarak aşağı iniyor.
Bunun sebebi ne olabilir acaba? Devreden zeneri çıkarmama rağmen sorun aynı. Kullandığım denetleyici 16f1526.
Persistance is the name of the game in this business....

OG

PC817 yi analog değişim sezmek için geniş bir bölgede kullanamazsınız. Belki birkaç 100mV değişim (değerden emin değilim atmasyon değer) çıkışa analog olarak yansır. Bu bölgenin de transger fonksiyonu doğrusal olmayabilir.  Geri taraf ya tam H ya tam L olarak alınır.

Ayrıca bu analog değişimin algılanabilmesi için LED'in ve çıkış tarafının direnç kombinasyonu çok dikkatli hesaplanmalı.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

JKramer

Galiba PC817, sadece pilden gelen gerilimi anahtarlamak için konulmuş. Öyleyse çıkıştaki tranzistörde gerilim düşümü olacağı da hesaba katılmalı. "0xFF'den tekrar tur atlayarak aşağı iniyor" kısmını anlayamadım, kod koyarsanız daha rahat yardımcı olunabilir.

Pyrodigy

#13
Alıntı yapılan: OG - 06 Temmuz 2012, 16:10:17
PC817 yi analog değişim sezmek için geniş bir bölgede kullanamazsınız. Belki birkaç 100mV değişim (değerden emin değilim atmasyon değer) çıkışa analog olarak yansır. Bu bölgenin de transger fonksiyonu doğrusal olmayabilir.  Geri taraf ya tam H ya tam L olarak alınır.

Ayrıca bu analog değişimin algılanabilmesi için LED'in ve çıkış tarafının direnç kombinasyonu çok dikkatli hesaplanmalı.
Hocam PC817 yi sürekli toprağa sürülmesin pilden yemesin diye anahtarlama görevi yapsın diye koydum. PC817 nin kayıpları önemsiz zira okunacak değerler hassas değil.
Hocam senin daha önce beni uyardığın gibi R1 ve R2 dirençlerini düşük ohm lu koymadım. Acaba etkilermi bukadar?
Alıntı yapılan: JKramer - 06 Temmuz 2012, 16:21:04
Galiba PC817, sadece pilden gelen gerilimi anahtarlamak için konulmuş. Öyleyse çıkıştaki tranzistörde gerilim düşümü olacağı da hesaba katılmalı. "0xFF'den tekrar tur atlayarak aşağı iniyor" kısmını anlayamadım, kod koyarsanız daha rahat yardımcı olunabilir.
Tur atlıyor derken şöyle bir durum oluyor. Giriş voltajı tam 10 Volt iken analogdan okuduğum değer 0x03 iken 9.98 Volta indrdiğimde 0xF8 gibi alakasız bir değer okuyorum.
ADC ile ilgili Kodlarım şöyle;
PIC için 1MHz dahili OSC kullanıyorum.Sadece RB0 kesmesi aktif. Kesme içinde ADC okuyorum. ADC için referansı VDD aldım.ADC clock select ise FRC olarak ayarladım. Aşağıdaki kod ilk SETUP kısmı burada portları felan ayarlıyorum. Daha sonra ADC loop ile okuyorum.
;İLK SETUP KISMI
	   BANKSEL 	ANSELA       
	   CLRF  	ANSELA  
	   BANKSEL 	TRISA       
	   clrf 	TRISA       
;	   BANKSEL 	PORTA       
;	   CLRF  	PORTA          
;	   BANKSEL 	LATA          
;	   CLRF  	LATA       
;FVR İPTAL
		BANKSEL	FVRCON
		clrf	FVRCON
;adc setup
		BANKSEL ADCON1 ;
		MOVLW 	b'11110000'	; 
		MOVWF 	ADCON1 		;Vdd and Vss Vref
		BANKSEL TRISA ;
		BSF 	TRISA,0 	;Set RA0 to input
		BANKSEL ANSELA ;
		BSF 	ANSELA,0 	;Set RA0 to analog
		BANKSEL ADCON0 ;
		MOVLW 	B'00000001' 
;Select channel AN0
		MOVWF 	ADCON0 		;Turn ADC On
		movlb .0
		CALL 	delay10ms


Daha sonra KESME içinde ADC loop ile ADC bilgisini alıp USART ile gönderiyorum.
adcloop:
		movlb	.0
		CALL 	delay10ms	;Acquisiton delay
		BANKSEL	ADCON0
		BSF 	ADCON0,ADGO ;Start conversion
		BTFSC 	ADCON0,ADGO ;Is conversion done?
		GOTO 	$-1 		;No, test again
		movlb .0
		CALL 	delay10ms
		BANKSEL ADRESL ;
		MOVF 	ADRESL,W 	;Read upper 2 bits


		BANKSEL	PIR1
		btfss	PIR1,TX1IF	;check if transmitter busy
		goto	$-1		;wait until transmitter is not busy
		BANKSEL	TX1REG
		movwf	TX1REG		;and transmit the data


Bu arada okuduğum değerler ile hesaplarıma göre olması gereken değerler şu şekilde;

Persistance is the name of the game in this business....