Fungsi pada Scilab dan cara lain menghitung RMS gelombang sinus

Pada post sebelumnya telah diungkapkan uji coba penggunaan Scilab untuk perhitungan numeris average (mean) dan RMS untuk gelombang sinus. Sedangkan perhitungan simbolik untuk menurunkan persamaan average dan RMS gelombang sinus dipergunakan Maxima, yang telah juga saya ungkap di post yang lain. Persamaan-persamaan ini bisa dibuktikan dengan percobaan menggunakan komponen hardware, dibantu dengan simulasi sebagai pembanding [link].

Pada post ini akan diungkapkan ulang mengenai penggunaan Scilab dengan fungsi. Juga sekaligus beberapa cara lain untuk menghitung hal yang sama yang pernah diungkap di post sebelumnya.

 

Gambar 1.

[su_panel border=”2px solid #7FFF81″ shadow=”1px 2px 2px #7FFF81″ radius=”10″]

Pada bagian pertama ini percobaan penggunaan Scilab dimulai dari bentuk yang sederhana. Persamaan untuk mencari nilai RMS dari gelombang sinus dilakukan dengan pengaturan bahwa nilai amplitudonya (A_in) tetap yaitu bernilai satu.

Di bagian ini, sama seperti pada post terdahulu, kembali akan dimulai dengan penggunaan fungsi sqrt dan integrate.

clear;
clc;
A_in=1;
A_rms= A_in * sqrt((1/(2*%pi))*integrate('(sin(x))^2','x',0,(2*%pi)))

Gambar 2.

Gambar 3. Hasil perhitungan.

Pada Gambar 3, dapat dilihat hasil perhitungan numerik untuk mencari nilai RMS gelombang sinus.

Gambar 4. Nilai A_in diganti menjadi 100.

Gambar 5. Hasil perhitungan, nilai A_rms.

[/su_panel]

[su_panel border=”2px solid #FF6473″ shadow=”1px 2px 2px #D95562″ radius=”10″]

function [coef1,A_rms]=hitungRMS(A_in)
    coef1=sqrt((1/(2*%pi))*integrate('(sin(x))^2','x',0,(2*%pi)))
    A_rms=coef1*A_in
endfunction

Contoh salah:

Gambar 6.

Gambar 7.

Gambar 8.

Perhatikan penyebab sehingga Scilab menampilkan pesan kesalahan pada Gambar 8.

Contoh benar:

Gambar 9. Penampilan hasil perhitungan dalam matrix.

Gambar 10. Penamaan matrix pada pemanggilan fungsi.

Gambar 11. Pemanggilan fungsi tanpa menyediakan matrix untuk hasil.

[/su_panel]

[su_panel border=”2px solid #65E6FF” shadow=”1px 2px 2px #65E6FF” radius=”10″]

Penggunaan fungsi linspace dan mean.

function Arms=hitungRMSv2(Ain,divr)
    x=linspace(0,2*%pi,divr)
    y=sin(x)
    Arms=Ain*sqrt(mean(y.^2))
endfunction

Gambar 12.

Gambar 13.

[/su_panel]

[su_panel border=”2px solid #A46D00″ shadow=”1px 2px 2px #A46D00″ radius=”10″]

Fungsi disp.

function Arms=hitungRMSv2(Ain,divr)
    x=linspace(0,2*%pi,divr)
    y=sin(x)
    Arms=Ain*sqrt(mean(y.^2))
    disp (Arms, 'Nilai RMS dari Amplitudo yang anda masukkan')
endfunction

Gambar 14.

Gambar 15.

Gambar 16.

[/su_panel]

[su_panel border=”2px solid #D1FF8C” shadow=”1px 2px 2px #D1FF8C” radius=”10″]

clear;
clc;
function y = f(x), y = x + 1, endfunction

Gambar 17.

Gambar 18.


clear;
clc;
function j = d(w), j = w + 1, endfunction

Gambar 19.


clear;
clc;
function j = d(w), j = w + 1, endfunction

A1=d(3)^2
A2=d(4)^2
A3=d(5)^2

Gambar 20.


clear;
clc;
function y = f(x), y = (sin(x))^2, endfunction

rms = sqrt( (1/(2*%pi)) * intg(0, 2*%pi, f))

Gambar 21.


clear;
clc;
function y = f(x), y = (sin(x))^2, endfunction
rms = sqrt( (1/(2*%pi)) * intg(0, 2*%pi, f));
printf("Nilai rms adalah :  " + string(rms));

Gambar 22.


Fungsi printf.

clear;
clc;
function y = f(x)
    y = (sin(x))^2
endfunction
rms = sqrt( (1/(2*%pi)) * intg(0, 2*%pi, f))

Gambar 23.


Fungsi intg.

clear;
clc;
function y = f(x)
    y = (sin(x))^2
endfunction
function hitungRMS(Ain)
    rmsNum = sqrt( (1/(2*%pi)) * intg(0, 2*%pi, f));
    rms = Ain * rmsNum;
    disp(rms,"Nilai rms dari sinyal masukan: ")
endfunction

Gambar 24.

Gambar 25.

Gambar 26.

Gambar 27.

clear;
clc;
function y = f(x)
    y = (sin(x))^2
endfunction
function hitungPeak(rms_in)
    rmsNum = sqrt( (1/(2*%pi)) * intg(0, 2*%pi, f));
    S_peak = rms_in / rmsNum;
    disp(S_peak,"Nilai amplitudo dari masukan rms :  ")
endfunction

Gambar 28.

Gambar 29.

Gambar 30.

[/su_panel]

[su_panel border=”2px solid #C5BB4A” shadow=”1px 2px 2px #C5BB4A” radius=”10″]

function sunu_rms
    // clear;
    clc ;
    A = 1;
    x =0:1:10;

    sig =(integrate('A^2*(sin(x))^2','x',0,2*%pi))/(2*%pi);
    disp (sig, 'Kuadrat dari sinyal adalah : ');

    y2 = round (sig);
    disp (y2 , 'Pembulatan nilai kuadrat dari sinyal adalah:');

    A_rms=sqrt(sig);
    disp (A_rms , 'Nilai RMS (cara #1) dari sinyal adalah:');

    A_rms=A* sqrt((integrate('(sin(x))^2','x',0,2*%pi))/(2*%pi));
    disp (A_rms , 'Nilai RMS (cara #2) dari sinyal adalah:');

    A_rms=sqrt((integrate('(A*(sin(x)))^2','x',0,2*%pi))/(2*%pi));
    disp (A_rms , 'Nilai RMS (cara #3) dari sinyal adalah:');

    A_rms=sqrt((integrate('A^2*(cos(x))^2','x',0,2*%pi))/(2*%pi));
    disp (A_rms , 'Nilai RMS (cara #4) dari sinyal adalah:');        
endfunction

Gambar 31.

[/su_panel]

[su_panel border=”2px solid #CCFF33″ shadow=”1px 2px 2px #CCFF33″ radius=”10″]

\(y = A\times \sin \left ( x+\theta \right )\)

clear;
clc;
function plotSig(Ain,res,end)
    //clc;
    A = Ain;
    f = 1;
    theta = 0;
    x = 0:res:end;
    y = A*sin((x)+theta);
    plot(x,y)
endfunction
plotSig(1,1e-3,2*%pi)

Gambar 32.

Gambar 33.


\(y = A \times \sin \left ( \left (2\times \pi \times f \times t \right ) +  \theta \right )\)
clear;
clc;
function plotSig(Ain,res,end)
    //clc;
    A = Ain;
    f = 1;
    theta = 0;
    x = 0:res:end;
    y = A*sin((2*%pi*f*x)+theta);
    plot(x,y)
endfunction
plotSig(1,1e-3,1)

Gambar 34.

Gambar 35.

[/su_panel]

[su_panel border=”2px solid #FF3300″ shadow=”1px 2px 2px #FF3300″ radius=”10″]

clear;
clc;
function A_sesaat(Ain,t,thetaRad)
    //clc;
    y = Ain*sin((t)+thetaRad);
    disp(y,"Nilai amplitudo")
endfunction
A_sesaat(1,1.57,0)
A_sesaat(1, (1/4)*(2*%pi) ,0)

Gambar 36.


clear;
clc;
function A_sesaat(Ain,f,t,thetaRad)
    //clc;
    y = Ain*sin((2*%pi*f*t)+thetaRad);
    disp(y,"Nilai amplitudo")
endfunction
A_sesaat(1,50,0.005,0)
A_sesaat(1,50, asin(1)/(2*%pi*50) ,0)

Gambar 37.

[/su_panel]

[su_panel border=”2px solid #9900FF” shadow=”1px 2px 2px #8900E5″ radius=”10″]

Contoh penggunaan fungsi intsplin.

clc
t=0:1e-1:2*%pi;
sqrt((1/(2*%pi))*intsplin(t,sin(t).^2))

t=0:1e-3:2*%pi;
sqrt((1/(2*%pi))*intsplin(t,sin(t).^2))

Gambar 38.

[/su_panel]

[su_panel border=”2px solid #80B3FF” shadow=”1px 2px 2px #80B3FF” radius=”10″]

Semua perhitungan yang menggunakan fungsi sin maupun cos dalam Scilab dihitung dalam radian. Sedangkan untuk mode derajat (degree) fungsi yang dipegunakan adalah sind dan cosd.

Gambar 39. [/su_panel]

[su_panel border=”2px solid #FF33CC” radius=”10″]

screenshot_20161012-020433.jpgGambar 40.

screenshot_20161012-020446.jpgGambar 41.

screenshot_20161012-020455.jpgGambar 42.

screenshot_20161012-021254.jpgGambar 43.

screenshot_20161012-021118.jpgGambar 44.

[/su_panel]

Perhitungan nilai gelombang AC dengan nilai offset

Nilai rata-rata (average) dan efektif (RMS) untuk gelombang sinus (sinusoid) telah dibahas pada post yang lalu. Pada post itu diasumsikan nilai offset sebesar nol (zero), yang artinya tidak memiliki offset. Pada post ini dipaparkan contoh simulasi dan perhitungan untuk gelombang sinus yang memiliki nilai offset.

Gambar 1.

Gambar 2.

Pada Gambar 1 dan Gambar 2 dapat dilihat pengaturan sumber tegangan dengan frekuensi 50 Hz, nilai tegangan puncak AC (AC peak) sebesar 9 Volt dan nilai tegangan offset DC sebesar 12 Volt. Dari Gambar 1 bisa dilihat bahwa nilai tegangan selalu positif dan tidak pernah mengecil (turun) mendekati nilai nol (0 Volt).

Gambar 3.

screenshot_20161003-135424.jpgGambar 4. Perhitungan nilai tegangan RMS (AC+DC) dengan Algeo.

 

Di Gambar 4 dapat dilihat bahwa nilai yang dipakai dapat berupa nilai tegangan “RMS dari gelombang sinus AC tanpa DC offset” yang dikuadratkan atau dapat menggunakan separuh dari nilai tegangan puncak yang telah dikuadratkan. Hasil dari perhitungan yang dilakukan akan sama.

 

Gambar 5. Simulasi gelombang sinus dengan offset, puncak nilai positif dan negatif.

Pada Gambar 5, karena nilai amplitudo lebih besar dari nilai tegangan DC offset maka gelombang sinus melewati nilai nol dan memasuki wilayah negatif. Bisa dicoba untuk dibuktikan sendiri bahwa cara perhitungan masih tetap sama.

Sumber di Internet mengenai hal ini dan bisa dicari dengan variasi kata-kata kunci sine wave with DC offset.


update:

Untuk mencegah kemungkinan adanya kebingungan, secara teknis artikel ini lebih tepat ditulis sebagai “gelombang sinus dengan DC offset“. Sebab terdapat contoh di mana gelombang sinus hanya berada dalam satu kuadran, kebetulan yang dipilih yaitu kuadran positif. Sehingga, karena hanya berada di satu kuadran saja (satu polaritas) maka secara resmi gelombang itu adalah gelombang searah/DC.

Tetapi cara perhitungan ini juga berlaku untuk gelombang sinus AC dengan offset, seperti di Gambar 5. Selain itu, dalam pengukuran kadang-kadang akan ditemui penyebutan seperti di gambar berikut ini.

Gambar 6.

 


 

 

Dari pembagi tegangan ke tahanan dalam [LTspice]

[intense_panel shadow=”11″  title_color=”#0fd19d” border=”1px solid #696161″]

Penggunaan LTspice untuk melakukan simulasi pembagi tegangan dan simulasi tahanan dalam.

[/intense_panel]

Gambar 1.

Gambar 2.

Gambar 3.

Gambar 4.

Gambar 5.

Gambar 6.

Gambar 7.

Gambar 8.

Gambar 9.

Gambar 10.

Gambar 11.

Gambar 12.

Gambar 13.

Gambar 14.

Gambar 15.

Gambar 16.

Gambar 17.

Gambar 18.

Gambar 19.

Gambar 20.

Gambar 21.

Gambar 22.

Belajar mempergunakan komponen sakelar di LTspice

Salah satu cara mempelajari sesuatu dengan efektif dan efisien adalah dengan mencoba dan mempelajari contoh yang sederhana. Cara ini bisa dianggap fail safe, pelajar diharapkan tidak perlu gagal dengan tidak perlu di awal proses belajar. Cara ini secara sederhana bisa dikatakan sebagai meniru yang contoh yang berhasil. Meskipun ada bagian-bagian dari proses belajar yang justru para pelajar diharapkan gagal terlebih dahulu sehingga bisa mengapresiasi proses yang akan dilangsungkan.

Untuk LTspice di sistem Microsoft Windows maupun GNU/Linux (seperti Fedora, Debian, Ubuntu, Mint) terdapat beberapa contoh di folder (direktori) yang bisa menjadi awal belajar. Misalnya yang terlihat pada Gambar 1, direktori contoh untuk edukasi (bukan simulasi produk Linear Technology).

Gambar 1.

Untuk mempelajari penggunaan komponen switch pada LTspice, ada baiknya memulai dari contoh simulasi di file Vswitch.asc seperti pada Gambar 1.

Gambar 2.

Gambar 3.

Gambar 4. Penamaan switch.

Penamaan sakelar (switch) bisa diubah-ubah seperti terlihat di Gambar 4. Namun sebaiknya penamaan menggunakan sesuatu yang bermakna dan mudah mengingatkan kembali mengenai peran sakelar atau kerja sistem.

Gambar 5. Pengaturan switch.

Nilai dari pulsa tegangan yang mengendalikan sakelar dapat diatur sesuai keperluan seperti terlihat pada Gambar 5.

Gambar 6. SPICE directive untuk switch.

Dengan menggunakan shortcut ‘S’ pengguna dapat mengakses SPICE directive. Bisa juga dengan menekan ‘T’ lalu memilih radio button SPICE directive, seperti pada Gambar 6. Bisa juga melakukan hoover dengan mouse tepat di atas tulisan .model SW01 (yang merupakan SPICE directive) seperti yang tertulis pada Gambar 6, lalu melakukan klik-kanan. Bisa diperhatikan kesesuaian antara penamaan switch (contohnya SW01) pada komponen dengan penulisannya pada SPICE directive. Jika berbeda maka akan menghasilkan kesalahan.

Selebihnya silakan dicoba-coba sendiri.

Rata-rata dan RMS dengan WolframAlpha

Pada post ini saya hanya akan menyampaikan beberapa screenshot yang menunjukkan bagaimana WolframAlpha dapat dipakai sebagai sarana belajar untuk memahami tentang average (rata-rata) dan RMS.

screenshot_20161002-013348.jpgGambar 1.

screenshot_20161002-014136.jpgGambar 2.

screenshot_20161002-013226.jpgGambar 3.

screenshot_20161001-000242.jpgGambar 4. Nilai average untuk setengah gelombang sinus (dari 0 sampai π).

screenshot_20160930-212738.jpgGambar 5. Nilai RMS untuk satu gelombang penuh sinus (dari 0 sampai 2π).

screenshot_20161002-013651.jpgGambar 6. Contoh konversi tegangan puncak ke RMS.

screenshot_20160930-210735.jpgGambar 7. Power RMS.

font cache: Ψ α β π θ μ Φ φ ω Ω ° ~ ± ≈ ≠ ≡ ≤ ≥ ∞ ∫ • ∆