acs712 hakkında

Başlatan ~ENES~, 14 Şubat 2015, 17:28:40

~ENES~

Çok tesekkur ederim hocam yarin deneyecegim biraz kafa yorarak işi hallederim insaAllah ..
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

~ENES~

Hocam dediğiniz gibi yapıyorum 20 kez sensörü okuyup ortalamayı abs komutu ile işaret işini hallediyorum fakat sonuç değişkeni bir türlü sabit durmuyor sürekli değişiyor... anlamadığım nokta biz zaten 20 tane rnek alıp bunların ortalamasını bunun için almıyor muyuz ? programda gözden kaçn biyer varsa söylerseniz minnettar kalırım size hocam ..program ektedir
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Sen neyin akımını ölçüyorsunda bu sonuç değişkeninyerinde durmuyor.?
Ortalama aldıktan sonra değerin çakılıp kalacağını sanıyorsan aldanırsın.
Bu değerin değişmesini sağlayan o kadar çok faktör varki sabit durması zaten mucize. Amaortalama almak bir nebze olsun durumu yumuşatıyor ama çok oynak sistemlerde çözüm değil maalesef.
Adc okuması sonuçta bir kondansatörün şarj edilip deşarj olma zamanını sayarak yapılan bir işlem. Çok sabit sistemlerde de iki okuma arasında okuma farkı olabiliyor.

Bu konuyu işlemiştik aslında kullanılan yöntemleri tartışmış idik. o konuyu bulup okumanı tavsiye ederim.

Ete

F®T

100 kerede okuyup ortalamayı alsan analog veride dalgalanmayı kesmek zor olur.Bence en güzel yöntem donanımsal olarak sinyali filitreleyerek yumuşatmak.hem işlemcidede kod yığılması olmaz.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

~ENES~

Bu donanimsal filtreleme nasil oluyordu ? Ne avantaj sagliyor ki bu durumlarda ? Bi konu acilmiati sanki forumda hatirliyorum ama bulamadim ? Ete hocam ölçecegim yük redüktör motoru AC  asenktron motor bitanede fan motoru var yine alternatif akimda calisan bunların çektiği akimi ölçüp ekrana basmam gerek ama bu iş baya ugrastiriyor insani
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

efor

Hocam konu ile ilgili sonuç ne oldu  ? acs 712 ile yapılmış ac ampermetre devresi örnek kodları varmıdır ? acs ile bende ugraşıyorum ama sonuç alamıyorum. bu entegreyi düzgün kullanabilen birisi yokmu ?

ilk sayfadaki açıklamalar gibi programda basit bir uygulama yaptım fakat, entegradan akım geçmez iken 2.5V veriyor bunu pic ile okuduğum zaman formüllere göre 0 da kalması gerekirken birler basamağında ne yazdığını göremiyorum ekranda çok hızlı değişim oluyor bu normalmidir hiçbir ac akım akmaz iken ?

Device 16F88
@CONFIG_REQ
@__CONFIG _CONFIG1, DEBUG_OFF & CPD_ON & LVP_OFF & BODEN_OFF & MCLR_OFF & WDT_OFF & CP_ALL & HS_OSC
@__CONFIG _CONFIG2, IESO_OFF & FCMEN_OFF

Xtal = 20

TRISB=%11100000
TRISA=%00001011

OPTION_REG.7=1               ;PULL UP DİRENCLER İPTAL
ADCON1=%10000000             ;ANALOG DEĞER 10 BİT , 
ADCON0=%00001001             ;FOSC/32 , ANALOG KANAL 2
ANSEL=%00000011              ; AN0 VE AN1 ANALOG DİĞERLERİ DİJİTAL İNPUT
CMCON=7

Declare Adin_Res = 10 ' 10-bit result required
Declare Adin_Tad = FRC ' RC OSC chosen
Declare Adin_Stime = 50 ' Allow 50us sample time

Declare CCP1_Pin PORTB.0


PORTA=0
PORTB=0

Dim adcvalue As Word
Dim dacvalue As Byte
Dim keypad As Byte
Dim veri1 As Byte
Dim veri2 As Byte
Dim veri3 As Byte
Dim sayi As Byte
Dim x As Byte

Dim deger As Float
Dim akim As Word
Dim oran As Word

Dim giris As Word
Dim cikis As Float 
Dim x1 As Float
Dim x2 As Float
Dim y1 As Float
Dim y2 As Float

Dim i As Byte
Dim say As Byte
Dim toplam As Word
Dim sonuc As Word
Dim ham As Word




Symbol dataout = PORTB.1
Symbol clkout  = PORTB.2
Symbol stbout  = PORTB.3

Symbol menu = PORTB.7
Symbol artir = PORTB.6
Symbol azalt = PORTB.5




anamenu:



toplam=0

For i=0 To 19
  ADCIN 0,ham
  toplam=TOPLAM+HAM
  DelayUS 100
Next
ham=toplam/20

ham=Abs(HAM-511)

  akim=ham

'HPWM 0,dacvalue,20000

GoSub ekran_amp


GoTo anamenu

ekran_amp:

x = Dig akim,0
GoSub AL
veri1 = sayi

x= Dig akim,1
GoSub AL
veri2 = sayi

x= Dig akim,2
GoSub AL
veri3 = sayi

GoSub ekranyaz
Return

ekranyaz:

SHOut dataout,clkout,1,[veri3,veri2,veri1]
stbout=1
DelayMS 10
stbout=0

Return



AL: sayi = LookUp x,[231,129,214,211,177,115,55,193,247,241,118,54] :Return


Maxim

pic ile acs712 arasında filtre varmı?
mesela seri 33k ve şaseye 100nf gibi?

efor

yok direk acs çıkışını pic e girdim.  birde o şekilde deneyim.

aceba 16f88 adc ayaralrını 20 mhz göre yanlışmı ayarlı diye araştırıyorum

F®T

Acs712 beslemen gayet stabil olmalı yoksa fazla oynama olabilir.Ayrıca 6 nolu pin de bulunan kapasitenin değerini 10nf tan 100 nf çıkarıp bir dene.Olmazsa 220nf yapıp dene.Oynamanın azalması lazım.Acs712 pdf sinde 10 nolu sayfayı incelemende fayda var.Ayrıca çip besleme ayağında en yakın noktasında 100nf olmalı.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

efor


yazılım ayarlarında mı sıkıntı var diye adc ye pot bağladım birler basamağı sayı değişimi oluyordu 33k + 100nf filtreyi takınca pottan gelen değerleri düzgün okudum ama acs çıkışı için bu filtre olmadı .


sistemden akım geçmez iken displaylerin birler basamagında herhangi bir sayı okuyamıyorum  (00?)
7 amperlik bir ac akım geçirdiğim zaman üç digitte çok hızlı sayılar oynuyor hiçbir sayıda okunmuyor. bukadar hızlı değişiminde olmasıda normal değil sanki ? 

ete

#25
Okumayı sık araşıkla yapıp ekrandaki bilgileride sık aralıklı değiştirirsen ekranda son hane biraz zor okunur.
Okumayı sık yap. Mesela 20 adet okuma yap hepsini topla sonra 20 ye böl. Ortalama al ve o değer ile hesap yapacaksan hesap yapıp ekrana bilgi ver. Ekrana verdikten sonra Pause 250 gecikme koy ki ekrandakiler biraz olsun sabit kalabilsin.

Acs sensör çıkışı akım çekilmediği konumda 2,5 v dur. Akım bir yönde çekilirken çekil akıma bağlı olarak 2,5 - 5 v aralığında çıkış verir. Akım diğer yönde çekilirken ise 0 - 2,5V aralığında voltaj verir bu sensör.
Akım çekiş yönünü bilmiyor isen  ham=ABS(512-Ham) şeklinde bir formül kullanarak hangi yönde çekilirse çekilsin sen sabit çekilen akım değerini alırsın digital olarak.

Ete

efor

Erol hocam yukardaki paylaştığım kod da sizin ilk sayfafaki  açıklamalarını za göre yaptım zaten . Sadece ekran gecikmesi yok . Bu şekilde similasyonda bahsettiğiniz gibi çalışıyor fakat gerçekte ekranda değer okunmuyor. 

Rf filtre yaptım . Yazılımda 20 kez topla bölme  de yaptım  . Abs komutunu kullanarak  hangi yön farketmeksizin 0 - 511 değerinde ayarladim.  Fakat hiç akım geçmezken 00?  .  AC  akım geçince tüm display ler de sayılar çok hızlı degisiyor.

Besleme olarak 2576 swicimod kullanıyorum . Pic 20 Mhz olması sıkıntı yaratır mı ?

ete

20 mhz. Sıkıntı yaratmaz.
Dc gerilimde akım mı ölçüyorsun yoksa Ac gerilimde akım mı ölçüyorsun.?
Anlattıklarına bakılırsa Ac gerilimde akım ölçtüğünü düşünüyorum. Doğru ise aldığın sonuç normal.
Sebebi çok açık. Ac gerilim iki sıfır noktası arasında bir sinüs işareti çizer. Sıfır noktadına yakın noktalarda ölçtüğün akım çok düşük değerlerde çıkar. Sinüsün tepe noktasında akım maksimum değere çıkar sonra sıfır noktadına kadar düşmeye başlar. Bu durumda sabit bir akım değeri kesinlikle göremezsin.
Bu sorun nedeni ile RMS (Root Means Square yani kareleri toplamının ortalamasının katekökü) işlemini uygulaman gerekiyor. Bunun için her 500 ms de bir ölçüm alıp karesini alacak ve kareleri toplayacaksın sonra ölçüm sayısına bölüp ortalama alacak ve sonra karekökünü alarak akımdeğwri budur diyeceksin. Başka kolaybyolu yok maalesef.

Ete

Hattuşa

@ete hocam;
Alıntı YapBu sorun nedeni ile RMS (Root Means Square yani kareleri toplamının ortalamasının katekökü) işlemini uygulaman gerekiyor. Bunun için her 500 ms de bir ölçüm alıp karesini alacak ve kareleri toplayacaksın sonra ölçüm sayısına bölüp ortalama alacak ve sonra karekökünü alarak akımdeğwri budur diyeceksin. Başka kolaybyolu yok maalesef.

bu formulün amacı nedir? aklıma takıldı ve bir excell sayfası açıp 10 tane birbirine yakın değer yazdım.
512
500
522
509
524
512
515
508
515
518

bu değerlerin tektek karelerini aldım ve topladım =2637267
ve 10 a böldüm =263726,7
karekökten kurtardığımda  =513,5433

değerini elde ettim.

başka bir şekilde de direk 10 değeri toplayıp =5135
10 a böldüğümde =513,5
değerini elde ettim. yani sonuç çok değişmedi ortalama almak ile

diyeceksin ki neden hortladın. hocam malum adc okuması yapıyoruz çoğu devrelerimizde ve stabil bir okumayı maalesef zor yakalıyoruz.  tabi bu konu ile ne kadar alakalı derseniz o başka...

ete

RMS'i bulan yada bulmak zorunda kalan iinsanlar aynı yoldan geçmişlerdir mutlaka. Bu nedenle önerilen metoda saygı duymak lazım. Seninaldığın değerlerle farklı sonuç elde etmek zaten imkansız. Teoriksel değerler alıyorsun çünki. Gerçekte sinusoidal voltaj ve akım değerleri o aldığın değerlerden farklı çıkıyor. Olaya şöyle bakmak lazım. AC voltaj tepe değerine ulaştığı zaman ölçtüğüm voltaj ve akım gerçek değerleridir. Ancak olacak DC voltajmış gibi bakarsan onlar gerçek değerlerdir. Çünki sinüs işaretide gerçek ve gerçekte hem voltaj ve hemde ona bağlı akım değeri sıfır noktasından itibaren yükselişe geçiyor ve tepe noktasında tavan yapıyor sonra tekrar düşüşe geçiyor. O haşde tek bir ölçüm değeri AC voltajın değerini ve akım değerini göstermek için yetersizdir. Çünki farklı varyasyonlarıda vardır. Ama illaki kısa yoldan bir şey yapmak isterseniz kısa bir formülüde var bunların.
Voltaj için Tepe noktasında (sıfır noktasından 5 ms sonra) Voltajı ölçün bunu karekök2 ye bölün bu voltajın RMS değeridir.
Aynı şekilde Tepe noktasında akımı ölçün bunu karekök2 ye bölün buda Akımın RMS değeridir. Her konumda kullanmanız gereken değerler bu RMS değerleridir bunu unutmayın.

Ete

Powered by EzPortal