Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: Mucit23 - 30 Kasım 2017, 21:33:43

Başlık: True RMS'de periyot konusu
Gönderen: Mucit23 - 30 Kasım 2017, 21:33:43
Selamlar

Bu konu daha önce birçok defa konuşulmuştur belki ama eski konulara bakmama rağmen istediğim cevabı bulamadım. RMS hesabı yapılırken bize okulda aşağıdaki formülü öğrettiler.
(https://s18.postimg.cc/yg4s4ovdl/Ekran_Al_nt_s.png)

internette bu işi nasıl koda döküyorlar diye araştırırken aşağıdaki bağıntılara denk geldim.
(https://s18.postimg.cc/5dqi1wbop/microcontroller-based-true-rms-mains-voltage-frequency-mter.png)
Buradaki denklemde zaman bağıntısı yok. Sadece sabit aralıklarla 1 periyot boyunca örnekleyin diyor.

İki bağıntı arasındaki fark nedir? Örneğin Ben 100ms  boyunca 1ms aralıklarla 50Hzlik şebeke sinyalini örnekleyeceğim. Dolayısıyla 5 periyot boyunca 100 adet örnek almış olurum. Elde ettiğim verilerle Zamandan bağımsız olarak ikinci formüle göre hesaplama yaparsam doğru bir işlem yapmış olurmuyum?

RMS hesabında Zaman Konusunu anlayamadım.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Sozuak - 30 Kasım 2017, 22:37:38
Mantığım sinyal periyodik olduğu için 1 sn içinde neresinden başlarsanız başlayın elinizde sıfırdan başlamasa bile tam periyod olacağını söylüyor. !
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: tunayk - 30 Kasım 2017, 22:47:02
İlk bağıntıda T olarak verilen değişken period zaten. 
Öte yandan @Zoroaster hocanın farklı bir yaklaşımı vardı. Period bilinmese bile hesaplanan değerin RMS e yaklaşacağını söylemişti.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 30 Kasım 2017, 22:56:41
O halde sinyalin periyodu biliniyorsa bütün örnekleme işlemini bu süre içerisinde yapmak temel şartlardan biri. Gerçi formül üzerinde biraz düşününce, İkinci Formül ilk formülün sadeleşmiş hali olduğunu şimdi gördüm.

O halde periyot süremiz T ise ölçümlerimizi 2T veya 3T gibi sürelerde de alsak problem olmaz.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: tunayk - 30 Kasım 2017, 23:30:47
Doğru düşünüyorsunuz. 2T, 3T daha doğru sonuç verecektir. Ancak şunu unutmayın, örnek sayınız normal frekansın en az iki katı sayıda olmalı.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 30 Kasım 2017, 23:37:00
Son bir Soru

200 Adet örnek alacağız. Periyodumuz T olsun.

200 Adet örneği T süre içerisinde mi almak doğru sonuç verir yoksa 4T sürede almak mı daha doğru sonucu verir?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: tunayk - 01 Aralık 2017, 00:20:12
Hocam aslında bu içinde bulunduğun şartlara bağlı. T Peryodunda 200 örnekle ölçüm almak daha iyi doğal olarak. Çok değişken olmayan görece simetrik bir sinyali birkaç peryot ile ölçmek uygun olabilir. Ancak regüle ve kontrol işleminde kullanılacak bir sonuç gerkli ise, her peryotta çok örnekle ölçüm daha iyi olur
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: kralsam - 01 Aralık 2017, 07:51:45
Peki örnek sayısı T nin tam katı olmazsa ne olur ?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: OptimusPrime - 01 Aralık 2017, 09:33:40
@tunayk
Denklemdeki T isaretin periodu değil senin ornekledigin zaman aralığı veya periodu. Lakin belli bir period u olan isaretin rms ine bakıyorsan doğru sonuclar için mutlaka isaretin periodu veya katları olarak orneklemelisin. Başlangıç noktasının ise hiçbir önemi yok istediğin yerden başlayabilirsin.


https://electronicsfreelancer.wordpress.com/?s=Rms&submit=Ara


Bu linkde matlab kodları var. İstediğin şekilde oynayıp sonuçlara bakabilirsin
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: tunayk - 01 Aralık 2017, 09:48:56
@OptimusPrime evet ifade eksik olmuş. T illaki sinyalin peryodu olmak zorunda değil. Örnekte verilen çizim periyodik bir sinyal olduğundan bu şekilde belirttim.  Neticede RMS belirli bir aralıkta DC'ye eşdeğer iş yapacak büyüklüğü hesaplıyor. Tüm ölçümler gibi bu da sadece ölçülen aralığı ifade edecektir. Ancak periyodik bir sinyalde gerçek sinyal periyodundan farklı olarak T'nin keyfi  seçilmesi hatalı sonuç verecektir.

Başlık: Ynt: True RMS'de periyot konusu
Gönderen: foseydon - 01 Aralık 2017, 13:42:36
İkinci formül ile ilk formül aslında aynı. Aslında sinyal eğrisinin altında kalan alanı periyoda boluyorsun. İkincide, aldığın ölçümü ∆t ile çarpıp(Vn *∆t) T boyunca topluyorsunuz. Çıkan sonucu T ye boluyorsun((V1*∆t + V2*∆t + ...)/T). ∆t lerin T boyunca toplamı T ye eşit olduğu için sadelesiyor.

Tunayk nin dedigine ufak bir düzeltme yapayım. Örnekleme frekansın sinyal frekansinim iki katı olmak zorunda değil "en az" iki katı olmak zorunda. Daha altında yapacağın ölçüm tutarlı olmaz, Nyquist teoremi. Yani 2katindan daha yüksek frekans ile olcebilirsiniz. Ölçüm frekansın ne kadar yüksekse aldığın sonuç o kadar sağlıklı olur. Şahsi düşüncem imkan varsa minimum 4-5kat hızlı ölçüm almak iyidir.

Seçeceğiniz örnekleme aralığı T nin katı olmalı. Yapabiliyorsan örnekleme sıfır geçişinde başlamalıdır.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Cemre. - 01 Aralık 2017, 21:15:36
https://www.picproje.org/index.php/topic,66113.0.html

Derdinizin dermanı bu konu. Sona doğru benim paylaştığım bir formül var. Onu kullanabilirsiniz. Ufak bir parantez hatasi yapmışım ama musait bir zamanda düzelteyim...

Düzelttim:)
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 01 Aralık 2017, 21:40:50
Hocam konuyu hatırladım.  Biraz inceledim. Aslında benim hızdan yana bir sıkıntım yok gibi. Klasik yöntemle Şuanda 200 adet örnek alarak efektif değer hesaplıyorum. 100uS aralıklarla 200 adet örnek alıyorum. Sonuç genel olarak iyi fakat virgülden sonraki hane baya değişiyor.

Bunun için önerebileceğiniz bir filtre türü varmıdır?   Benim için repsonse time 1 sn bile olsa gayet yeterli.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: magnetron - 01 Aralık 2017, 22:37:17
konuyu dağıtmadan bir soru sorabilir miyim ?


RLC devrelerinde anlık voltaj ve akımı hesaplarken
formüllerde türev ve integral oluyor


aynen Mucit' in ilk mesajdaki formül gibi


bunları hesaplatmayı excele yaptırabilir miyiz ? ( grafik halinde çıktı almak için )
( matlab yüksek bir lisans ücreti istiyor )


teşekkür
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Cemre. - 01 Aralık 2017, 23:03:15
Alıntı yapılan: Mucit23 - 01 Aralık 2017, 21:40:50
Hocam konuyu hatırladım.  Biraz inceledim. Aslında benim hızdan yana bir sıkıntım yok gibi. Klasik yöntemle Şuanda 200 adet örnek alarak efektif değer hesaplıyorum. 100uS aralıklarla 200 adet örnek alıyorum. Sonuç genel olarak iyi fakat virgülden sonraki hane baya değişiyor.

Bunun için önerebileceğiniz bir filtre türü varmıdır?   Benim için repsonse time 1 sn bile olsa gayet yeterli.

Y(n)=(Y(n-1)*k + x)/(k+1)

X ham değer, Y yumuşatılmış değer. K katsayı.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: baran123 - 01 Aralık 2017, 23:29:50
Acaba ACC ve Gyro işleri için kullanılan "Complementary Filter" bu iş için kullanılabilir mi ?
http://www.pieter-jan.com/node/11
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: OptimusPrime - 02 Aralık 2017, 08:20:20
Aynı ölçümü true RMS bir multimetre ile olcumcede aynı sapmaları görüyor musun? Senin sistemindemi gürültü var yoksa olctugun seymi gürültülü?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 02 Aralık 2017, 11:46:54
Alıntı yapılan: OptimusPrime - 02 Aralık 2017, 08:20:20
Aynı ölçümü true RMS bir multimetre ile olcumcede aynı sapmaları görüyor musun? Senin sistemindemi gürültü var yoksa olctugun seymi gürültülü?

Aldığım sonuçlar bu şekilde,
https://www.youtube.com/watch?v=h__hx7iUOMY

Timer ile 200uS aralıklarla ADC yi tetikleyip 200 adet örneği 4T süresince alıyorum. Örnek alımı bitince DMA TC kesmesi oluşuyor ve kesme geldikten sonra aldığım değeri hesaplamalara sokuyorum. 200 adet örneğin RMS'ini hesaplamam yaklaşık 150us sürüyor.

Ölçümü biraz yavaşlatmak istiyorum. O yüzden ölçümü 4T süresine yaydım. Ama buda bana hızlı geliyor. 1sn veya 0,8sn de bir yeni sonuç gelse benim için yeterli olacak. Bu RMS hesabının çıkışında ortalama alsam nasıl olur? 200ms aralıklarla RMS sonucum geliyor. 5 adet sonuç gelmesini bekleyip bu sonuçların aritmetik ortalamasını almayı bir deneyeyim. Bu sayede hem ölçüm yavaşlamış olur hemde biraz filtrelenmiş olur.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: OptimusPrime - 02 Aralık 2017, 17:31:40
Kötü değil. Noktadan sonra 1 hane kullansan ve hızı biraz dusursen olacak gibi.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Cemre. - 02 Aralık 2017, 17:53:38
Ben olsam daha fazla örnek alırdım. Ayrıca bence sisteminizde T'ye bağlı değişkenler bulunmamalı. Bir Low-Pass filter on/off dip-switchi/butonu olsa tadından yenmez. Belki ben ripple'ı görmek istiyorum? ;)
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: OptimusPrime - 02 Aralık 2017, 18:30:33
Sistemde gurultu varsa daha fazla örnek sadece iceri daha fazla gürültü sokar. Virgulden sonrası çıldırir. :)
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 02 Aralık 2017, 19:38:00
FFT ile baskın frekansı bulup periyot olarak kullanabilirsin. Deneme maksatlı olarak şebekeden ölçüm yapıyorsan 50 hz i sabit kabul edip hesaplamaları bu sabite göre yapıp sonucun kararlı hale gelip gelmediğine bakabilirsin.

Diğer bir konu ise ölçümün kalitesi. Ölçüm yaptığın ünitenin (ADC ve veya opamplı devre) giriş direnci düşükse şebekeye bağladığın büyük değerli dirençlere baskın gelerek ölçümün doğrusallığından ödün vermene sebep olabilir. Mikrodenetleyicilerin adc giriş dirençleri, 220 v u ölçmek için kullanacağın büyük dirençlere göre çok daha baskın gelebilir.

Öncelikle, dirençle sinyalin genliğini düşürdükten sonra, giriş  direnci büyük bir opamp ile gerilim izleyici yapıp daha sonra adc e girebilirsin. Bu haliyle bile önceki haline göre hatrı sayılır bir doğrusallık kazanabilirsin ama tam yeterli olmayabilir. Daha da ileri götürüp ben tam doğrusal bir ölçüm almak istiyorum dersen, ölçüm ünite devresini tamamladık tan sonra sistemi doğrusallaştıracak denklemi oluşturma işine girişebilirsin.

Kalitesine (doğrusallığına) güvendiğin bir ölçüm cihazıyla, kullandığın mevcut ölçüm ünitesine, ölçüm aralığı içerisinde kalacak (0-320v) şekilde farklı farklı değerlerde DC voltaj ölçüm örnekleri alıp, kendi ölçtüğün değerlere y, multimetrenin ölçtüğü değerlere x diyerek  ters transfer fonksiyonu elde etmene olanak tanıyacak noktaları elde etmiş olursun. Örnekleri kullanarak denklemin katsayılarını bulduran programlardan da faydalanarak (curve expert olabilir) denklemi hesaplatabilirsin. Muhtemelen 2. dereceden polinom denklemi işini görür. Bu tarz bilgisayar programları ile bir çok denkleme yakınsama yaptırarak en yakın denklemi seçme noktasında da faydalanabilirsin.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 02 Aralık 2017, 21:27:44
Hocam iki sekonderli bir transformatörün çıkışlarından bir tanesini ölçüm için kullanıyorum. Arada birkaç tane opamp var. Ofset ekleme işlemlerini vs yapıyorum.
Trafo çıkışındaki devre böyle
(https://s18.postimg.cc/ycccakcfd/olcum.png)

İyi çalışıyor aslında ama belki biraz daha iyileştirme yapılabilir.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 03 Aralık 2017, 00:19:05
Trafonun oranları ve adc nin ölçüm aralığı bilgileri elimizde olmadığı için emin olmamakla birlikte bu opamplar ölçüm aralığını bu şartlar altında daraltıyor olabilir. Çalışma voltajı 0-5 volt ise lmv324 tarzı rail to rail bir opamp kullanmayı tercih edebilirsin. Yinede son opampın çıkışından osilaskop ile sinüs sinyalinin kırpılıp kırpılmadığına bakılabilir.

Ölçümlerin son hanelerinde ki hareketlilik periyot süresi ile ve periyot başına düşen örnek sayısı ile doğrudan orantılı bir durum. Hesap için kullanılacak örneklerin toplanma süresi periyodun tam katı olduğunda hareketlilik oldukça azalacaktır. 20ms ise 20,40,60,80,100, ...  gibi sürelerde yakalanan örnekler kararlı sonuç sağlayacaktır. En kararsız ölçüm 22.5ms süresinde görülebilir. Diğer bir karşılaştırmayı ise 22.5ms ve 42.5ms arasında yaptığımızda ikisinde de 1/8 periyot fazlalık olmasına rağmen 42.5ms gerçek sonuca daha yakın olacaktır. Çünkü fazlalık periyot süresi toplam tam periyot süresinin yanında daha da değer kaybedebiliyor. Şunu söylemeye çalışıyorum, multimetre ölçüm süresini 500ms seçmiş ama sen çok daha düşük bir süre seçmişsin videoda gördüğüm kadarı ile. (Recursive filter yapısını kullanmadığını varsayarak böyle söyleyebiliyorum.)
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: OptimusPrime - 03 Aralık 2017, 03:12:12
Opampli devreye biraz kapasite serpistirmek gerekiyor. Beslemelere ve referans gerilimine özellikle. Scope ile oralarda bir gez derim. Bahse girerim referans gerilimi zangir zangir sallaniyordur  ;D
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 03 Aralık 2017, 19:28:40
Hocam şemada kapasite yok ama her bir opamp in beslemesinde 100nf var. Ama yinede bi skopla bakayım.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 03 Aralık 2017, 21:31:32
Bunu tam doğru hesaplayabilmen için tam 180 yada 360 ... derecelik zaman diliminde adc verileri alman lazm
eğer açı 180derece veya katı  değilse  hesaplama yanlış çıkar


Mesela sin(0) ... sin(180)

Mesela sin(100) ... sin(280) sonuçlar hep aynıdır ama

sin(10) .. sin(170)  sonuç her ölçüşte farklı çıkar. çünkü tam 180 tamamlanmadı


Yani şebekenin frakansını bileceksin 1/f =(X) ms eğer x zamanı şebeke frekansına uymazsa sonuç
hep farklı çıkar. Şebeke sabit 50hz olduğunu zannetmiyorum , değişiyordur. 

Şunu dene osiloskopta şebeke frekansına bak ölçüm zaman aralığnı buna göre belirle.

Yada

Opampların olduğu bölgeye bir voltaj compratorü koy şebeke tam sıfır volta düştüğü an
mcu interrupt pinini set yapsın   adc çevrimi başlatılsın ikinci intterupt geldiğinde ise
adc durdurup hesaplama yapsın bu şekilde yüzde yüz doğru çıkar. Bence bu şekilde aritmetik
ortalama alabilirsin geometrik ortalama çok fark ediyor mu (uzun sürer).
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 04 Aralık 2017, 02:04:01
50Hz lik sinüsel şebekenin RMS değerini noktadan sonra 2 digit doğrulukla hesaplayabilmek için 1 peryodda alınması gereken sample sayısını hesaplamak, araştırmayı seven insanlar için çok zor bir problem olmamalıdır.

Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 04 Aralık 2017, 13:27:56
Şebeke dalga formu saf sinus olsaydi RMS deger hesaplamaya gerek yoktu. Fakat sebeke gerilimi sinus formundan uzaktir. Bunun baslica nedeni asiri yuklenmis trafolarin yada lineer olmayan elektrik yuklerin urettigi harmoniklerin sebeke voltajini bozmasidir.

Normalde voltajimiz harmonik icermeseydi en az 3 ornek almak yeterliydi ve sample alma frekansimiz 150 Hz olacakti.

Eger 3,5,7 .. harmonik isin icine girince ornekleme frekansimiz da artacaktir.

Ornek alma sikligi ile harmonikler arasindaki iliskiyi gormek icin biraz kafa yorun.


Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 12 Aralık 2017, 00:59:11
Hocam Şuanda Rezitif Yükler için deneme yapıyorum. Aslında ölçümlerim fena. Sadece düşük akımlarda sensörün lineerliği bozuluyor. Onuda düzeltebildiğim kadar iyileştirmeye çalışacağım.

Bir sorum olacak. ACS711 veya ACS712 çıkışında gürültülü bir sinüs sinyal var. Yük akımının sensör çıkışında oluşturduğu sinyal üzerine ortalama vpp 20mv bir gürültü biniyor. Sensör çıkışına RC filtre gibi bazı önlemler aldım ama pek işe yaramadı.

Bu sinyali ADC den okuduktan sonra Kalman Filtre vey FIR filreden geçirmek istiyorum. Bu ne derece faydalı olur? STM32'nin DSP kütüphanesinde FIR için hazır fonksiyonlar var.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: OptimusPrime - 12 Aralık 2017, 07:07:26
https://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf

sayfa 12deki application 4 devresini mi kurdun?

sensorun beslemesinde veya yukununn uzerinde 20mV gurultu olabilir mi?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 12 Aralık 2017, 09:04:01
Hocam şuanda Acs711 ile deneme yapıyorum  besleme 7805+3.3v ldo ile yapılıyor. LDO çıkışındaki gürültüyü bi kontrol edeyim. Devrede ise çıkışta herhangi bir opamp vs kullanmadım. RC filtreden geçirip adc ye giriyorum
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 12 Aralık 2017, 11:05:22
MCU nun Vref- girişi ile filtre kondansatörünün bağlantısını doğrudan yapmayı deneyebilirsin. Eğer mcu Avss referans olarak kullanıyorsa Avss ile Gnd arasına 0R direnç bağlayıp RC kondansatörünü Avss ile bağlanması şeklinden bahsediyorum.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 12 Aralık 2017, 20:32:20
Aynı gürültü beslemede de var. Aslında çok da önemli değil çünkü sadece çok düşük akımlarda ölçümü mü etkiliyor. Ama onun için birkaç önlem alacağım. Benim True RMS ile ilgili daha büyük bir sıkıntım var. Akım hesabıyla ilgili.

Farklı yüklerde cihazı test edip aldığım ölçümleri analiz ediyorum. Yük olarak saç kurutma makinası ile bir deneme yaptım. Saç kurutma makinası yarı hızda çalışıyorken ACS711 çıkışında aşağıdaki sinyali görüyorum.
(https://s2.postimg.cc/7tfqtkgjt/Ads_z_1581_x_1125.jpg)
Sanırım içerideki bir takım diyotlardan dolayı böyle bir akım çekiliyor.

Elimde akımı ölçmek için bir tane Multimetre birde Dijital Wattmetre var. Multimetre TrueRMS değil.

Böyle bir sinyalde Multimetre ve Wattmetre 2.70A civarı bir akım ölçerken Benim hesaplarım 3,43A civari bir sonuç veriyor. Fakat Sinyal Periyodik tam sinüs olursa Bende Ölçü aleti ve Multimetre ile aynı akım değerlerini ölçebiliyorum. Sinyal Periyodik bir sinyal olmasına rağmen neden böyle farklı bir sonuç alıyorum. Yarım dalga olarak çekilen yüklerde bu şekilde sonuçlar çıkıyor.

True RMS hesapları için ACS711 çıkışını 40ms yani 50 Hz için düşünürsek iki periyot boyunca 500 Adet örnek alıyorum. Bu örnekleri True RMS hesabına sokuyorum. Yanlış olan nedir?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 12 Aralık 2017, 21:05:37
ACS hangi aralıkta ölçüm yapıyor? Model uzantısı ney?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 12 Aralık 2017, 21:18:54
±15.5A Hocam
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 12 Aralık 2017, 21:49:23
Osilaskop 227mv ölçmüş. Acs 90 mv/A parametresinden hesap yapınca 227/90 = 2,52 amper çıkıyor. Sen nasıl 3,43 buluyorsun?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 12 Aralık 2017, 22:15:18
Yöntemim yanlış olabilir. Çünkü bir tek periyodik tam sinüs sinyallerde düzgün çalışıyor.



float calc_rms_current(void)
{
   uint32_t itoplam=0;
   uint16_t i=0;
signed int raw_idata=0;
float iadc=0,irms=0;

for(i=0;i<500;i++)
{
raw_idata=(signed)ADCReadings[i*2+1] - 2048 + iadc_ofset;
   itoplam+=raw_idata*raw_idata;  //Ölçümlerin karesini aliyoruz.
}
iadc=sqrt((float)itoplam/500.0);
irms=(iadc*7.85) / 798.00;
return irms;
}


500 Adet örneğin ilk başta 2048 ofseti çıkarıp daha sonra karelerini alıp topluyorum. Daha sonra 500'e bölüp kareköklerini alıyorum. Son olarak basitçe bir oranlama yapıyorum. 

Dediğim gibi tam sinüs sinyallerde oldukça abul edilebilir sınırlar içerisinde akım doğru sonuç alıyorum. Ama sinyal tam sinüs olursa bu hesap doğru çalışmıyor.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 12 Aralık 2017, 23:18:06
Büyük ihtimalle ölçüm süren 40ms değil sonraki tepe noktasını kesiyor.

Yukarıdaki osiloskop görüntüsüne;

İşlemcinin bir pini Adc başladığı an set yapsın değerler alınıp bittiğinde reset yapsın ve bunu osiloskopun diğer kanalına versin,  resmi çekip yayınlayabilirsen bizde görmüş oluruz hatayı.   

Başlık: Ynt: True RMS'de periyot konusu
Gönderen: frederic - 12 Aralık 2017, 23:44:18
Bu tarz ölçümler de hesabı direk 50hz üzerinden yapmak sıkıntı, ben yaptığım uygulamada şebekenin frekans salınımına karşı, sistemi 20-100Hz arası otomatik adaptasyonlu yazmıştım.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 13 Aralık 2017, 09:49:48
Hocam ADC'yi Timer ile tetikliyorum. Timer her 80uS'de ADC yi tetikliyor. 500 Adet örnek alınca DMA TC kesmesi ile örnek alma işleminin tamamlandığını anlayıp RMS hesaplarını yapıyorum. Tabi Arka Planda Timer ADC ve DMA üçlüsü örnek almaya devam ediyor. Toplam Süre 40ms oluyor.(500x80uS=40mS). Çünkü DMA TC kesmesi 40ms aralıklarla oluşuyor. Buda 50Hz için 2T demek.

Benim Anlamadığım nokta şu. Sinyal Periyodik bir sinyal. Biz ölçümü nereden başlatırsak başlatalım sonuç olarak hep gelip aynı yerde sonlanacak. Bunu daha önce yine bu başlıkta konuşmuştuk.

Ölçümlerde Doğru yöntem nasıl olmalı peki?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 13 Aralık 2017, 10:37:30
Real Time Data Monitoring yapma şansın var mı? Bir de "(iadc*7.85) / 798.00" burada ki katsayı tepeden tepeye tüm aralıkta doğru sonuç verdiğine emin misin?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Erol YILMAZ - 13 Aralık 2017, 10:58:48
@Mucit23,

Sabit periyot araliklarla ornek aliyorsan alacagin ornek sayisi sinyal periyodu ile iliskili olmali.

Aksi halde misal 49 hz icin tam alternans ornekleri almamis oluyorsun.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 13 Aralık 2017, 12:08:06
Alıntı yapılan: hasankara - 13 Aralık 2017, 10:37:30
Real Time Data Monitoring yapma şansın var mı? Bir de "(iadc*7.85) / 798.00" burada ki katsayı tepeden tepeye tüm aralıkta doğru sonuç verdiğine emin misin?

0,5A ve üstünde doğru sonuç veriyor. Fakat 0,5A ve Altında sapma çok oluyor. Oda sensörle ilgili bir durum diye düşünüyorum. Real Time Data Monitoring derken tam olarak nasıl birşey istiyorsunuz? Şuanda Güncel verileri görüntülemek için Uart Kullanıyorum. Uart ile verileri alıp terminalde görüntülüyorum.

Alıntı yapılan: Allegro - 13 Aralık 2017, 10:58:48
@Mucit23,

Sabit periyot araliklarla ornek aliyorsan alacagin ornek sayisi sinyal periyodu ile iliskili olmali.

Aksi halde misal 49 hz icin tam alternans ornekleri almamis oluyorsun.

Hocam Arka planda bağımsız olarak sürekli örnek alınması sorun yaratıyor olabilir mi? Acaba Örnek Alma işlemini Sıfır geçişlerinden tetik alarak mı yapmak gerekir?

Çünkü Ben RMS hesaplarını yaparken bir yandan yeniden örnek alınıyor.

Şöyle bir yol izlesem belki iyileştirebilirim sonucu.

Timeri Başlat ve 500 Adet örnek alınmasını bekle,
Örneklerin Hepsi alındımı Timeri Durdur.
RMS hesaplarını yap,
Tekrar Timeri başlat ve başa dön.

Hala yanlış olanı tam olarak anlayamadım.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 13 Aralık 2017, 12:22:13
Oncelikle sensor de dahil olmak uzere akim olcme devresinin ADC girisine kadar olan kisminin semasini gormek lazim.

Yarim dalga sinyalini gorunce suphelendim. Sinyalin ADCye ulasmadan once sanki seri kapasitorden geciyor gibi geldi bana.

Scopunu da DC kuplaja al.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 13 Aralık 2017, 14:28:30
Hocam Arada Sadece Seri bir RC var. Akım sensörü çıkışına Seri 1K direnç, Bu direnç Çıkışı ile GND arasına 100n kondansatör sonra doğrudan ADC ye. Akşam DC kuplajla tekrardan resim atarım ama bana kalırsa başka bir sorun var.

Yöntemdemi hata var yoksa hesaplamada mı?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 13 Aralık 2017, 14:48:11
Islemci 5v mu?

O kadar cok neden olabilir ki? Cok temel hatalarin yapilmadigindan emin olmak lazim.

Mesela scopu DC kuplaja aldiginda sefektif deger ne oluyor bir gorelim.

(https://s2.postimg.cc/7tfqtkgjt/Ads_z_1581_x_1125.jpg)

Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 13 Aralık 2017, 15:07:35
Yok abi ACS711 ve MCU 3.3V ile besleniyor. MCU seninde çok iyi tanıdığın STM32F103C8
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 13 Aralık 2017, 15:27:14
Alıntı yapılan: Mucit23 - 13 Aralık 2017, 14:28:30
Hocam Arada Sadece Seri bir RC var. Akım sensörü çıkışına Seri 1K direnç, Bu direnç Çıkışı ile GND arasına 100n kondansatör sonra doğrudan ADC ye. Akşam DC kuplajla tekrardan resim atarım ama bana kalırsa başka bir sorun var.

Yöntemdemi hata var yoksa hesaplamada mı?
Sorunun sanırım bu.

Böyle asla olmaz offset sıfır olmalı,  bu şekilde full sinus ölçsen bile amper arttıkça ölçdüğün değer lineer artmaz parabolik artar.

Aradan kondansatörü kaldır ve küçük 100pf gibi kondansatör koy.

Osiloskp görüntüsü adc girişinden mi yoksa acs711 çıkışından mı (dirençten önce sonra ? )

Osiloskopda en alt kaç volt (çizgiye düştüğü bölge)  sıfır volt olmalı.



Başlık: Ynt: True RMS'de periyot konusu
Gönderen: JOKERAS - 13 Aralık 2017, 15:32:29
Mucit23, Adc çevrim hızın Timer Tetikleme hızına yetişebiliyormu?
Şunu demek istiyorum.


Auto Conversion için Timer ile 80Us bir tetikleme yapıp Adc GO yapıyorsun.
GO yaptığında bir sonraki Timer tetiğine kadar geçen sürede Adc Conversion bittimiki bunu yapıyorsun?
Adc conversion hızını arttır veya Timer Tetikleme hızını düşür.


Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 13 Aralık 2017, 20:33:59
Alıntı yapılan: Zoroaster - 13 Aralık 2017, 14:48:11
Islemci 5v mu?

O kadar cok neden olabilir ki? Cok temel hatalarin yapilmadigindan emin olmak lazim.

Mesela scopu DC kuplaja aldiginda sefektif deger ne oluyor bir gorelim.


Hocam DC kuplajdayken Aldığım sonuç bu şekilde hocam.

(https://s7.postimg.cc/kh9366y23/20171213_201203.jpg)

Negatif alternans kırpılmış hocam yük bu şekilde akım çekiyor. Buna Eminim. Yük dediğim saç kurutma makinası.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 14 Aralık 2017, 00:16:02
Senin scop goruntusu gene moktan.

Akim sifir olunca sari cizgi neden sifir hattinda durmuyor?

Scopun gosterdigi vrms simdi uyusuyormu?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 14 Aralık 2017, 09:33:15
Hocam Skopta hangi parametreleri istiyorsun ona göre görüntü alayım.

Skop AC kuplajda iken Skobun gösterdiği VRMS değerini akım sensörünün V/A değeriyle çarpınca bulunan akım değeri, ölçü aletlerinin gösterdiği değerlerle uyuşuyor.

Abi yük gerçekten resimdeki gibi bir akım çekiyor. Buna eminim. İstersen hiç hall effect sensör yerine sadece bir şönt direnç bağlayıp direnç üzerindeki gerilimi skop ile gösterebilirim.

Ama Yöntemi hala kesinleştirmedik. TRUE RMS hesaplarım anladığım kadarıyla doğru. Timer ADC ve DMA yardımıyla 500 Adet örnek alıyorum. Bu örnekleri otomatik olarak alıyorum ama doğrumu emin değilim. Doğru yöntem nasıl olmalı?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Erol YILMAZ - 14 Aralık 2017, 09:44:22
Dogru yontem, ornekleme  alternansin neresinde basliyorsa bir yada daha fazla periyot sonra ayni yerinde durmalidir.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 14 Aralık 2017, 11:24:56
Sifir gecisini bekle ve mesela + alternansi orneklemeye basla. Bir sonraki + alternansin bitimindeki sifirla hesaplama basla.
Aksi tatirde mesela 90 derecede sample almaya baslarsan gene ayni sekilde 90 derecede hesaba gecersen daha cok hata yaparsin.

Zira sifir civarinda sinus sifira yakin degerler verir. Dolayisi ile 3..5 sample az olmu; fazla olmus onemli olmaz. Ama 0 dan uzak acilarda hele hele 90 derece civarinda sample alip hesaplar yaparsan 90 derece civarinda degerler cok buyuk olacagindan 3..5 sample fazla eksik sample ile hesaplamada hata daha cok olur.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 14 Aralık 2017, 14:56:54
Anladim deneyecegim bunu.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 14 Aralık 2017, 15:16:55
Hocam kondansatör offset değerini yükseltir adc girişinden mi yoksa direk acsnin
çıkışından mı bu osiloskop görüntüsü diye sorduk.

(Şimdi diyecek , sana cevap vermek zorundamıyım)

Yada bir pini set reset yapıp nereleri kesiyor ölçüm süresi nedir görebilirsin (çok basit bişey bu).

Olumlu olumsu tek bir cevap yok.


Bu sitedeki bütün başlıklarda var bu.

Bikaç kişinin yazdıkları dışında kimsenin yazdığı okunmuyor.

Cevabı geçtim ! okunmuyor bile!

Bu kadar online üye var neden kimse cevap yazmıyor diye şaşırırdım , şimdi anladım.

Ne acayip siteymiş burası.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 14 Aralık 2017, 15:55:44
Alıntı yapılan: iboibo - 14 Aralık 2017, 15:16:55
Hocam kondansatör offset değerini yükseltir adc girişinden mi yoksa direk acsnin
çıkışından mı bu osiloskop görüntüsü diye sorduk.

(Şimdi diyecek , sana cevap vermek zorundamıyım)

Yada bir pini set reset yapıp nereleri kesiyor ölçüm süresi nedir görebilirsin (çok basit bişey bu).

Olumlu olumsu tek bir cevap yok.


Bu sitedeki bütün başlıklarda var bu.

Bikaç kişinin yazdıkları dışında kimsenin yazdığı okunmuyor.

Cevabı geçtim ! okunmuyor bile!

Bu kadar online üye var neden kimse cevap yazmıyor diye şaşırırdım , şimdi anladım.

Ne acayip siteymiş burası.

Sizin mesajı okudum açıkçası ama arada kaynadı. Kusura bakmayın böyle bir izlenim bırakmak istemezdim.

Kondansatör ADC tarafında, Aşağıdaki gibi.
(https://s33.postimg.cc/4vkhzlby7/250px-1st_Order_Lowpass_Filter_RC.svg.png)
Sol taraf ACS çıkışı, Sağ Taraf ADC girişi,

Ama Dün sizin mesajınızdan sonra 100nF kondansatörü söktüm zaten, onun yerine elimde olan 1nF kondasatör taktım. 100pF dün akşam bulamamıştım. Fakat taktığım kondansatör sonucu pek etkilemiyor gibi.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: frederic - 14 Aralık 2017, 19:02:57
Periyotun sıfırından başlamak çok önemli
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 14 Aralık 2017, 19:32:03
Pardon , daha önce bobinle ac akımı ölçmüştüm bu nedenle bu konu ile ilgilendim. Bobinle ölçdüğüm bile bundan daha iyi idi. İyi ki acs'ye para vermemişim. Hele ki smps çektiği yükü ölçmek var çok zor.

Peryot konusunu şu şekilde çözebilirsin 40ms değil 1sn boyunca adc verilerini topla  ( uint_32  'ye sığarmı bilmiyorum ) o zaman hata payı düşecek.

2T   max hata %50
4T   max hata %25
8T   max hata %12
16T   max hata %6   





Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 14 Aralık 2017, 21:42:34
500 Örnekten fazla alamıyorum. Karelerinin toplamı uint32 ye sığmıyor. Ancak örnek aralığını uzatabilirim.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 14 Aralık 2017, 21:43:10
Daha farklı bir hata olmalı; Çünkü periyot başlama ve bitiş aynı yerde olmamasından kaynaklanıyor olsa, bu durum sonuç değerinde kıpraşma ve hareketlilik olarak görülürdü. İşlemsel olarak topladığın örnek sayısı ile böldüğün örnek sayısının aynı olup olmaması incelenebilir.

Diğer bir önerim ise seri port üzerinden bir periyot boyunca topladığın tüm örnekleri bilgisayara çekip grafikte görmek probleme çok farklı bir boyut kazandıracaktır. Bu kısa süre için biraz zahmetli olabilir belki ama farklı alanlarda da bu alt yapıyı kullanabilirsin. RTDM diye sorduğum olay ile aslında bunu kast ediyordum.

Elinde ki imkanlar doğrultusunda söyleyebileceğim, tepeden tepeye ayrı zamanlarda dc akım ölçüp farklı değerlerde kalibre etmeni öneriyorum sanırım bu 3. kez söyleyişim oldu.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 14 Aralık 2017, 21:44:48
Evet tam yazarken yazmışsın ki karelerin toplamı uint32 e sığdığına emin misin? Float kullanmayı deneyebilirsin.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: baran123 - 14 Aralık 2017, 21:46:35
@Mucit23 Hocam uint64_t kullanabilirsin.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 14 Aralık 2017, 22:20:38
Hasan hocam aslında dediklerinizi yapabilirim. En azından Mikroişlemcinin gördüğü ile Osiloskop ile gördüğüm arasındaki farkı net olarak görebilirim.
uint32_t ye sığdığını şu şekilde hesaplıyorum.


ADC den okuduğum değer max +-2048 arası bir değer alabilir.


ADC den max 2048 gelse ve bu örneğin karesini alsam 2048*2048=4,194,304 değerini alır. Bu değeri 500 ile çarparsam
500*4,194,304=2,097,152,000 Yapar


uint32_t max 4,294,967,295 değerini alıyor. Aslında örnek sayımı 1000 yapabilirim. Yine uint32'ye sığıyor. Fakat Hesaplama süremi çok uzatır diye 500'de bırakmıştım.


uint64_t ye de bu yüzden ihtiyaç duymadım.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 16 Aralık 2017, 00:08:04
Biraz daha derinlere indim. Birkaç post yukarıda Yarım dalga sinüs şeklinde akan akımı İki Periyot boyunca örnekledim. Örnekleme işlemi tam olarak sıfır geçişinde başlatıldı.  Toplam 500 Örnek var ve 80uS aralıklarla 2T boyunca örneklendi. Okuduğum ADC değerinden 1.65V 'a denk gelen(2048) ofset değerini çıkartıyorum.

Dediğim Gibi Yarım dalga olarak çekilen akım için elde ettiğim değerler aşağıdaki gibi.

-8,2,3,-4,-4,-4,-1,3,-2,2,-6,-8,-3,-1,2,-1,-3,0,1,1,0,-3,-4,-11,-1,-2,-4,-6,-6,0,6,0,0,5,-1,-2,2,4,3,4,-6,-6,8,0,3,4,-2,5,7,6,6,0,6,6,3,6,0,5,1,2,-1,-1,8,4,6,6,9,6,5,-2,-3,8,5,5,7,-2,-3,-6,-1,3,6,5,7,4,6,13,8,9,8,11,9,16,4,6,14,7,8,5,6,8,8,9,3,6,6,10,8,5,6,7,6,6,26,3,6,-13,9,7,5,11,2,13,13,5,24,34,45,67,73,99,107,132,153,171,186,212,236,240,260,282,297,304,332,353,358,369,377,407,414,427,448,452,476,491,489,506,519,535,541,551,549,569,581,587,602,614,622,638,641,667,669,680,681,697,694,697,700,709,708,707,707,716,713,714,719,721,723,719,726,723,728,721,730,724,720,720,719,723,724,725,718,712,702,695,677,667,654,644,632,626,608,607,589,578,566,554,552,529,516,492,483,469,449,430,415,402,387,367,350,338,320,299,279,266,255,225,212,189,172,157,143,127,111,91,79,45,37,26,18,6,-8,6,3,5,3,-1,-2,-3,2,-5,-4,-5,1,-5,0,-7,-3,-3,-1,-5,-1,-8,-2,-4,1,5,0,-2,0,-6,-3,3,-3,9,2,-1,-2,3,-2,6,-4,-3,-2,13,-1,-4,6,1,1,1,4,2,1,9,9,3,8,-6,6,-6,3,-4,5,-1,-2,2,-1,4,3,6,2,5,-4,5,5,15,8,12,6,11,9,7,1,4,0,4,4,3,6,8,6,3,8,16,11,11,7,11,9,12,9,6,6,10,6,-3,6,8,6,0,1,11,7,8,20,17,-2,20,10,5,15,0,-8,13,12,31,44,60,79,90,104,124,146,166,184,201,234,241,273,279,292,308,329,347,357,374,395,400,422,428,450,457,467,492,501,513,522,537,543,552,563,570,580,587,599,614,631,632,645,658,678,673,684,689,679,675,682,672,699,697,715,708,692,695,686,680,698,690,688,696,695,685,695,694,698,687,687,687,690,689,691,672,656,654,644,638,643,608,595,595,582,565,546,539,535,511,505,484,487,455,456,425,414,389,379,355,330,325,308,288,269,251,237,235,210,196,163,151,125,81,30,26,2,17,-4,1,-10,3,-14,-5

Yaptığım hesapların aynısını devc üzerinde yaptım ve Aynı sonuçları elde ettim. Yaklaşık olarak 3.45A civarı.  Gerçekte Ölçü aletlerim 2.75A civarı ölçüyor.

Hesap yöntemim aşağıdaki gibi
for(i=0;i<500;i++){
sum+=dizi[i]*dizi[i];
}

iadc=sqrt(sum/500.0);
irms=(iadc*7.70) / 798.00;


2. Olarak Yarım dalga olmayan tam dalga olarak çekilen bir akım sinyalinden okuduğum değerler.
-11,-25,-37,-48,-54,-69,-80,-91,-103,-122,-129,-142,-152,-160,-177,-186,-203,-201,-217,-231,-233,-241,-246,-267,-264,-282,-294,-302,-302,-313,-320,-327,-342,-344,-351,-356,-367,-368,-380,-387,-396,-400,-409,-415,-422,-437,-433,-441,-445,-449,-446,-448,-455,-451,-459,-453,-460,-456,-458,-456,-452,-463,-456,-463,-463,-465,-457,-463,-472,-466,-462,-472,-458,-461,-456,-460,-461,-449,-449,-447,-435,-421,-409,-409,-395,-391,-384,-378,-372,-365,-353,-349,-337,-330,-322,-313,-302,-288,-282,-268,-255,-244,-237,-229,-224,-206,-197,-189,-171,-166,-148,-138,-130,-118,-103,-112,-79,-77,-63,-43,-31,-16,-13,-4,20,25,48,57,71,87,101,122,140,156,172,205,212,235,253,280,290,302,327,335,358,366,394,398,415,425,435,456,466,478,496,505,525,528,546,558,559,576,589,594,599,614,622,640,661,664,675,688,698,700,704,711,709,712,725,727,728,727,719,731,729,724,727,733,730,740,729,736,731,731,730,728,736,730,731,727,723,721,714,707,698,675,671,656,648,638,628,613,594,583,579,561,554,534,528,509,493,471,468,448,434,421,389,371,366,341,327,309,290,278,258,248,219,214,195,175,151,133,116,87,74,47,30,28,15,0,-17,-30,-36,-46,-57,-73,-79,-97,-101,-118,-123,-139,-157,-168,-183,-183,-195,-208,-217,-231,-236,-237,-252,-257,-272,-278,-293,-301,-307,-321,-329,-332,-337,-346,-351,-355,-363,-367,-378,-389,-396,-400,-405,-414,-427,-427,-443,-440,-448,-441,-448,-455,-456,-447,-457,-449,-457,-466,-458,-460,-461,-460,-456,-468,-465,-461,-464,-466,-459,-460,-466,-457,-466,-464,-464,-460,-458,-450,-445,-440,-434,-421,-414,-401,-397,-396,-384,-377,-372,-364,-357,-342,-337,-324,-319,-313,-296,-286,-282,-269,-258,-252,-239,-233,-215,-198,-198,-188,-168,-163,-150,-143,-131,-112,-117,-92,-80,-70,-64,-54,-32,-21,-3,11,6,34,41,60,69,89,104,122,142,155,181,192,221,233,253,274,295,305,326,339,350,375,385,404,408,422,448,450,465,479,499,510,520,530,548,557,560,576,580,591,608,614,629,641,657,674,676,685,699,705,713,714,720,712,718,724,718,727,721,729,729,731,725,734,738,731,729,736,736,731,729,735,731,735,731,729,718,714,709,703,689,681,667,654,646,638,624,624,598,588,573,553,551,532,518,507,491,482,457,448,427,409,391,376,357,341,331,316,296,276,265,245,229,211,193,173,153,138,112,86,82,49,50,38,6,-5

Burada Ölçü aletleri 4.12A ölçerken Ben 4.21A hesaplıyorum.

Son Olarak yine tam dalga fakat daha yüksek bir akım değeri için aldığım değerler.
-29,-64,-84,-103,-127,-158,-190,-214,-238,-273,-311,-334,-367,-394,-416,-445,-476,-501,-523,-545,-573,-602,-618,-636,-669,-685,-707,-731,-746,-764,-794,-805,-826,-842,-850,-862,-883,-922,-922,-937,-960,-985,-1006,-1022,-1036,-1057,-1070,-1069,-1085,-1092,-1094,-1102,-1106,-1109,-1111,-1114,-1131,-1116,-1125,-1127,-1129,-1124,-1133,-1143,-1133,-1130,-1133,-1138,-1138,-1141,-1137,-1141,-1140,-1136,-1136,-1129,-1122,-1106,-1088,-1074,-1056,-1034,-1029,-1003,-989,-970,-952,-928,-922,-894,-871,-858,-833,-808,-796,-771,-740,-724,-694,-666,-634,-609,-587,-565,-533,-506,-483,-459,-425,-404,-376,-352,-323,-300,-276,-247,-217,-181,-156,-126,-97,-67,-33,-16,9,31,63,85,110,141,164,186,212,235,275,305,339,358,396,415,450,480,505,531,557,576,602,621,642,663,686,708,733,752,769,795,816,837,848,859,874,891,910,933,946,961,977,1009,1024,1044,1056,1076,1088,1093,1099,1127,1127,1127,1127,1131,1127,1130,1127,1135,1136,1139,1140,1143,1143,1143,1143,1147,1138,1140,1148,1148,1147,1151,1154,1145,1139,1127,1127,1127,1082,1063,1055,1031,1017,990,976,959,946,925,906,889,871,837,831,803,779,760,731,717,678,654,625,603,572,552,521,498,471,451,416,394,366,339,315,289,262,215,198,168,127,105,82,51,31,16,-25,-52,-70,-96,-132,-150,-176,-206,-234,-269,-296,-330,-357,-390,-420,-442,-468,-494,-526,-547,-568,-592,-607,-627,-650,-672,-691,-728,-741,-765,-785,-794,-826,-841,-859,-862,-883,-922,-922,-929,-967,-973,-993,-1015,-1026,-1050,-1068,-1082,-1086,-1100,-1100,-1098,-1100,-1104,-1115,-1120,-1117,-1124,-1121,-1126,-1123,-1125,-1130,-1131,-1135,-1138,-1130,-1135,-1140,-1139,-1137,-1139,-1134,-1141,-1138,-1137,-1129,-1114,-1095,-1080,-1072,-1046,-1035,-1012,-983,-973,-954,-937,-922,-890,-881,-863,-844,-820,-798,-775,-752,-735,-701,-684,-649,-621,-595,-574,-544,-520,-492,-466,-434,-409,-389,-359,-331,-308,-278,-255,-201,-179,-164,-129,-105,-64,-33,-11,16,35,53,79,102,125,147,181,208,230,267,301,331,358,387,418,441,472,502,517,552,573,592,614,640,657,681,706,721,747,770,791,810,832,844,857,871,879,908,924,939,961,982,999,1014,1035,1056,1068,1077,1095,1095,1099,1127,1127,1127,1127,1127,1129,1132,1134,1136,1133,1136,1144,1141,1149,1138,1143,1143,1152,1143,1143,1145,1149,1145,1140,1139,1135,1127,1099,1091,1082,1056,1035,1026,1008,984,964,947,938,912,897,873,855,835,810,790,767,744,719,687,665,639,614,586,551,529,506,480,448,431,396,372,347,317,299,271,236,210,182,140,119,75,55,34,16

Ölçü aleti 7.84A Hesaplarken Ben 7.85A hesapladım.

Ben mi hesap hatası yapıyorum yoksa yöntemmi yanlış. Anlaşılan o ki Sıfır geçişinde örnek almaya başlamak pek birşey değiştirmiyor.

Son olarak Aklıma takılan şu var. Acaba ADC den okuduğum HAM değerleri RMS hesaplarına sokmadan önce 1.65V ofset değerini çıkarmam sonucu etkiliyor olabilirmi? Aklıma bundan başka birşey gelmiyor. 

Yukarıdaki 500 Adet örneği analiz edebilecek olan varmı?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 16 Aralık 2017, 12:13:42
Galiba oldu :) iyiki şu değerleri verdin teşekkürler, yoksa mümkün değildi.
Burda kod ve exeler var verdiğin değerlerler ile devcpp de hesaplattım.

http://dropmefiles.com/Kvl2n

Küçük bir kod eklemen gerekiyor offset düzelme diye yazdım.
Peki nasıl oluyor .

(https://s18.postimg.cc/7l1q98evd/orj.jpg) (https://postimg.cc/image/ebi7io211/)

Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 16 Aralık 2017, 17:48:13
@iboibo    Asıl ben Teşekkür ederim.  Sorun şimdi belli olmaya başladı. Fakat anlamadığım birkaç nokta var. Çünkü sayenizde başka bir hatamı daha fark ettim. Ben ADC den değer okurken ofset değerimi 1.65V olarak kabul edip okuduğum değerlerden 2048 değerini çıkartıyordum. Fakat bazen ofset değeri tam 1.65V olmuyor 1.60V'lara kadar düşüyor. Bu durumda ofset değeri kaymış oluyor.(Sanırım benim en büyük hatamda bu oldu).

ADC den okumuş olduğum HAM veriler üzerinden otomatik olarak ofset değerini hesaplamam mümkünmüdür? Bu durumda gelen değerler 0-4095 arası olacak. Bu değerler içerisinden ofseti bulup RMS hesabı öncesinde ofset değerini çıkarmam gerekiyor. Bu işlemi nasıl yaparım?

Siz Ofset düzeltme olarak bir işlem yapmışsınız RMS öncesinde ama nasıl çalıştığını açıkçası anlayamadım. Bunu biraz anlatabilirmisiniz?.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 16 Aralık 2017, 19:48:19
Girişteki voltajdaki değişimdeki sorun tabiki önemli.

Bunu çözmek için Adc kalibrasyonu yapabilirsin Hal library içinde vardı.
Adc girişine direnç kondansatör koyup denemeler yaparak kalibrasyonu iyileştirebilirsin.
ACS entegresinin kendi içinde kalibresini yapıyor zaten ,Artık yapacak bişey yok.


Fakat buradaki durum çok farklı, girişin yüzdeyüz doğru olsa bile bu hesaplamayı yapman gerekiyor.


Buradaki durum elektronik değilde fiziksel olarak açıklanması gerekiyor herhalde.

Büyük ihtimalle enerji hesaplamalarında sorun olduğu için bu RMS denen şey bulunmuştur.
Mesela bir dirence  titreşimi olmayan akım versek ne kadar ısınır, peki bir
dirence ,içinde ripple iniş çıkışları  olan akım versek ne kadar ısınır ?


RMS hakkında internette detaylı bilgi yok mu ? Arduno projeleri görüyorum sadece. 

Kodları resimle ancak açıklayabilirim




(https://s18.postimg.cc/lppmbmyih/ffff.jpg) (https://postimg.cc/image/648aromk5/)
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 16 Aralık 2017, 20:23:40
Ben sadece dalganın 0v izdüşümü hesaplaması işini anlayamadım. Böyle birsey ile ilk defa karşılaşıyorum. Bunun matematiksel bir alt yapısı varmı? Ayrıntısını nasıl öğrenebilirim? Birde giriste 2048 degerini çıkarmasak nasıl çalışacak? Çünkü o işi yani 2048 degerini otomatik hesaplatıp çıkarmak ıstiyorum.

Rms ile ilgili cok fazla bilgi var. Teorik olarak bilgim var ama bu tür konular genellikle uygulamaya yonelik pratik bilgiler istiyor. Onlarıda internette bulmak zor.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 16 Aralık 2017, 23:37:32
İlk başta 2048 çıkarma ,  tek for döngüsü ile halledeblirsin.

bb=kk/500; dan sonra  bb+=2048;  dersen  tek seferde halledersin .  Acs711 boşta V/2 çıkış verdiği için mecburen bu sayıyı çıkarmamız
lazım rms yapmadan önce.

İzdüşüm olayını birazcık düşünsen anlarsın karmaşık bişey değil sonuçda 1D sadece y koordinatı ,  2D, 3D izdüşümlerde  var bu ne ki.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: sadogan - 17 Aralık 2017, 01:19:34

(https://s2.postimg.cc/jp0ozj3mt/image.png) (https://postimg.cc/image/jp0ozj3mt/)

(https://s2.postimg.cc/edlsetp9x/image.png) (https://postimg.cc/image/edlsetp9x/)

Grafiklerini çizdirince, 1 ci ölçüm değerlerinde bir simetri hatasi var.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 18 Aralık 2017, 10:31:03
    cumulative_sum_phaseA = cumulative_sum_phaseA + phaseCurrentA - moving_average_phaseA;
    moving_average_phaseA = cumulative_sum_phaseA >> MOVING_AVG_WINDOW_SIZE;

    /*Bounding the offset value */
    if (moving_average_phaseA > CURRENT_OFFSET_MAX)
    {
        moving_average_phaseA = CURRENT_OFFSET_MAX;
    }
    else if (moving_average_phaseA < CURRENT_OFFSET_MIN)
    {
        moving_average_phaseA = CURRENT_OFFSET_MIN;
    }

    phaseCurrentA = (phaseCurrentA - moving_average_phaseA); // Removing the offset
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 19 Aralık 2017, 10:53:13
Alıntı yapılan: iboibo - 16 Aralık 2017, 23:37:32
İlk başta 2048 çıkarma ,  tek for döngüsü ile halledeblirsin.

bb=kk/500; dan sonra  bb+=2048;  dersen  tek seferde halledersin .  Acs711 boşta V/2 çıkış verdiği için mecburen bu sayıyı çıkarmamız
lazım rms yapmadan önce.

İzdüşüm olayını birazcık düşünsen anlarsın karmaşık bişey değil sonuçda 1D sadece y koordinatı ,  2D, 3D izdüşümlerde  var bu ne ki.

Araya fi naller girdiği için birkaç gündür bakamadım. Dün akşam sizin yöntemi reel de denedim fakat bir sıkıntı var çözemedim. Boşta akım çekilmiyorken değerler sürekli belirli bir aralıkta örneğin 0,5-8A arası geziniyor. Böyle bir sorun var. Tekrar bu konuya bakacağım.

@sadogan  o konuya tekrar bakacağım ama sensör verisi bu şekilde gibi.

Alıntı yapılan: hasankara - 18 Aralık 2017, 10:31:03
    cumulative_sum_phaseA = cumulative_sum_phaseA + phaseCurrentA - moving_average_phaseA;
    moving_average_phaseA = cumulative_sum_phaseA >> MOVING_AVG_WINDOW_SIZE;

    /*Bounding the offset value */
    if (moving_average_phaseA > CURRENT_OFFSET_MAX)
    {
        moving_average_phaseA = CURRENT_OFFSET_MAX;
    }
    else if (moving_average_phaseA < CURRENT_OFFSET_MIN)
    {
        moving_average_phaseA = CURRENT_OFFSET_MIN;
    }

    phaseCurrentA = (phaseCurrentA - moving_average_phaseA); // Removing the offset


Hasan hocam Otomatik DC ofseti çıkarmak için yanlış anlamadıysam şöyle yapmam gerekiyor. Bu işi düzgün yapsam bütün sorunlar çözülecek gibi.

N tane örnek var. Bu örneklerin RMSini hesaplamadan önce DC ofseti çıkarmanız gerekiyor. DC ofset dediğimiz zaten N tane örneğin toplamının ortalaması olacağı için Bu örnekleri toplayıp ortalamasını alırsak bize DC ofset değerini verecek. Sinyal simetrik sinüs bir sinyal ise zaten DC ofset sıfır olur. RMS hesabından önce bu dc ofset değerini ana örneklerden çıkarıyorsunuz.

Kodun ilk başında cumulative_sum_phaseA  satırında ne yapılıyor onu tam anlayamadım. Anlık gelen Faz akımından bir önceki ortalama değer çıkartılıyor elde edilen fark toplanıp belirli bir aralığa oranlanıyor sanırım.

Ortalama Almak için sizde belirli bir zaman içerisinde örneklerinizi alıp işliyormusunuz? Yoksa daha farklı bir sistem mi işliyor arka planda.

Ölçümü mü iyleştirecek ayrıntıları öğrenmeye çalışıyorum.  :) RMS almak işin en kolay herhalde


Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 19 Aralık 2017, 16:09:55
Dostum  verdiğim kodlardaki değişkenlere dikkat et,  uint32 olmayacak signed  int olacak in32_t olacak .
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: hasankara - 19 Aralık 2017, 22:50:51
Senin ölçtüğün akım değerinden çıkardığın offset değerinin, 3 aşağı 5 yukarı diye limitleyebildiğin hareketli hali. Hareket katarken filtreleyerek bunu sağlıyor. Window size ise filtrenin katsayısını belirliyor. Değişkenler static olmalı ve her yeni gelen veri ile güncellenmesi sağlanmaktadır.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 20 Aralık 2017, 00:26:51
Ortalama alip bunu alinan samplelardan cikartma isi de nerden cikti simdi?

Giristen 0 Amp akarken ADC den okudugunuz deger ofsettir. Bunu okudugunu tum ADC degerlerinden cikartip karelerin toplaminin...... islemini yapacaksin.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 20 Aralık 2017, 00:35:16
Selamlar

@iboibo İlgin için teşekkürler. Sorunu çözdüm gibi.

@Zoroaster düzgün bir sonuç alamıyorum o şekilde. İlk başta dediğin gibi yaptım, Girişten akım akmıyorken okuduğum değeri örneklerden çıkarıyordum. Fakat yarım dalga sinüste olduğu gibi ofseti kaymış sinyallerde sorunlu çalışıyordu. Bu şekilde onuda çözdüm sanırım.

Şimdi DC Ofseti basitçe değerlerin ortalamasını alarak hesapladım. RMS'den önce bu değeri örneklerden çıkardım. Şimdi gayet tutarlı sonuçlar alıyorum.

Hesabım aşağıdaki gibi.
float calc_rms_current(void)
{
   uint16_t i=0;
uint32_t isum=0;
int32_t dc_ofset=0;
int32_t iadc=0;
float irms=0,rms_current;
 
for(i=0;i<500;i++)
{
   dc_ofset+=ADCReadings[i*2+1];
}

dc_ofset = dc_ofset /500;

for(i=0;i<500;i++)
{
   iadc = ADCReadings[i*2+1]-dc_ofset;
isum += iadc * iadc;
}

irms = sqrt((float)isum / 500.0);

rms_current=(irms*7.85) / 798.00;  //Akım değerini oranlıyoruz.
return rms_current;
}


Birkaç örnek vermek gerekirse

Ölçü aletim 0,551A ölçerken Ben 0,558A ölçüyorum
Ölçü aletim 2.785A ölçerken Ben 2.783A ölçüyorum. (Hatalı ölçüm yaptığım yarım dalga akım sinyali var)
Ölçü aletim 4.12A ölçerken Ben 4,192A ölçüyorum.
Ölçü aletim 7,85A ölçerken Ben 7,9821A ölçüyorum.

Daha yüksek akımlarda denemedim. Ama akım arttıkça biraz hata oranım artıyor. Yinede kabul edilebilir sonuçlar ama belki dahada iyileştirme yapılabilir. 

Bu sonuçlar nasıl hocam sizce?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Zoroaster - 20 Aralık 2017, 00:43:02
Sensoru falan devre disi birakip sinyal jenaratorunden sinyale 1.65v ofset ekleyip "ADC"ye gir. RMS degeri hesapla.
Dalga seklini ucgen yap bir daha hesapla. Bu sekilde deney yapip bir kere hesap rutinlerinde hata olmadigindan %100 emin ol.

Verilerine bakip hesaplamak icin zamanim yok. Sinyalin ortalama degerini alarak ofset bulma isi mantigima hic yatmadi.

Başlık: Ynt: True RMS'de periyot konusu
Gönderen: cetin1990 - 20 Aralık 2017, 00:49:55
Sinyalin ortalama degerini alarak ofset bulma isi gayet stabil çalışıyor. Yalnız çerçeveyi kısa tutmak gerek. Ve birden fazla çerçeve gerekli. 10 saniyelik sinyalimiz olsun. Bunu 80ms dilimler halinde adım adım işleriz.

Çerçeve niçin gerekli? Çünkü DC offset her yerde uzun süre boyunca sabit olmayabiliyor. Kendi çerçevesinde bakılıp gerekirse düzeltilmesi gerekir.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 20 Aralık 2017, 00:52:14
Yanlız bu şekilde doğru akım  ölçeceksen hata verir bilgine.

Önceki sayfada çizdiğim gibi.

Ripple sallantıları olan dc akımı düşün önceki sayfada verdim.

AC ' de bu şekilde de olur.

Bu bilgi geçsin eğer sallantılı doğru akım ölçülecekse daha önce sayfadaki izdüşüm olayını unutmayınız.
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: Mucit23 - 20 Aralık 2017, 12:46:39
Hocam Doğru akım için belki ayrı bir algoritma yazılabilir. Ölçü aletlerinde de AC-DC kademesi var sonuçta. Benim cihaz DC ölçmeyecek o yüzden ekstra bir önlem almaya gerek yok gibi.


@Zoroaster En son dediğini yapacağım. Onun için Labaratuvara gitmem lazım bende frekans jeneratörü yok.


Bir sorum daha olacak. ACS711 Akım sensörü çıkışının tam sıfır geçişini tespit etmem gerekiyor. Bunu normalde ACS711 çıkışına Fet girişli bir opamp ile bir komparatör bağlayarak yaptım. Komparatörün - Girişine iki adet Gerilim Bölücü dirençle VCC/2 verdim. Bu sayede 0 geçişlerini komparatör çıkışını izleyerek tespit edebildim. 0,8A ve üzerinde iyi çalışıyor fakat düşük akımlarda Pek doğru çalışmıyor. Düşük akımlarda aldığım kare dalganın doluluk oranı %50 den farklı bir değere gidiyor. Dolayısıyla problem oluşuyor. Bunu daha farklı nasıl yapabilirim önerisi olan varmı?
Başlık: Ynt: True RMS'de periyot konusu
Gönderen: devrecii - 20 Aralık 2017, 16:19:04
Analog watchdog deneyebilirsin.