avatar_elektro77

3 led ile batarya seviyesi göstergesi

Başlatan elektro77, 17 Haziran 2023, 12:27:55

elektro77

Batarya seviyesi göstergesi için aşağıdaki algoritmayı çalıştırdım. Fakat bu algoritmadan daha kısa ve ve daha doğru bir algoritma nasıl olmalıdır? Birde 4.2 ile 3.7 volt arasını  ölçtüğüm için 860 ile 737 arasında çok dar bir ham değeri oluşuyor. Bunu daha geniş bir çözünürlüğe yayabilir miyiz?
ADCIN 0,HAM

IF HAM>820 AND HAM<860  THEN 
LED1=1:LED2=1:LED3=1
ENDIF

IF HAM>757 AND HAM<820  THEN
LED1=0:LED2=1:LED3=1
ENDIF 

IF HAM>737 AND HAM<757  THEN 
LED1=0:LED2=0:LED3=1
ENDIF

IF HAM<737  THEN 
LED1=0:LED2=0:LED3=0
ENDIF
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Kod'un kısalacak tarafı yok. Şayet 10bit ADC kullanacaksan yapacak bir şey yok. Ama yinede söylenecek bir iki konu var.
Mademki max. voltaj 4,2V o halde bazı işlemcilerde bulunan dahili FVR modülünden ADC için bir ref voltajı seçersin mesela 4,048V gibi. Sonra 4,2V luk gerilimi bir gerilim bölme işlemi ile 4,048 seviyesine düşürüp ADC ye girersin. Böylece okuma çözünürlük aralığın 1023 seviyesine yükselir.
Bu durumda aralıkları tespit etmen daha kolaylaşır. Üstelik bir pil voltajı ölçümün pilin boşalmasından etkilenmeyeceği için hassasiyetin artacaktır.

16F1827, 12F1822, 16F1825 gibi işlemcilerde bu modül bulunmaktadır.

Ete

elektro77

Alıntı yapılan: ete - 17 Haziran 2023, 12:53:07Kod'un kısalacak tarafı yok. Şayet 10bit ADC kullanacaksan yapacak bir şey yok. Ama yinede söylenecek bir iki konu var.
Mademki max. voltaj 4,2V o halde bazı işlemcilerde bulunan dahili FVR modülünden ADC için bir ref voltajı seçersin mesela 4,048V gibi. Sonra 4,2V luk gerilimi bir gerilim bölme işlemi ile 4,048 seviyesine düşürüp ADC ye girersin. Böylece okuma çözünürlük aralığın 1023 seviyesine yükselir.
Bu durumda aralıkları tespit etmen daha kolaylaşır. Üstelik bir pil voltajı ölçümün pilin boşalmasından etkilenmeyeceği için hassasiyetin artacaktır.

16F1827, 12F1822, 16F1825 gibi işlemcilerde bu modül bulunmaktadır.

Ete

Hocam adc girişini picin VDD sine bağlayacağım. 4.2 volt ile çalışan bu devrede batarya seviyesi ölçümünde sorun olacağını mı söylüyorsunuz? Devredeki asıl amacım bir mosfeti açıp kapatmak. Ama pilin durumunu da görmek ve ona göre şarja takmak istiyorum. Bu şekilde bir kullanımda adc nin ölçülemeyeceğinden bahsedebilir miyiz?
12F1822 ile de çalışıyorum şu an ama bildiğim bir pic olan 12F675 te yukarıda bahsettiğim batarya durumunu ölçmeyi yapamaz mıyım?
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Pic beslemesi 4,2c iken adc girişine pili bağlarsan 1023 okursun. Pil 3,5v ta düştüğünde yine 1023 okursun çünki ref voltajında 3,5v olmuştur. Sonuç olarak pil kaç volt ise ref voltajında aynı olacağı için o voltaj daima sana 1023 değerini verecektir. Sana gerekli olan değişmeyen referans voltajıdır. Bu amaçla 12f1822 içinde işlemcinin besleme voltajından bağımsız ürettiği referans voltajı vardır. İşin çözümü bu voltajın ref voltajı olarak kullanılmasındadır.
Ete

mehmet

#4
.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

elektro77

Alıntı yapılan: mehmet - 17 Haziran 2023, 20:44:44Vref, 1.023V 1,024V seçilirse alttaki gibi bir
gerilim bölücü ile okunabilir.

https://tinyurl.com/2ca4s8tf
Bahsettiğiniz gerilim bolucu yöntemini 12f675 için onerdi iseniz malesef olmadı.
F675 ile gerçekten olmuyor. Elimde 12f1822 yoktu gelinceye kadar denemek için zaten pin numaraları aynı olduğu için 12f 1822 için yaptığım PCB ye f675 i taktım ama bir türlü calismadi. İlk acilista bir kere ADC okuyor ve bir daha okumuyor. Gerilimi ister yukselteyim ister dusureyim ayarladigim ham değeri yakalamiyor.
İçeride ne oluyorsa böyle oluyor anlamadım. Bir yoluda yok galiba.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

#6
.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

elektro77

#7
Alıntı yapılan: mehmet - 19 Haziran 2023, 23:30:59F675 de FVR modülü yok. GP1 den sabit
bir gerilim uygulamanız gerekli.
3.3V zener ve 1k-4.7k 470R - 1K arası direnç
ile gerilim bölücü oluşturun.
Bunu bu gerilimi GP1 bacağına uygulayın.
Ben GP0 için PCB olusturmustum. O yüzden çalışmadı demekki. Vref pini oldugundan haberim yoktu. Hıç pilli bir uygulama yapmamıştım. Tecrübe oldu.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

#8
.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

elektro77

#9
bit 7 VREN: CVREF Enable bit
1 = CVREF circuit powered on
0 = CVREF circuit powered down, no IDD drain
bit 6 Unimplemented: Read as '0'
bit 5 VRR: CVREF Range Selection bit
1 = Low range
0 = High range
bit 4 Unimplemented: Read as '0'
bit 3-0 VR3:VR0: CVREF value selection 0 ≤ VR [3:0] ≤ 15
When VRR = 1: CVREF = (VR3:VR0 / 24) * VDD
When VRR = 0: CVREF = VDD/4 + (VR3:VR0 / 32) * VDD
12F675 in yukarıdaki datasheet bilgilerine göre hesaplama nasıl yapılmalı?
bit 3-0 VR3:VR0: CVREF value selection 0 ≤ VR [3:0] ≤ 15
When VRR = 1: CVREF = (VR3:VR0 / 24) * VDD
When VRR = 0: CVREF = VDD/4 + (VR3:VR0 / 32) * VDD
Bu bilgilere göre hesap ne olmalı?
 VRCON değeri ne olmalı ve ham değerleri ne olmalı? Matematik iyi olduğum bir konu değil.  Devreyi 12F675 ile yapmayacak olsam da tecrübe olması açısından 12F675 ile çalıştırmak istiyorum.
Birde anlamadığım bir şey daha var. Vref girişi kullanıldığında adc yi yine GP0 dan mı gireceğiz. Çünkü Vref girişi artık Sabit olan Vref bilgisinin alındığı yer olmuyor mu?
12F675 için yazdığım program aşağıdadır. Simülasyonda çalışıyor görünüyor.
clear:pause 10
#config
 __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF
#ENDCONFIG
DEFINE OSCCAL_1K 1 
DEFINE OSC 4

TRISIO=%00001010
GPIO  =%00000000
GPIO=0
                                       
DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50 

OPTION_REG.7=1    ' pullup dirençler aktif  '1 ise devrede değil
CMCON = 7         ' Comparators off
ANSEL =%00100010  ' AN0 PİNİ ANALOG GİRİŞ 
ADCON0=%10000000  ' adc çözünürlüğünü 10 bit yaptık
VRCON =%00000000

HAM VAR WORD
SYMBOL BUTON=GPIO.3 
SYMBOL LED1=GPIO.0    
SYMBOL LED2=GPIO.2  
SYMBOL LED3=GPIO.4   
SYMBOL out=GPIO.5     

CLEAR
pause 200
'*******************************************************************************
BASLA:              

ADCIN 1,HAM


IF HAM>820  THEN 
LED1=1:LED2=1:LED3=1
ENDIF

IF HAM>757 AND HAM<820  THEN
LED1=0:LED2=1:LED3=1
ENDIF 

IF HAM>737 AND HAM<757  THEN 
LED1=0:LED2=0:LED3=1
ENDIF

IF HAM<737  THEN 
LED1=0:LED2=0:LED3=0
ENDIF


IF BUTON=0 THEN 
WHILE BUTON=0: WEND
OUT=1
PAUSE 200
OUT=0 
ENDIF


GOTO BASLA

end
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

#10
.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

elektro77

Alıntı yapılan: mehmet - 20 Haziran 2023, 09:44:18PIC12F675 'in CVREF modülü sadece
komparatör ile ilgili.
Analog ile alakalı değil.
Sayın @mehmet
Verdiğiniz bilgiler üstünkörü ve çok yetersiz!
Bir şeyler yazıyorsunuz ama sizin de bildiğinizden emin değilim.
Eğer yardım edecekseniz şöyle, @ete Hocam gibi düzgün ve açıklayıcı bir şekilde yazın. Ya da bana cevap yazmayın. Çünkü eksik bilgiler verdiğiniz için çok yanıltıcı ve uğraştırıcı oluyorsunuz.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

elektro77

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

Powered by EzPortal