Pic ile Akü Ölçmek

Başlatan outlaw57, 21 Ekim 2011, 10:25:12

outlaw57

Arkadaşlar,

12V akümün kutupları arasına bir direnç bağlasam ve direncin eksi tarafından pic ile ADC ölçüm yapsam ve referans voltajı da aküye bağlı olan ve aynı zamanda pici de çalıştıran 7805 in regüleli 5V u olsa. Akünün seviyesini pic ile ölçebilirmiyim?

Saygılar,

est32

önce bu akünün nerede olduğunu bilmek iyi olacaktır. Şayet otomobil üzerinde ise akü ölçümünü motor çalışır vaziyette iken, hatta garanti olsun diye gaz sonuna kadar basılı iken(şarj durumu yani) en yüksek voltaj değerini ölçmek gerek.

Güç kaynağı ise de aynısı geçerli, şarj sırasında ölçüm alınmalı ve en yüksek değeri bulunmalı.

İşlemci pinlerine 5v tan fazla gerilim gelirse analog kanal zarar görebilir.

Önerim;
akünün en yüksek haldeki voltajını ölçtük,diyelim ki 15 volt çıktı.
Yüksek değerli çok turlu bir trimpot aldık, örnek 1M ohm olsun.
Trimpotun en dış bacaklarını akünün uçlarına bağladık.
Akü 15 voltta iken trimpotun orta bacağından tam 5 volt alıncaya kadar(volt metrenin bir ucu da eksi kutba bağlı) çevirdin.
Yani 15 volt pice 5 volt olarak gelecektir,15 voltun altına indikçe pice gelecek voltaj da azalacaktır.
Şimdi hesap yapalım; 1023 ham değeri 15 ise volt nedir?
volt= HAM*15/1023 yazılımı da bu.

outlaw57

Bir araç aküsü değil. Aslında aküden gelebilecek maksimum voltaj 15.5  minimumu da 11.5 olacak yani 11.5 olduğunda pic ile yük vermeyi keseceğim.(Aküyü korumak için)

Aşağıdaki gibi bir voltaj bölücü direnç kullanarak bir adc okuma yapmayı düşündüm. Olabilir mi acaba? Trimpot kullanmaktansa böyle bir yolu denemeyi düşündüm. Hatalımıyım acaba?


est32

değişen bişey yok aslında,trimpot da bahsettiğim şekilde kullanılırsa bir gerilim bölücü direnç olarak kullanılmış oluyor.
İster trimpot ile ister sabit dirençlerle yapılabilir.
demek istediğim şu;

ete

Bana kalırsa devrede gerilim bölücü ile birlikte kullanılan zener diyot sorun çıkartabilir. Hesabı yanıltır diye düşünüyorum.
Gerilim bölücü zener olmadan kurulmalı ve uygun volltaj bu şekilde sağlanmalıdır. Yoksa bölücünüz pic pinine 5,6V sağlıyorsa ve orayada bir zener takarsanız voltaj 5V ta düşebilir. Ama bu volta bir voltaj aralığında bu değerde kalır ve sizi yanıltır.

Zeneri oradan kaldırın ve orya gelebilecek maksimum voltaja uygun bir geirlim bölücü ayarlayın.

Ete

outlaw57

ETE hocam dediğiniz gibi yaptım teşekkür ederim kolay gelsin.

pwm.c

#6
aslında 2 transistör ve 2 dirençten oluşan akım aynası devresi  kullanarak ölçüm yapabilirsin. bu sayede gerilim bölücü dirençlere ve koruyucu zenere gerek kalmaz. gürültü sorunuda en aza iner.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

outlaw57

pwm.c ,

nasıl yapabilirim akım aynasını bir örnek var mı elinde?


pwm.c

#8
Alıntı yapılan: outlaw57 - 27 Ekim 2011, 16:22:47
pwm.c ,

nasıl yapabilirim akım aynasını bir örnek var mı elinde?

Yazdığım yazıda google linki vermiştim ama yinede örnek göstereyim.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

inventor

pwm.c  nin bahsettiği akım aynası uygulaması kuplaj devrelerinde sıkça kullanılır. Eğer hassas  bir ölçüm yapılacaksa bu noktada bipolar ( bildiğiniz npn-pnp ) transistörden vazgeçmeniz gerekir. Bunun nedeni bipolar transistörlerin beta kazançlarıdır.
Bunun için MOS transistörler kullanılır. Moslar da beta akım kazancı sorun değildir. Tam iletim durumunda kısadevreye yakın iletkenlik sağlarlar. Bu nedenle aynı seri iki mos transistör birbirinden farklı değil kabul edilir. ( Çakma olmamamk şartıyla )

Kısaca ; pwm.c nin bahsettiği sistemi moslar la yaparsanız kesin sonuç alırsınız.
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

kgguler

#10
EteHocam pic ile akü degerini ledler ile göstermek için aşağıdaki dosyayı hazırladım.Nerelerde proplem var ,inceleyebilirmisiniz.

ete

Programın yanlarına eksikleri ve yanlışları yazdım. Program bu hali ile doğru biçimdedir.

Ete

 @ DEVICE pic16f88,xt_osc,wdt_on,pwrt_on,protect_off,mclr_on   
  Define OSC 4      '******çalışma frekansı belirtilmeli                                                     
    PORTA=0
    TRISA=%00000001  '*****5 bit yazılmış 8 olacak
    portb=0          '***********bu komut eksik yazılmış
    TRISB=%00000000
    DEFINE OSC 4
    ANSEL=00000001
    cmcon=7   
    ADCON1.7=1       '*********************** bu yoktu sağa yaslı sonuç (0-1023) için gerekli
    DEFINE ADC_BITS 10'*************** '8 bit yazılmış idi 10 bit yaptım
    DEFINE ADC_SAMPLEUS 100
   
    HAM var word
    HAM=0
    pause 250          '**************************açılış gecikmesi verilmemiş
     
   
BASLA:     
    ADCIN 0,HAM
   if HAM>512 and ham<600 then gosub YIRMI    'aralık verme yanlış  bu satır aşılamıyor gosub olmalı
   IF HAM>601 and HAM<750 THEN gosub KIRK
   IF HAM>751 ANd HAM<800 THEN gosub ALTMIS
   IF HAM>801 AND HAM<950 THEN gosub SEKSEN
   IF HAM>951 AND HAM<1023 THEN gosub YUZ
   IF HAM<512 then PORTB=0                    'bu satır eklenmeli
   PAUSE 50                    'kısa bir gecikme uygun olur.
   GOTO BASLA
 
YIRMI: 
PORTB=%00000001
return 
                         'goto basla yerine return yazılmalı
KIRK:
  PORTB=%00000011
return

ALTMIS:
PORTB=%00000111
return

SEKSEN:
  PORTB=%000011111
return

YUZ:
  PORTB=%000111111
return
  END

kgguler

Allah sizi başımızdan eksik etmesin.Çok teşekkür ederim.Simülasyondan sonra geçek devrede deneyeceğim.

zoptrik

if HAM>512 and ham<600 then gosub YIRMI    'aralık verme yanlış  bu satır aşılamıyor gosub olmalı
   IF HAM>601 and HAM<750 THEN gosub KIRK
   IF HAM>751 ANd HAM<800 THEN gosub ALTMIS
   IF HAM>801 AND HAM<950 THEN gosub SEKSEN
   IF HAM>951 AND HAM<1023 THEN gosub YUZ
   IF HAM<512 then PORTB=0                    'bu satır eklenmeli

hocam burada ENDIF kullanmamışsınız sıkıntı yaratmaz mı? GOSUB a özel bir kullanım mı bu?
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

ete

If komutu içerisinde şart doğru ise ve buna karşılık birden fazla komut vereceksiniz komutları verip endif ile if komut çevrimini sonlandırmanız gerekir.
Örnek;
IF A=1 THEN
   PortB.0=1
   C=1
ENDIF

Ama if komutunda şert doğru ise buna karşılık tek komut verecekseniz endif'e gerek yoktur.
Örnek;
IF A=1 THEN C=1

Anlayacağın konunun Gosub ile alakası yok. Tek komut Gosub olduğu için o şekilde yazdım.

Ete

Powered by EzPortal