Efektif değer hesaplamanın basit yolu

Başlatan Zoroaster, 31 Ekim 2016, 20:53:49

ferdem

new_rms_2 yaptım, şu şekilde değil mi:
close all
clc
per=20;
t=0:0.5e-3:per;
x=(linspace(1,100,length(t))).*sin(2*pi*t);
subplot(1,2,1)
plot(t,x);
ylim([-150 150])
xlabel('t(saniye)');
ylabel('Voltaj(V)');


% sum(abs(x))*1e-3
y=zeros(1,length(x));
%Ve(n)= [Ve(n-1) * 16383 + V(n)*V(n)/Ve(n-1)] /16384;
new_rms=1;
new_rms_2=1;
for k=1:length(x)
    new_rms=[new_rms*16383+x(k)*x(k)/new_rms]/16384;
    new_rms_2 = (1.0/16384) * (16383.5*new_rms_2 + 0.5*x(k)*x(k) / new_rms_2);
    y(k)=new_rms;
    y2(k)=new_rms_2;
end
new_rms
subplot(1,2,2)
plot(y,'b')
hold on
plot(y2,'g')


y2=zeros(1,length(x));
total_energy=0;
for k=1:length(x)
    total_energy=total_energy+x(k)*x(k)*t(2)-t(1);
    avg_power=total_energy/[t(k)-t(1)];
    vrms=sqrt(avg_power);
    y2(k)=vrms;
end
vrms
plot(y2,'r')
legend('ZoroasterRMS','6761oneri','TrueRMS')
xlabel('t(saniye)');
ylabel('Vrms(V)');




fatih6761

Alıntı yapılan: ferdem - 04 Kasım 2016, 02:28:50
new_rms_2 yaptım, şu şekilde değil mi:
close all
clc
per=20;
t=0:0.5e-3:per;
x=(linspace(1,100,length(t))).*sin(2*pi*t);
subplot(1,2,1)
plot(t,x);
ylim([-150 150])
xlabel('t(saniye)');
ylabel('Voltaj(V)');


% sum(abs(x))*1e-3
y=zeros(1,length(x));
%Ve(n)= [Ve(n-1) * 16383 + V(n)*V(n)/Ve(n-1)] /16384;
new_rms=1;
new_rms_2=1;
for k=1:length(x)
    new_rms=[new_rms*16383+x(k)*x(k)/new_rms]/16384;
    new_rms_2 = (1.0/16384) * (16383.5*new_rms_2 + 0.5*x(k)*x(k) / new_rms_2);
    y(k)=new_rms;
    y2(k)=new_rms_2;
end
new_rms
subplot(1,2,2)
plot(y,'b')
hold on
plot(y2,'g')


y2=zeros(1,length(x));
total_energy=0;
for k=1:length(x)
    total_energy=total_energy+x(k)*x(k)*t(2)-t(1);
    avg_power=total_energy/[t(k)-t(1)];
    vrms=sqrt(avg_power);
    y2(k)=vrms;
end
vrms
plot(y2,'r')
legend('ZoroasterRMS','6761oneri','TrueRMS')
xlabel('t(saniye)');
ylabel('Vrms(V)');




Evet hocam doğru bu şekilde. İlginçtir ki pythonda küçük bir program yazıp denediğimde düşük frekanslarda hata yüksek çıkıyor. Yüksek frekanslarda daha yakın sonuçlar alıyorum. Araştırmaya değer bir konu.

Zoroaster

Alıntı yapılan: FxDev - 03 Kasım 2016, 22:11:43
Puf artık komik bile olmaktan çıktı.

Bari şu foruma yanlış bilgi verme, zavallının biri inanıp bunu kullanacak sonra saç baş yolacak gariban, insanlar bu yüzden ekmeklerinden bile olabilir. 100 kere tartmalıyız bir şeyi paylaşırken forumda bu yüzden.

Bak Fxdev böyle saçma sapan cevaplarla ancak beni sinirlendirmiş oluyorsun. Bu yaptığının teknik bir tartışma ile yakından alakası yok. Algoritmayı süper anladın prensibinin yanlış olduğunu da buldun sonra da millete hey aman ha bunu sakın kullanmayın diye nasihatta bulunuyorsun öylemi?

Lütfen kendine gel kendine çeki düzen ver.

Madem algoritmanın yanlış olduğundan bu kadar eminsin bunu saygın bir teknik adam olarak
matematiksel yöntemlerle açıkla.

A:  Bu efektif değer algoritmasını kullanmayalım.
B:  Neden?
A:  Fxdev öyle diyor

Git işine. Biraz matematik öğren gel.

Ben bu algoritmanın matematiksel temeli olduğunu kaç kez söyledim. Sadece özünde ne olduğunu söylemedim.

Bu durumda senin algoritmayı çürütebilmen için  matematiksel yaklaşman gerekir.
Fxdev ne ya?

Böyle yapmayın şöyle yapın ne bu matematiksellik mi? Bilimsellik mi?

Seytan deliginden kacti.

FxDev

#108
Z öyle diyoruz anlamıyorsun, böyle diyoruz hayır diyorsun. Whatssup üzerinden yazdım, buradan yazdım, bir önceki mesajımda belirttim. Bizim yazdıklarımızı okumuyor, bir şey bilmemekle itham ediyorsun (videodan bahsediyorum). Olay böyle olunca da kusura bakma kaçtığını hissediyorum. (Şimdi  hiddetlenme hemen). Artı diyorsun ki matematik ağzı ile konuş bana; videondaki hataları aşağıdaki mesajda belirttim. En basitinden 1/T gördüğünde "bu periyodun tersidir, öyleyse bu frekansla ilintili" dersen her gördüğün sakallı ile dede ile ilgili sözü hatırlatırım.

Aşağıda yazdığıma cevap verdin mi, hayır, demedin ki öyle değil böyle değil. Ha diyorsan ki seni sallamıyorum, o zaman sonraki mesajlarımı da sallama.

Alıntı yapılan: FxDev - 03 Kasım 2016, 15:21:13
(Resim gizlendi görmek için tıklayın.)

@mihri  +1500

Zaten bu yolla ancak periyottan bağımsız RMS hesabı yapabiliyoruz/m. Pencereyi büyüttükçe de doğruluğun artar. İşin olayı da güzelliği de bu, böylelikle sinyalin frekansından bağımsız olursun. Örnekleme periyodunu ve pencereni arttırdıkça sonucunun doğruluğu artar.

Şebekede çalışırken böylelikle çok az örnek bile iş görür, bir de önceki örneklerle ortalama alınırsa atıyorum yeni örneğin %80'i eskinin %20si gibi low pass filtrede yaparsın.

Bak yukarıdaki kağıda iki dkda çizdim. Ben 1. alanın 2. alanın 3. alanın RMS'ini tık bu yolla hesaplarım.

Artı bir şey daha, benim algoritmam float işlemler barındırmıyor. Örnek sayımı ikinin katları seçerek basit kaydırma işlemleriyle olayı hallediyorum. 16324 gibi rakamlara bölmeye de gerek yok. Düşük güçteki işlemcilerde deneyin bir de bu işlemleri, bilgisayarda yapması bebek oyuncağı bilmemkaç bit float hesabı var.

Onun için diyorum işleminiz doğru sonuç veriyordur bu beni ilgilendirmez, benim ilgilendiğim konu hızlı olması.

Ayrıca birileri integral bilmiyor, 0-T aralığında integral demek, 0-T aralığındaki sinyalin fonksiyonunu işletmek demek. Yani RMS integralini o aralıkta işletiyorsun demek. Periyodun o demek değil. Biz şebekede işler daha iyi hesaplansın diye, RMS peryodu ile şebeke peryodunu birbirine eşitliyoruz ki RMS değerlerimizin hesaplama penceresi hep aynı olsun ve RMS değeri birbirine yakın çıksın.

Tekrar ediyorum, formüldeki 1/T sinyalin frekansı demek değil, türevin alınacağı aralık demek.

İntegralin tepesine yazıyorsun 0'dan T'ye kadar diyorsun. Bu ne demek 0 ile T aralığın, integral içerisindeki formülü işlet demek. Bir nevi alan hesaplama. Burada sinyalin frekansı yok ki, frekans bileşeni yok. Senin oraya yazdığın delta_T örnekleme periyodun, N'de örneğin. Yani bir pencereyi tanımlıyorsun yine.

Anlık RMS değeri olamaz, belirli bir sürenin RMS değeri olur olay bununla ilintili.

Aşağıdaki mihri'nin sorusuna yanıtı bir türlü vermedin mesela. Güzelce tanımlıyoruz, cevap yok.

Alıntı yapılan: mihri - 03 Kasım 2016, 16:15:40
Orta noktayı bulucaz diye hissediyorum...

Aynı örnekleme frekansında aynı sayıda örneği kullanarak klasik yöntemle RMS hesaplarsak senin yöntemle aynı sonucu elde ederiz doğru mu?

Eğer doğruysa senin yöntemin +'si ne?

Bunun yanında terimlerin yanlış. Bak @ferdem ne demiş: "Hesap hatalı. Öncelikle, RMS hesabı için işaretin periyodik olması veya sıfır geçiş yakalanması gerekmiyor....." Hani buna cevabın nerede?

Tek söylediğin 3-4 gündür papağan gibi, bu yöntem kanıtlandı, öyle harika, böyle süper, şöyle hızlı, böyle manyak. Buradaki amatörleri kandırırsın ancak bu laflarla beni değil.

Sen dedin ki bu yöntem süper, frekanstan bağımsız vs. Biz de diyoruz ki ki RMS hesabının kendisinde frekansla ilintili bir şey yok. Baktık cevap vermiyorsun bunlara, gittin bu işe yeni başlamış arkadaşlara bir şeyler söyledin.
Sonra dedim ki haa öyle mi. Bari bu işe yeni yeni başlayan insanların kafası karışmasın, ben forum için görevimi yerine getireyim. En azından 2-3 sene sonra buraları okuyanlar, bu adam yöntem önermiş, birileri de yanlış olduğunu söylemiş, öyleyse körü körüne inanmayım desin. Gayem maksadım bu.

Yoksa sana önceki mesajlarımda da belirttim, ben de RMS hesaplıyorum, frekanstan bağımsız vs. Ama benim yöntemimde herhangi bir magic trick yok. Euler o muhteşemliği yıllar önce yapmış zaten bizim yerimize.

------------------------------------------------------------------------------------
Z aslında sen anlamıyorsun ama sana garezim yok, sana gıcıklığım yok, aynı alanda çalışan bir elin parmağı kadar adamız şurada. Birbirimizin ağzına bakmamız lazım. Sıkıntı seni büyüğü olarak görüp, her dediğine koşulsuz inanan, bir grup, bir zümre var forumda. Hatta o kadar ki alnına Z bandanası asıp gezebilecekleri tanıyorum. Olası yanlış bilgi vermende bu insanlar senin dediğini doğru kabul edip çok zaman kaybedecekler. O yüzden senin gibi bir adamın çok daha tartılı konuşması lazım, bir misyonun var bu forumda, bunun farkına var.

Ha bu arada alnına bandana asıp gezenler seni çok sevdiğinden sanma, her şey çıkar bu işlerde benden daha tecrübelisin bilirsin.
Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Zoroaster

Alıntı YapHesap hatalı. Öncelikle, RMS hesabı için işaretin periyodik olması veya sıfır geçiş yakalanması gerekmiyor. Herhangi bir "waveform" un belirli bir süre boyunca harcadığı enerjiye karşı düşen enerjiyi harcatan bir DC voltaj bulunabilir. R=1 alınarak kolaylaştırılır.
Belirli bir zaman diliminde RMS bulmak için o zaman dilimindeki toplam enerjinin bulunması gerekir. Bulduğunuz toplam enerjiyi enerjinin harcandığı süreye bölüp ortalama güç bulursunuz. Pavg=Vrms^2 dir.

Ferdem çok haklısın. Fakat efektif değer ölçen ölçü aletleri için malesef ama malesef sinyalin peryodik olma şartı olmasa bile sürekli olma zorunluluğu var. Bu benim algoritmam için de geçerli.

Örneğin termik prensiple çalışan bir true RMS ampermetrenin doğru değer gösterebilmesi için, içinden akım akıtıp ısı oluşturmasını beklemek zorundasın. Her ölçü aletinin bir tepki süresi vardır. Öyle değil mi? İbreli bir ölçü aletinin doğru değeri gösterebilmesi ibrenin konum değiştirip sabit kaldığı ana kadar ölçü aletini sinyal uygulamak gerekir.

Böyle yapmadığımız için okuyacağımız yanlış değer ölçü alatinin hatası olarak değerlendirilemez.

*******************************************************

Kağıt kalemi alsaydın ve kağıda peryodik olmayan bir sinyal çizip bunun efektif değerini hesaplarmısın deseydim. Hiç sorunsuz hesaplardın.

Fakat MCU'lar bizim kadar akıllı değiller. Kağıda baktığın anda fonksiyonun peryodunu anında anlarsın değilmi?



Resimdeki sinyale bakıp efektif değeri hesapla dersem nasıl hesaplarsın?

Peryod hakkında ne diyebilirsin?

Hiç bir şey diyemezsin.

Algoritmam matematikçi değil. Kağıda bakarak kağıdın en sağında binlerce sample sonra gelecek sinyal değişimini bilemez.

Algoritmaya yanlış yaptıracağım diye elektrik tekniğinde kullanılmayan çok absürt sinyaller gireceğinizi bilseydim algoritmadaki filitreyi absürt sinyalinize göre seçerdim.

Yani ne demek istiyorum?

Kontrol teoriden hatırlayın. 1. derece sistemin basamak cevabında hata sıfıra gider.
Fakat rampa sinyaline cevabında hata olur. Parabolik sinyal cevabında hata devamlı artar.

Olay aynı şey. Algoritmamım verdiğiniz sinyal için de doğru ölçüm yapmasını sağlayabilirim.

Ama ben olsam algoritmanın doğruluğunu ispatlamaya çalışırdım.

Seytan deliginden kacti.

Zoroaster

Alıntı yapılan: fatih6761 - 04 Kasım 2016, 01:40:29
Hocam bence V nin katsayısı 16383 değil 16383.5 olmalı. Haksız mıyım?

Ayrıca bu metod sin(t) için de sin(3*t) içinde çalışmalı. Normal RMS formülünden bir farkı yok aslında.

Ve hatta sample edilen değer V ye bölünmek yerine 2*V ye bölünürse daha şık sonuçlar veriyor.

Buradaki 16383 sihirli bir sayı değil.

Bunun değeri şu olmalı daha iyi olur diyemezsiniz. Fakat çok şık sonuçlar vermesi için o rakam, sample alma süresi ve ölçüm yapılacak sinyal frekensına göre çok titiz hesaplanabilir.

Genel amaçlı olsun çarpma ve bölme işlemi basitçe shift ile yapılabilsin diye 16383 ve 16384 rakamlarını verdim. 8181 ve 8182 de yazabilirdim.

Algoritmamım bu kadar tartışılacağını inanın bilemezdim.

Eninde sonunda algoritmayı çözeceğiz. Zaten çözemezseniz ben sabredemem algoritmanın alt yapısını anlatırım.

Şu anda bilmece sormuş bir çocuğun gelen yanlış cevaplar üzerine ne zor bilmece sormuşum sevincini yaşıyorum.

Kafaları zorlayıp düşünmeye sevk ettiğim için de mutluyum.
Seytan deliginden kacti.

FxDev

@Zoroaster: Ayrıldığımız noktayı son mesajında anladım. Buradaki bir çok arkadaş gibi özel sektörde çalışıyoruz ve sonuç odaklı iş yapma durumunda kalıyoruz; bazı günler günü kurtarıyoruz. Sen ise bunu hobi olarak yapıyorsun, işin zevkine varmak istiyorsun. Kısacası ben özelde çalışan bir mühendis, sen okulda çalışan bir hoca kıvamındasın.

Kendi içimnde senin müdahil olduğun konulardan uzakta kalacağım.

Kolay gelsin.
Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Zoroaster

#112
@FxDev

Şimdi alogoritmam iyi mi kötümü?

Algoritma doğru mu çalışıyor, yanlış mı?

Endüstriyel bir cihazda kullanılabilirmi kullanılamazmı?

Bu algoritmayı foruma Zoroaster değil de ünlü bir çip üreticisinin mühendisi firmanın çıkarttığı bir uygulama notunda yazsaydı aşağıdaki cevabı yazarmıydın yazmaymıydın?

Alıntı yapılan: FxDev - 03 Kasım 2016, 22:11:43
Puf artık komik bile olmaktan çıktı.

Bari şu foruma yanlış bilgi verme, zavallının biri inanıp bunu kullanacak sonra saç baş yolacak gariban, insanlar bu yüzden ekmeklerinden bile olabilir. 100 kere tartmalıyız bir şeyi paylaşırken forumda bu yüzden.

Bana bu 4 sorunun cevabını dürüst şekilde vermeni bekliyorum.

Aslında alıntı yaptığım kısımın anlamı gayet açık. Yalan yanlış aptal bir algoritma bu bunu kullanmayın. İşinizden bile olursunuz.

Haksızmıyım?

Demekki bu algoritmayı matematiksel olarak çürüttün ve milleti uyarıyorsun.

Ben de diyorum ki lütfen matematiksel ispatını istiyorum. Benim algoritmama bu şekilde mesnetsiz saldıramazsın aşağılayamazsın.



Alıntı yapılan: FxDev - 04 Kasım 2016, 12:12:50
Z öyle diyoruz anlamıyorsun, böyle diyoruz hayır diyorsun. Whatssup üzerinden yazdım, buradan yazdım, bir önceki mesajımda belirttim. Bizim yazdıklarımızı okumuyor, bir şey bilmemekle itham ediyorsun (videodan bahsediyorum). Olay böyle olunca da kusura bakma kaçtığını hissediyorum. (Şimdi  hiddetlenme hemen). Artı diyorsun ki matematik ağzı ile konuş bana; videondaki hataları aşağıdaki mesajda belirttim. En basitinden 1/T gördüğünde "bu periyodun tersidir, öyleyse bu frekansla ilintili" dersen her gördüğün sakallı ile dede ile ilgili sözü hatırlatırım.

Aşağıda yazdığıma cevap verdin mi, hayır, demedin ki öyle değil böyle değil. Ha diyorsan ki seni sallamıyorum, o zaman sonraki mesajlarımı da sallama.

Aşağıdaki mihri'nin sorusuna yanıtı bir türlü vermedin mesela. Güzelce tanımlıyoruz, cevap yok.

Bunun yanında terimlerin yanlış. Bak @ferdem ne demiş: "Hesap hatalı. Öncelikle, RMS hesabı için işaretin periyodik olması veya sıfır geçiş yakalanması gerekmiyor....." Hani buna cevabın nerede?

Tek söylediğin 3-4 gündür papağan gibi, bu yöntem kanıtlandı, öyle harika, böyle süper, şöyle hızlı, böyle manyak. Buradaki amatörleri kandırırsın ancak bu laflarla beni değil.

Sen dedin ki bu yöntem süper, frekanstan bağımsız vs. Biz de diyoruz ki ki RMS hesabının kendisinde frekansla ilintili bir şey yok. Baktık cevap vermiyorsun bunlara, gittin bu işe yeni başlamış arkadaşlara bir şeyler söyledin.
Sonra dedim ki haa öyle mi. Bari bu işe yeni yeni başlayan insanların kafası karışmasın, ben forum için görevimi yerine getireyim. En azından 2-3 sene sonra buraları okuyanlar, bu adam yöntem önermiş, birileri de yanlış olduğunu söylemiş, öyleyse körü körüne inanmayım desin. Gayem maksadım bu.

Yoksa sana önceki mesajlarımda da belirttim, ben de RMS hesaplıyorum, frekanstan bağımsız vs. Ama benim yöntemimde herhangi bir magic trick yok. Euler o muhteşemliği yıllar önce yapmış zaten bizim yerimize.

------------------------------------------------------------------------------------
Z aslında sen anlamıyorsun ama sana garezim yok, sana gıcıklığım yok, aynı alanda çalışan bir elin parmağı kadar adamız şurada. Birbirimizin ağzına bakmamız lazım. Sıkıntı seni büyüğü olarak görüp, her dediğine koşulsuz inanan, bir grup, bir zümre var forumda. Hatta o kadar ki alnına Z bandanası asıp gezebilecekleri tanıyorum. Olası yanlış bilgi vermende bu insanlar senin dediğini doğru kabul edip çok zaman kaybedecekler. O yüzden senin gibi bir adamın çok daha tartılı konuşması lazım, bir misyonun var bu forumda, bunun farkına var.

Ha bu arada alnına bandana asıp gezenler seni çok sevdiğinden sanma, her şey çıkar bu işlerde benden daha tecrübelisin bilirsin.
Seytan deliginden kacti.

fatih6761

#113
Alıntı yapılan: Zoroaster - 04 Kasım 2016, 12:29:08
Buradaki 16383 sihirli bir sayı değil.

Bunun değeri şu olmalı daha iyi olur diyemezsiniz. Fakat çok şık sonuçlar vermesi için o rakam, sample alma süresi ve ölçüm yapılacak sinyal frekensına göre çok titiz hesaplanabilir.

Genel amaçlı olsun çarpma ve bölme işlemi basitçe shift ile yapılabilsin diye 16383 ve 16384 rakamlarını verdim. 8181 ve 8182 de yazabilirdim.

Algoritmamım bu kadar tartışılacağını inanın bilemezdim.

Eninde sonunda algoritmayı çözeceğiz. Zaten çözemezseniz ben sabredemem algoritmanın alt yapısını anlatırım.

Şu anda bilmece sormuş bir çocuğun gelen yanlış cevaplar üzerine ne zor bilmece sormuşum sevincini yaşıyorum.

Kafaları zorlayıp düşünmeye sevk ettiğim için de mutluyum.

@Zoroaster hocam eğer 16383.5 sizin için bir önem ifade etmediyse ben sizin bulduğunuzdan farklı bir metod üretmişim demektir.
Kendim nasıl yaptığımı özetleyeyim kısaca:

- 0-T integralin alınacağı aralık olmak üzere Veff değerini T nin bir fonksiyonu gibi düşündüm.

- Veff(T) fonksiyonunu T ye göre türevleyerek Veff(T) ve Vin(T) ye bağlı bir ifade elde ettim.

- Sonra dT yi sampling time yani 1 kabul edip dVeff / dT nin yerine delta Veff = Vnew - Vold deyip Vold'u karşıya attım.

- N şu anda bulunduğumuz sample numarası olmak üzere [latex]V_{new} \leftarrow V_{old} + \frac{1}{N} \left(\frac{v_{in}^2[N]}{2V_{old}} - \frac{V_{old}}{2} \right)[/latex] oldu.

- Bu formülü sık karşılaşılan periyodik sinyallerle (sin, square, sawtooth, white noise etc.) besleyince bir miktar oturma zamanı sonra RMS değerlerine yakın (bazen %1 den küçük hatayla) sonuçlar elde ettim.

Zaten farklı bir şey olduğunu sezmiştim, metodunuzda RC filtreden bahsetmişsiniz, ben sadece matematiksel türetme yaptım.
Benim yaptığım işlemlerden de kullanışlı bir şeyler çıkarmı çıkmazmı merak ediyorum.

FxDev

#114
@Zoroaster.

Sorularına yanıt vermeden yaptığım uygulamayı anlatayım. UPS tasarlıyorum, PFC kısmındayız, 3 faz şebeke ile çalışıyorum, şebekede bir sorun olduğunu 1ms altında anlayıp, aküye geçiyorum. Ve klasik UPS'lerdeki gibi PFC DC barasına akülerim asılı değil, akü sayım az. Bu yüzden algılama yapıp, hızla akülerden boost işlemi yapmam çok mühim. Hatta interleaved falan çalışmam lazım karmaşıklığı düşünebilirsin. Güç değerim 120kW.

Şimdi sorularına gelelim:

1) Algoritman kötü. Neden mi, hızlı dedin algoritman için, söylediğinle yaptığı birbirini tutmadığı için kötü. RMS hesaplamaya bir katkısı yok, response time çok yavaş. Tek bir avantajı olabilirdi, o da sqrt'den kurtarmak, ama binlerce iterasyondan sonra sonuç alacaksam bunun da bir artısı kalmıyor.
2) Algoritman doğru sonuç veriyor olabilir yalnız mikrodenetleyiciler için çok da uygun değil. Floating point işleme ve bölme işlemleri hiç kullanmıyorum ben RMS işlemlerimde. Dahası öncede söyledim, RMS'in genel kullanıldığı yer, hepimiz de biliyoruz, şebeke ile çalışmalardır. Senin algoritmanın düzgün çalışabilmesi için çok fazla iterasyona ihtiyacın var. Oysa benim şebekeyi örnekleyip hemen hesaplama yapmam lazım.
3) Endüstriyel bir cihazda kullanmam, yaptığım cihaz endüstriyel zaten. Dediğim gibi tepki süresi benim için çok yavaş.
4) Benim için kişi fark etmiyor yukarıda da dediğim gibi yine, yazardım, yazıyorum hatta yüz yüze tartışıyorum da zaten. Her gün ST/Microchip/Fairchild (Şimdi ON Semi oldu)/NXP/Mitsubishi/Semikron/Vincotech/Fuji/Nichicon vs vs vs (daha sayayım mı) firmaların FAE'leri ile, bazı durumlarında yöneticileri ile tartışıyorum, tartışıyoruz. Sen hiç hayatında silikon die tasarlattın mı? Ya da Nichicon gibi bir firmayla kafa kafaya verip kapasite tasarlattın mı. Bunları söyleyince kızarsın, bana böyle gelme diye. Her neyse, ben üretici taraftayım, gerçek olaylara dokunuyorum, sen bunu görmezden gel.

Matematiksel ispatını arkadaşlar yaptı daha önceki mesajlarda bu kadar mesaim olsa ücretimi senden almam lazım. Artı daha önceki mesajlarımda da söyledim, ben hız olayına takmıştım, baktım, benim klasik RMS hesabım bile bundan daha iyi sonuç veriyor, hem de STM8S003 gibi dünyanın en ucuz işlemcisinde. Şimdi diyeceksin ki yaptığım RMS ölçümün doğruluğuna nereden emin olacağız. Arçelik'te yapılan onlarca testten biliyorum. Şimdi @Zoroaster'in ne üdü belirsiz formülüne mi güveneyim; bir çok testten geçmiş kendi koduma mı? Sen olsan ne yaparsın, başkasının test edilmemiş koduna mı güvenirsin.

Eğer binde bir doğrulukta RMS doğruluğu verecek bir cihaz yapacak olsam, daha önceki mesajlarımda yine belirttim ne yapabileceğimi. Hatta sana ekstra FFT, THD falan da çıkarttım, es geçtin.
Ama olay hızlı, %1 keskinlikte RMS hesabı ise senin algoritman yavaş. Bu kadar NET!

Ben senin sorularını yanıtladım, şimdide sen aşağıdaki soruyu bir yanıtla bakalım.

"Aynı örnekleme frekansında aynı sayıda örneği kullanarak klasik yöntemle RMS hesaplarsak senin yöntemle aynı sonucu elde ederiz doğru mu?
Eğer doğruysa senin yöntemin +'si ne?"


Başka sorun var mı?

Ayrıca yöneticilerden istihramım, şu mesaj onaylama olayını kaldırabilirler mi? Eğer kaldırılmayacaksa tekrar yazı yazma olayım askıya alınabilir.
Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Zoroaster

@FxDev.

Forumun  değiştirilmeden önce ekranın en tepesinde hani chat yapma ekranımız vardı.
Orda RMS değer hesaplamak için yöntem varmı diye soruyordun. Ben de RMS için karekök almak zorundasın dediğimde o klasik yöntemi biliyorum onu istemiyorum diyordun.

Unuttunmu?

Sırf senin için bu gece video hazırlayacağım.

Matematiksel ispat için mesai ücretini bendenmi talep ediyorsun?

Geç bunları. Sen kim matematiksel ispat kim? Forumda matematiksel tek bir ispat verdiğin konu verdin mi ki? Hep hazır formül. Hep hazır formül.

Acaba mesele mesai parası değil de matematiğin 3 numara büyük gelmesi olabilir mi?

Bu tartışma bitsin, algoritmanın özünü açıklayayım Fxdev bile cihazlarında bu algoritmayı kullanacak emin olabilirsiniz.


Seytan deliginden kacti.

FxDev

#116
Video falan uğraşma, çektiğin her videoda onlarca hakaret yemek zorunda değilim ben, aşağıdakine adam akıllı cevap ver ben sana helal olsun diyeceğim.

"Aynı örnekleme frekansında aynı sayıda örneği kullanarak klasik yöntemle RMS hesaplarsak senin yöntemle aynı sonucu elde ederiz doğru mu?
Eğer doğruysa senin yöntemin +'si ne?"
Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Zoroaster

#117
@FxDev

Seni altetmek gibi amacım yok. Sadece algoritmamı kötülüyorsan matematiksel ispat yaparak kötüle diyorum. Algoritmaya saldırdığın şiddet ölçüsünde ben de savunurum.
Amatör dediğin adamlar sırf bu işten para kazanmıyor diye senden bilgisiz mi oluyor? Yok amatöleri kandırabilirmişim de sen kanmazmışsın? Dur yahu. Sen kimsin?
Çen çen çen laf yetiştiren fakat tek bir matematiksel ifade yazıp da düşüncesini matematiksel olarak savunamayan bir üyesin sadece. Bu yüzden benzeri sözel saldırılara kızıyorum.

Öncelikle bu algoritmayı RMS değer ölçen bir ölçü aletinde kullanılacak diye düşünürsen belki algoritmayı seversin.

1) Algoritma sağır bu yüzden kullanılamaz deniyor.

Algoritmaya çok ham bir filitre gömdüm. Neden sağır olduğunu defalarca yazdım dilimde tüy bitti bir daha yazayım ama bir daha yazdırmayın. Algoritmanın özüne ulaştığınızda algoritmayı çok hızlandırabilirsiniz dedim. Nitekim 100 küsür bin iterasyondan sonra ikibinli rakamlara inmiş bir algoritma ile video çektim yayınladım. Hala nasıl sağırlığı bahane edebiliyorsun anlamıyorum.

Kaldıki algoritmayı iyileştirip iterasyon sayısını daha da azaltabilirsiniz de dedim.

Bu algoyu (ister verdiğim haliyle ister modifiye ettiğiniz haliyle) interrupt rutinine yerleştirin demiştim. Böylece işlemci çalıştığı için zaten her ADC ölçümünden sonra bir kere bu hesap yapılmış olacak da demiştim. Herdefasında yüzbin iterasyon yapmayacaksın. Sadece sen  her interrupt geldiğinde tek satırlık bir C kodu işleteceksin. hepsi bu kadar.

Eskiden lambalı radyoları/TVleri çalıştırır çalıştırmaz ses vermez bir kaç saniye zaman geçerdi. Evet işlemcinin elektriğini verdiğinde aynı durum var. Ama işlemcinin lambaları bir ısındımı artık tıkır tıkır efektif değeri hesaplar.

Algoritma çok yoğun ağırlık ortalaması almaktadır. Sağırlığın ana nedeni budur. Fakat bu sayede nasıl bir multimetre sabit değer gösteriyorsa (+/- bir kaç değer değiştirmiyorsa) bu algoritma da sabit değer gösterir. Algoritmanın filitreleme yeteneğinden dolayı (moving average) sistemin sağır olması  algoritmanın kötü olduğuna gelmez. Filitrelemede sağırlığı çok kaldırırsanız yada filitreyi kötüleştirirseniz çok hızlanır fakat bu kez de efektif değer salınır.

2) "Aynı örnekleme frekansında aynı sayıda örneği kullanarak klasik yöntemle RMS hesaplarsak senin yöntemle aynı sonucu elde ederiz doğru mu?
Eğer doğruysa senin yöntemin +'si ne?"


Hayır. Benim böyle bir iddiam yok. Ben sadece efektif değer hesaplayabilmek için peryodu bilmeniz gerektiğini iddia ediyorum.

Her ne kadar siz aksini iddia etseniz de, bu soruyu cevapladan önce efektif değer hesabında neden peryodu bilmek gerekiyor sorusuna cevap vermem lazım. Bunun için video çekmek istiyordum aslında. Eğer bu mesajım yeterince açıklayıcı olmadıysa gene video çekebilirim.

Bir f(t) fonksiyonun herhangi bir zaman aralığında kalan bölgesi için efektif değer hesaplayabiliriz tabiki.  t1....t2 aralığında efektif değer hesaplarsak

$$Veff=\sqrt{\frac{1}{t_2-t_1}\int_{t1}^{t2}f(t)^2dt}$$

Şimdi burada $$\frac{1}{t2-t1}=\frac{1}{T}$$ yazarsam buradaki T ye Peryod demeyeceğimden emin olabilirsin. Yani her sakallıya dede demem okey mi?

Eğer bir sinyalin peryodunu bilmeden efektif değer hesaplamaya kalkarsan yanlış yaparız. Neden yaparız? Çünkü aldığımız aralık için efektif değer hesaplamış oluruz ve frekansını bilmediğin bir sinyalde kaç tane örnek alacağını bilemezsin de ondan. Diyorsunuz ya peyodu bilmeye gerek yok efektif değer frekansdan bağımsızdır.

İyi güzel de şeker kardeşlerim;

Tutup ta sinüs sinyalden 0...Pi/8 aralığında istersen 1000 tane sample  al efektif değeri hesaplayamazsın ki.

Çünkü bütün dünya bilirki sinüs sinyal, efektif ölçen aletle ölçüllürse efektif değeri budur. $$\frac{V_m}{\sqrt{2}}$$

Şimdi frekans hakkında hiç bilgin yoksa ve  0...Pi/8 aralığında aldığın örneklerle bana efektif değeri klasik yöntemle $$\frac{V_m}{\sqrt{2}}$$ olarak nasıl hesaplayacağını söylermisin?

Benim yöntemin + sı ne mi? İşte peryod yada frekans  hakkında bilgimiz olması gerekmiyor? Algoritma sürekli olarak sample alıyor sadece.

Fakat bazı limitler var. Onlara şu anda girmek istemiyorum.

Senin bana sadece yukarıda kalınca yazdığım soruya cevap vermen yeterli.


Seytan deliginden kacti.

Zoroaster

#118
Alıntı yapılan: fatih6761 - 04 Kasım 2016, 13:57:03
@Zoroaster hocam eğer 16383.5 sizin için bir önem ifade etmediyse ben sizin bulduğunuzdan farklı bir metod üretmişim demektir.
Kendim nasıl yaptığımı özetleyeyim kısaca:

- 0-T integralin alınacağı aralık olmak üzere Veff değerini T nin bir fonksiyonu gibi düşündüm.

- Veff(T) fonksiyonunu T ye göre türevleyerek Veff(T) ve Vin(T) ye bağlı bir ifade elde ettim.

- Sonra dT yi sampling time yani 1 kabul edip dVeff / dT nin yerine delta Veff = Vnew - Vold deyip Vold'u karşıya attım.

- N şu anda bulunduğumuz sample numarası olmak üzere [latex]V_{new} \leftarrow V_{old} + \frac{1}{N} \left(\frac{v_{in}^2[N]}{2V_{old}} - \frac{V_{old}}{2} \right)[/latex] oldu.

- Bu formülü sık karşılaşılan periyodik sinyallerle (sin, square, sawtooth, white noise etc.) besleyince bir miktar oturma zamanı sonra RMS değerlerine yakın (bazen %1 den küçük hatayla) sonuçlar elde ettim.

Zaten farklı bir şey olduğunu sezmiştim, metodunuzda RC filtreden bahsetmişsiniz, ben sadece matematiksel türetme yaptım.
Benim yaptığım işlemlerden de kullanışlı bir şeyler çıkarmı çıkmazmı merak ediyorum.

Hocam y=((a-1)y+ v) / a bağıntısı birinci dereceden bir filitredir.

v sinyalini low pass filitreden geçirip y sinyalini üretir.

a-1 ve a bağıntılarını kafana göre değiştirirsen hala sistem filitre özelliği gösterir fakat köşe frekansı ve filitre kazancı daha doğrusu zayıflatması değişir.

Fakat filitrenin yapısı/özü çok değişmez. Yani hala bir low pass filitredir. Daha iyi değerler alıyorum demenin sebebi köşe frekansı kaymış ve filitre edilen sinyaldeki rıpıl azalmıştır. İncelemek lazım.

Benim verdiğim ham algoritmada a=16384 Bu da 50uS sample lar altında RC=0.8 sabitine denk gelir. Yani bir hayli alçak frekansda bir alçak geçiren filitre ekledim ve dediğim gibi bu değeri öylesine verdim. Pek ala a=8192 de iş görür. Bu durumda sadece köşe frekansı kayar.

Arkadaşların gözlemlediği hantallığın sebebi RC=0.8 dir.    $$\frac{1}{2\pi{0.8}}=0.2Hz$$

Eee hantal olması çok doğal.  Fakat sistemi hızlandırmak için önlerinde şöyle bir engel var. Köşe frekansını ileri iterlerse sistem hızlanır bu kez rıpıl artar.

Sadece saksıyı iyi kullanmak gerekiyor.

Eğer hem fikir isek bir sonraki yazımda özünü yazayım artık.





Seytan deliginden kacti.

Cemre.

#119


@Zoroaster hocam en alttaki sinyal sizce response time kötü diyenlerin işini görür mü? Öyleyse ben de iban vereyim :P
Şaka bir yana, bahsettiğim kodu sadece basit bir birinci derece low pass filtre'den geçirip elde ettim ben de. Galiba aynı şeyi yapıyoruz sizinle.
Haksız mıyım?
İki gündür işi gücü bıraktım RMS hesabı yapıyorum :( Vizelerde anahtarlı relüktans makinası soracak hocaya da RMS hesabı anlatacağım :(