Adc voltaj okuma sorunu

Başlatan muyat, 20 Şubat 2018, 08:30:41

muyat

Kullandıgım işlemci 16f88.
1 numaralı pinde 3k3 ve 1k1 dirençler gerilimi bölmek için  baglı.1k nın diger ucu şaseye ,3k3ün diger ucu da ayarlı güç kaynagının +ucunabaglı.

Ayarlı güç kaynagı 13 voltta iken 1 numaralı pinde 3 voltu görüyorum.Ve voltaj 10 volta düştüğünde buzzer ötsün şeklinde program yazdım.Voltaj 10 volta düşürünce 1 numaları pinde görülen deger 2.3 volt ve buzzer tam bu noktada güç kaynagına hiçbir yük baglı değilken elimle 10 volta düşürünce ötüyor.

Fakat bu işlemi güç kaynagının +ucuna 5wattlık bir ampül baglayıp denedigimde buzzer 10.7 voltta ötmeye başlıyor.Kararsız çalışıyor.Daha büyük ampül takılınca bu sefer de 11 voltun üstünde buzzer ötüyor.Bu kararsız çalışmanın nedeni ve çözümü nedir?

ete

Bu işi ayarlı güç kaynağı ile denersen sonuç doğru olmaz diye düşünürüm. Nasıl bir ayarlı güç kaynağı bilemiyoruma ama akım ve volta ayarlı bir kaynak ise bağladığın lamba nedeni ile güç kaynağı çekilen akımı korumaya çalışıp voltajı yükseltiyor olabilir.
Bunu sabit bir gerilim kaynağı ile denemelisin.

Normalde bağladığın lamba devreden akım çeker ve gerilimin düşmesine sebep olur. Kaynak yeterince güçlü ise oynama olmaması gerekir. Ama sende sanki voltaj yükseliyor gibi gözüküyor. Bu nedenle bende böyle bir yorum yaptım.
Ete

muyat

Ete hocam
Denemeyi ayarlı güç kaynagı ile yapıyorum.Güç kaynagı üzerinde maksimum akım degeri 3 amper yazıyor.Ama ben 0.5 amperlik ampül baglıyorum sadece. Voltajı elimle  düşürdükçe lambanın parlaklıgı azalıyor.Yani akım sabit değil.
Fakat ampül baglıyken  neden buzzer ötmesi gereken voltajın üstünden ötüyor onu anlamış değilim.Kesinlikle stabil çalışmıyor şu an.


ete

Peki ölçtüğün ADC nin referans gerilimlerini nereden alıyorsun?
Pek çok kişi bu konuda hata yapıyor.
ADC bir referans gerilimine bağlı olarak yapılan ölçüm işidir.
Örnek vermek gerekir ise sıklıkla yaptığımız gibi 5V luk bir gerilim ADC sisteminde 1023 ADC değerini üretir.
Ama ref gerilimini 2,5V yaparsak, bu sefer 2,5V luk bir gerilim 1023 değerini üretir. Bunu ayarlı oalrak adc ye girersen 0-2,5V aralığında ADC değerin 0-1023 olarak değişerek 2,5V dan sonra 5V ta kadar hep 1023 verir.
Şayet ayarladığın gerilimden bir referans alıyor isen eşik noktan ayarladığın voltaja göre değişik olacaktır.
Kısaca çok yönlü bir işi basit bir iki parametre ile izah etmek yada onun hakkında yorum yapmak çok zor.
İşin doğrusu için kurduğun düzeneği tam olarak açıklamalısın.
PİC nereden kaç volt ile besleniyor bunuda bilmek lazım. Referans gerilimleri de diğişiyormu bunları bilmek lazım.

Sıklıkla yapılan bir başka hatıyada açıklayayım yeri gelmiş iken. Pil ile beslenen devrelerde pilin voltajınıda aynı devre ile ölçmeye çalışıyorlar ve besleme voltajını referans gerilimi olarak kullanıyorlar.
Diyelimki lityum pil kullanıyorsunuz. Pil dolu iken voltajı 4V seviyesindedir. Bununla pili ölçtüğün zaman ref voltajında 4v olacağı için aldığın ADC değeri 1023 olur. Pil dolu dersin.
Pil kullanılıp 2,5V ta düştüğünde ref geriliminde 2,5V olacağı için aldığın ADC değeri yine 1023 olur ve yine pil dolu dersin. Halbuki pilin boşalma noktasına geldi. Yanlışlık burada halbuki yeni nesil işlemcilerde bulunan FixedVoltajReference modülünü ADC ye referans voltajı olarak kullanırsanız o zaman pilin voltajını her voltaj seviyesinde doğru ölçmek mümkün olacaktır.
Yada dışarıdan sabit bir referans gerilimi kullanmanız gerekir.

Ete

muyat

Ete hocam ilgili kod ve şema aşagıdadır.16f88 var.Ve programda sadece ilgili kısmı kopyalayıp yapıştırdım.En sonuna goto voltajoku diye yazdım ama program aslında buraya 1 kez ugruyor.
AN2  Pini analog tanımlandı...
1k nın diger ucu şaseye baglı
3knın diger ucu ise 9-16 volt arasında değişiyor...
Ben 9-16 aralıgını 1024 kabul ettim.Ve bir alt noktası belirleyip alt noktasını word olarak tanımladım.ALT'ın alabilecegi maksimum deger zaten 1023 .Voltaj Alt noktasına düşünce buzzer ötüyor ve tekrar ötmesi için bu sefer 10 volt degil de en az 12volt gelmesi gerekiyor.
Sonucun bu  alt noktasından büyük veya küçük olup olmamasını kontrol ettirek işlem yapıyorum.Biraz karışık ama yaptıgım şeyin dogru olmadıgına da eminim...
Hata nedir?Giriş voltajı bazen değişebilecegi için ve pic girişinin yanmaması için degerleri bu şekilde yaptım.İstedigim şey giriş voltajı değişken ve sadece 10 volt oldugunda buzzer ötcek ve ona göre başka bir pini tetikletcem



@ __config _CONFIG1, _INTRC_IO & _WDT_ON & _LVP_OFF & _CP_ALL &_MCLR_OFF

CMCON=7      'komparatörler kapalı
DEFINE OSC 4

DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
ANSEL  = %00000100  ' AN2 ANALOG, DİĞERLERİ DİJİTAL,
OPTION_REG.7=0
ADCON1=%10000000
ADCON0 = %11101101  ' internal A/D module RC oscillator         
OSCCON=%01101110        'İNTERNAL OSİLATÖRÜ 4mhz' E AYARLA
SYMBOL BUZZER=PORTA.1
TRISA=%11111101         '
TRISB=%11000000
PORTB=0
PORTA=0
C VAR WORD
ALT VAR WORD
ALT2 VAR WORD
ALT3 VAR WORD
I VAR WORD
ZAMAN VAR WORD
VOLT VAR BYTE
SONUC VAR WORD
SAY VAR BYTE
DEGER var WORD
ORTALAMA VAR WORD
TOPLAM VAR WORD




VOLTAJOKU:
ALT=465
ALT3=550
TOPLAM=0
for say=1 to 10
ADCIN 2,DEGER
TOPLAM=TOPLAM+DEGER
pauseus 20
NEXT SAY
SONUC=TOPLAM/10   'SONUC=0-1023 ARASI




if SONUC <= ALT then             'Voltaj burda düşüyor  10 volta   
HIGH BUZZER
PAUSE 25
LOW BUZZER


FOR c=0 to 2000      'anlık voltaj düşmesi

GOSUB SAYDIR
IF (SONUC > ALT3) AND (SONUC <= 1024) Then     'voltaj 12yi geçerse 550
HIGH BUZZER
PAUSE 25
LOW BUZZER
GOTO SON5
ENDIF 

PAUSE 3
NEXT

SAYDIR:
TOPLAM=0
for say=1 to 10
ADCIN 2,DEGER
TOPLAM=TOPLAM+DEGER
pauseus 20
NEXT SAY
SONUC=TOPLAM/10
SON5:
GOTO VOLTAJOKU




[IMG]https://resmim.net/f/yIHIFj.jpg[/img]

ete

Kodlarda genel anlamda sorun yok ufak tefek kusurlar var ama bu sorunu yaratacak şeyler değil.
Ama asıl soruma cevap alamadım. Pic yada bu devre genel olarak nereden besleme alıyor.?
Ayı ayarlı güç kaynağı çıkışı aynı zamanda beslemen ise bu sonucu alman normal

Ete


muyat

#6
Hocam devre direk aracın aküsüne baglancak.Ayrı bir besleme veya güç kaynagı olmayacak...
Kamyonette  bazen uyurken aracın iç aydınlatmaları komple yanıyor.Bazen de aracın teyibi vs açılıyor...
Akü voltajı 10 volta düşünce buzzerla uyarmasını istiyoruz.Uyarınca ışıkları kapatcaz veya aracı biraz çalıştırıp akünün şarj olmasını saglıcaz
Ama ben bu deneyi ayarlı güç kaynagı ile yaptıgımda sonuç beni şaşırtıyor.
Güç kaynagında  sadece devre baglıyken yazılımda 10 voltta uyarı veriyor.Buraya kadar sorun yok.
Ama ben güç kaynagına ampül vs baglayınca kesime girme voltajı 10 voltun üstüne çıkıyor.Yani 10 voltta değil 11 voltta buzzer ötmeye başlıyor.
Dolaysıyla şu an aküden ışıklarla  1 amper çekiliyorsa ,akşam belki bütün ışıklar açıldıgında çekilen akım artıcak ve kesme voltajı yine değişmiş olcak..
Bu denemeyi ömrü biraz dolmuş hızlı boşalan mini kuru aküde de yaptım.12v Akünün + ucuna birbirine seri 4-5 diyot ekleyerek besleme voltajını 10.8 voltlara kadar düşürüp ampül bagladıgımda yine aynı sonucu veriyor.Buzzer 10 voltta ötmesi gerekirken akü o an devreden başka farklı bir yükü de besliyorsa uyarı vercegi voltaj değişiyor.
O zaman bu devrenin bu yazılımın da  bizim için bir anlamı kalmıyor ki..Tam verimli olarak kullanmamış oluyoruz.Ben 100 mili amper de çeksem,10 amper de çeksem 10 voltta uyarı vermesini istiyorum.Çünkü çekilen akım her zaman aynı değil.


ete

Sabahtan beri sana anlatmaya çalıştığım olayı yaşıyorsun.
Akü gerilimi düştükçe referans geriliminde düşer ve sağlıklı ölçüm yapamazsın. Tavsiyem 16F1827 veta FVR si olan bir başka işlemci kullanarak bu işi yapman yönünde. Ancak bu şekilde sağlıklı ölçüm yapabilirsin.
FVR sabit bir referans gerilimi çıkartır ve bu çıkarttığı voltaj programdan set edilerek ADC ye ref gerilimi olarak verilebilir. Akü voltajı ne kadar değişirse değişsin ref voltajın değişmeyeceği için sağlıklı gerilim ölçümü yapabilirsin.

Ete

muyat

Hocam peki 3k3 ve 1k1 direnci iptal edip yerine TL431 kullanirsak olur mu?Ve referans voltajim bu durumda 5v olarak mi secmeliyim yine?

Maxim

ete hocam niye öyle olsunki benmi anlamadım tam?
işlemcimizde 7805 gibi bir regülatör yokmu? referansımızda bu olacak yani adc referansımız beslemenin kendisi (+5volt)
dolayısı ile sistemimiz 7 voltun üzerinde düzgün çalışacaktır.
akü, 7-8 volta inse bile bizim beslememiz sabit 5 volt kalacak zaten.
yani bana göre aküyü 7 ile 24 volt arası güzel güzel ölçebiliriz.

hatta ben olsam gerilim bölücü olarakta 47k ve şaseye 10k + 100nf kullanırdım
girişe 24volt geldimi adc girişine 4.21 volt girer
girişe 12volt geldimi adc girişine 2.10 volt girer
girişe 8 volt geldimi adc girişine 1.22 volt girer

baya normal bir voltmetremiz olur
sonra şu voltajın altında led yak, alarm çal işin en kolayı zaten

ete

Maxim,
Dediklerin teorik olarak doğru ancak gerçekte böyle olmuyor. Akü voltajı düştükçe eşik noktası dediğimiz sizin set noktalarınız değişiyor. Bunu çok defa tecrübe ettim. Bunun sebebini yada mantığını izah edecek kelime bulamıyorum ama böyle oluyor maalesef.
Daha sonra bu tür sistemlerde FVR sistemine geçtim bütün sıkıntılar sona erdi.
Denemesi bedava deneyen görür.
Burada farklı bir durum olabilir çünki akü voltajı bitmiş halde iken zaten 9V verecek gibi gözüküyor. Anacak 10V dan sonra 12V luk bir akü bitmiş durumdadır. Buna en ufak bir yük bağlarsanız voltajı sıfırlanır. Voltajın 10V olması sizi yanıltmasın. Aslında sanal bir voltaj var orada.  Siz yinede dediğim sistemden şaşmayın zaten FVR sistemini bu gibi haller için yapmışlar. Demekki var bir sorun bu işte.

Ete

muyat

Ete hocam
Açıkçası mevcut işlemciyi değiştirmek istemiyorum.
Peki FVR yokken bu iş nasıl yapılıyordu?TL431 ile deneyiminiz oldu mu?

ete

En son yaptığım sistemde 11,6V luk bir lityum pil ile beslenen bir devreye 5V luk bir regüle takarak  pic'i beslemiştim.
Bu sistem da istediğim gibi çalışmadı maalesef. Yapmaya çalıştığım pil voltajının 9V dan daha aşağıya düşmemesini sağlamak idi. Ancak pek çok kere denememe rağmen pil 7V lara düşüyor. Sebebini anlamak mümkün değil. Ben en son olarak şöyle yorumladım.
- Lityum pil hücre başına ortalama 3,7V verir. Bu voltaj 3V un altına düşünce pil bitmiş sayılır. Onun 2,9V olması orada 2,9V luk bir gerilim olduğunu göstermez. Bu yüksüz ölçümde görüleblecek bir gerilimdir. En ufak yüke bindiği zaman bu voltaj bile anlık olarak sıfırlanabiliyor. Tabiiki yükün çektiği akıma bağlı olarak. Bu nedenle pil bittiğinde hala üzerinde voltaj varmış gibi düşünmemek gerekir. Voltaj var kabul ederseniz onu kullanılabilir voltaj olarakda görmeniz gerekir. Bu durumda neden adamlar bu voltajdan aşağı düşürmeyin diyorlar diye düşünmek gerekir.
Kısaca voltaj regülatörü (TL431 de bir regülatördür) ile bu sorunun aşılması pek mümkün değil diyorum. Yada şöyle söylemek daha makul olur. TL431 ile bu işi yapmak mümkün ama akünün voltaj seviyesini 11V dan aşağı düşmesin şeklinde uygulaman gerekir. Bu durumda hala aküde voltaj var ve regüle devren çalışır kabul edilebilir.

Benim yorumum bu şekilde. Denemesi bedava.
Ete


mehmet

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

muyat

Mehmet Bey
10v iken 2.52volt ve 13v de 3.2 voltu tl431 olmadan da elde edebiliyoruz ama tam olarak fark nedir

Powered by EzPortal