Posts from the ‘Script Matlab’ Category

Membangkitkan Dan Menampilkan Gelombang Multi Frekuensi Pada Matlab


Contoh berikut adalah bagaimana membuat sebuah gelombang dengan nilai frekuensi yang berbeda-beda kemudian digabungkan menjadi sebuah sinyal multifrekuensi.

close all;
clear;
a=1; %amplitudo
%—-(<7Hz), 8-12 Hz, 12-44Hz dan tinggi (>44Hz).
f1=3; % frekuensi
f2=9;
f3=25;
f4=60;
f5=150;
Fs = 80; % Sampling frequency
Fs = f5*20;
Fs=1000;
T = 1/Fs; % Sample time
L1 = 5000; % Panjang gelombang
t = (0:L1-1)*T; % Time vector
t=0:0.001:1;
t=(1:1000)*T;
x1 = a*sin(2*pi*f1*t);
x2 = a*sin(2*pi*f2*t);
x3 = a*sin(2*pi*f3*t);
x4 = a*sin(2*pi*f4*t);
x5 = a*sin(2*pi*f5*t);
x_all=x1+x2+x3+x4+x5;

figure;
subplot(3,2,1);
plot(x1);
title([‘Gelombang Sine x1 (freq=’ num2str(f1) ‘)’] )
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

subplot(3,2,2);
plot(x2);
title([‘Gelombang Sine x2 (freq=’ num2str(f2) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

subplot(3,2,3);
plot(x3);
title([‘Gelombang Sine x3(freq=’ num2str(f3) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

subplot(3,2,4);
plot(x4);
title([‘Gelombang Sine x4 (freq=’ num2str(f4) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

subplot(3,2,5);
plot(x5);
title([‘Gelombang Sine x5 (freq=’ num2str(f5) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

subplot(3,2,6);
plot(x_all);
title(‘Gelombang Sine x1+x2+x3+x4+x5’)
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Pertama dibuat sebuah gelombang dengan frekuensi 3Hz. Dengan fungsi:

a=1; %amplitudo

f1=3; % frekuensi

Fs = 80; % Sampling frequency
Fs = f5*20;
Fs=1000;
T = 1/Fs; % Sample time
L1 = 5000; % Panjang gelombang
t = (0:L1-1)*T; % Time vector
t=(1:1000)*T;
x1 = a*sin(2*pi*f1*t);

figure;
subplot(3,2,1);
plot(x1);
title([‘Gelombang Sine x1 (freq=’ num2str(f1) ‘)’] )
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Selanjutnya untuk gelombang frekuensi 9Hz:

x2 = a*sin(2*pi*f2*t);

subplot(3,2,2);
plot(x2);
title([‘Gelombang Sine x2 (freq=’ num2str(f2) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Gelombang dengan frekuensi 25Hz dibuat dengan script:

x3 = a*sin(2*pi*f3*t);

subplot(3,2,3);
plot(x3);
title([‘Gelombang Sine x3(freq=’ num2str(f3) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Gelombang dengan frekuensi 60Hz:

f4=60;

x4 = a*sin(2*pi*f4*t);

subplot(3,2,4);
plot(x4);
title([‘Gelombang Sine x4 (freq=’ num2str(f4) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Gelobang frekuensi 150Hz:

f5=150;

x5 = a*sin(2*pi*f5*t);

subplot(3,2,5);
plot(x5);
title([‘Gelombang Sine x5 (freq=’ num2str(f5) ‘)’])
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Dan untuk membuat gelombang dengan komposisi dari frekuensi 3Hz, 9Hz, 25Hz, 60Hz dan 150Hz adalah dengan cara menambahkan masing-masing gelombang menjadi satu gelombang:

x_all=x1+x2+x3+x4+x5;

subplot(3,2,6);
plot(x_all);
title(‘Gelombang Sine x1+x2+x3+x4+x5’)
xlabel(‘time (seconds)’)
ylabel(‘Amplitudo (Volt)’)

Demikian semoga bermanfaat.

 

 

Membuat Dan Menampilkan Gelombang Pada Matlab


Tulisan ini mencoba untuk memberikan contoh bagaimana membuat sebuah gelombang menggunakan script Matlab. Gelombang dapat digunakan untuk melakukan simulasi analisis sinyal pada proses selanjutnya.

Gelombang yang dibuat dapat dipilih antara gelombang periodik atau gelombang aperiodik.

Gelombang Periodik

Gelombang periodik dapat berupa gelombang sinus, cosinus, gigi gergaji ataupun gelombang kotak. Periode gelombang juga dapat diatur sesuai kebutuhan sehingga dapat dibuat gelombang dengan banyak variasi gelombang .

Berikut adalah sebuah contoh script untuk membangkitkan gelombang gigi gergaji dan gelombang kotak.

fs = 10000;
t = 0:1/fs:1.5;
x1 = sawtooth(2*pi*50*t);
x2 = square(2*pi*50*t);
subplot(2,1,1)
plot(t,x1)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude') 
title('Sawtooth Periodic Wave')
subplot(2,1,2)
plot(t,x2)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Square Periodic Wave')

Gelombang Gigi Gergaji dan Kotak

Gelombang Aperiodik

Sedangkan untuk membuat sebuah gelombang Aperiodik bisa menggunakan contoh berikut:

fs = 10000;
t = -1:1/fs:1;
x1 = tripuls(t,20e-3);
x2 = rectpuls(t,20e-3);
subplot(2,1,1)
plot(t,x1)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Triangular Aperiodic Pulse')
subplot(2,1,2)
plot(t,x2)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Rectangular Aperiodic Pulse')

Sinyal Aperiodik

Untuk membuat gelombang pulsa misalnya pulsa Gauss atau  gelombang fungsi sinus adalah sebagai berikut:

tc = gauspuls(‘cutoff’,50e3,0.6,[],-40);
t1 = -tc : 1e-6 : tc;
y1 = gauspuls(t1,50e3,0.6);
t2 = linspace(-5,5);
y2 = sinc(t2);
subplot(2,1,1)
plot(t1*1e3,y1)
xlabel(‘Time (ms)’)
ylabel(‘Amplitude’)
title(‘Gaussian Pulse’)
subplot(2,1,2)
plot(t2,y2)
xlabel(‘Time (sec)’)
ylabel(‘Amplitude’)
title(‘Sinc Function’)

 

Referensi:

Signal Generation and Visualization

Membandingkan Dua Image Dengan Matlab


Pada tulisan ini akan diberikan contoh sederhana bagaimana dua buah image dapat dibedakan dengan menggunakan script Matlab. Pada dasarnya dua buah image dapat diketahui dengan mengurangkan image B dari image A.

image_hasil = image_A – image_B

untuk lebih jelasnya, akan diberikan dua buah image yang identik PCB.
image A

Image_A

image B

image_B

Dari kedua image dapat diketahui dimana letak perbedaannya.

Langkah-langkahnya adalah:

1. load image_A dan komversi ke dalam format gray dengan script

A=imread(‘image A.JPG’);

A=rgb2gray(A);

image_A_figure

2. load image_B dan komversi ke dalam format graydengan script

B=imread(‘image B.JPG’);

B=rgb2gray(B);

image_B_figure

3.  samaka ukuran kedua image

A=imresize(A,[990,600]);
B=imresize(B,[990,600]);

4. kurangkan image_B pada image_B

obj=A-B;

5. tampilkan hasilnya

imshow(obj);

result

 

Demikian, semoga bermanfaat.

— Rohmadi —

Source

Membuat Grafik Pada Matlab


Pada tulisan sebelumnya, ada sebuah pertanyaan dari seorang pengunjung yang menanyakanBagaimana cara membuat sebuah grafik pada Matlab dari data yang telah ada?

Pada dasarnya untuk membuat sebuah grafik di Matlab sangatlah mudah. Hal ini karena, di Matlab sudah disediakan fasilitas untuk menampilkan grafik dari kumpulan data yang ada. Selain grafik yang ditampilkan, dapat juga ditambahkan aksesoris yang lain untuk memberikan informasi yang jelas.

Dengan menggunakan command plot, bar, atau yang lain kita bisa menampilkan sebuah grafik dalam bentuk 2D maupun 3D. Tentunya, masing-masing memiliki syarat-syarat yang harus terpenuhi. Misalnya, untuk menampilkan grafik 2D harus tersedia data matriks 2 dimensi. Jika akan menampilkan grafik 3D maka harus tersedia data matriks 3 dimensi pula.

Sebagai contoh, kita akan menampilkan data pengukuran 2D dari data berikut:

Jam = kW
0  = Setting Daya 553
2  = Setting Daya 534
4  = Setting Daya 538
6  =  Setting Daya 543
8  =  Setting Daya 605
10= Setting Daya 609
12=  Setting Daya 590
14=  Setting Daya 670
16=  Setting Daya 789
18= Setting Daya 889
20= Setting Daya 883
22= Setting Daya 868

Untuk menampilkan data di atas dalam grafik di Matlab, terlebih dahulu data harus dibuat menjadi sebuah matriks. Karena data di atas terdiri dari dua variabel, maka data tersebut dibuat dalam matriks 2 dimensi. Untuk membuat matriks pada Matlab, ikuti langkah berikut:

ketik pada Command Window Matlab:

>>Time=0:2:22

kemudian data berikutnya:

>>Daya=[553 534 538 548 606 609 590 670 789 889 883 868]

>>axes

kemudian akan muncul tampilan berikut

Untuk menampilkan data dalam grafik, perlu diketahui fungsi perintah dalam Matlab.

Kita gunakan perintah plot untuk menampilkan grafik. Perintahplot memiliki beberapa fungsi yang dapat digunakan. Diantaranya adalah untuk menampilkan data X dan Y dalam sebuah axes.

ketik pada command window:

>>plot(Time,Daya)

hasil tampilan adalah

Sekarang tinggal memberikan keterangan pada grafik.

1. Memberi judul grafik

ketik:

>>title(‘Grafik Hubungan Daya Terhadap Daya’)

2. Menambah keterangan sumbu X

ketik:

>>xlabel(‘Time (s)’)

3. Menambah keterangan sumbu Y

ketik:

>>ylabel(‘Daya’)

 

hasil akhirnya adalah

Demikian semoga bermanfaat.

Logging Data Suhu DS1820 dengan Matlab 2008


Matlab adalah singkatan dari Mathematic Laboratory, yaitu sebuah program yang dikembangkan dengan keunggulan penanganan operasi terkait dengan matematika. Saat ini matlab merupakan software paling popular yang digunakan untuk penanganan kalkulasi numerik dan desain sistem. Matlab merupakan bahasa pemrograman yang sangat optimal untuk komputasi matriks. Karena dalam toolbox matlab terdapat tool yang dapat digunakan untuk mendesain suatu system dan mensimulasikannya sehingga seorang engineer bisa mendapatkan data tanpa perlu melakukan eksperimen. Tentunya data yang didapatkan merupakan suatu data yang mendekati eksperimen berbeda dengan data eksperimen sesungguhnya. Dengan langkah ini, seorang engineer dapat menghemat waktu dan biaya dalam mendesain suatu system yang diinginkan.
Matlab sangat membantu kita dalam melakukan debug. Karena setiap langkah kita dapat melihat nilai variable yang ada. Setiap variable yang digunakan dalam program disimpan dalam sebuah workspace dan dilihat secara mudah. Dengan menggunakan matlab kita juga diberi kemudahan untuk mendesain sebuah program aplikasi berbasis grafik interface/GUI. Dengan menggunakan GUI, pengguna program aplikasi yang kita buat dapat lebih mudah mengoperasikannya.
Pada bahasan kali ini kita akan mencoba menggunakan beberapa fitur dari Matlab untuk membuat sebuah aplikasi data logger sederhana. Data logger secara mudah dapat dipahami sebagai sebuah alat/program yang digunakan untuk mencatat data selama proses pengukuran dilakukan. Data dapat dicatat/direkam saja ataupun juga sambil ditampilkan nilai pengukuran yang dilakukan. Pada dasarnya, dalam sebuah pengukuran terdapat tiga langkah yang pokok, yaitu mengukur, merekam/mencatat dan menampilkan hasilnya baik langsung ataupun setelahnya.
Pada kesempatan ini kita akan mencoba mendesain sebuah data logger suhu DS1820 produksi Dallas Semiconductor. Sensor suhu ini outputnya data digital yang tidak membutuhkan kalibrasi lagi. DS1820 menggunakan metode 1 wire dalam komunikasinya. Sehingga cukup menggunakan 3 jalur, yaitu: data (DQ), Vcc dan Ground. DS1820 juga dapat diatur melalui Alarm Signaling, yaitu dimana kita bisa mengatur suatu nilai batas, dimana jika nilai batas tersebut dilampau maka kita bisa mengetahui dengan membaca Alarmnya.
Kita juga akan menggunakan chip mikrokontroller AVR ATMega8535 untuk kontroler yang bertugas membaca suhu dan berkomunikasi dengan computer. Kita bisa menggunakan fasilitas wizard dari CodeVision® untuk membuat program di ATMega8535. Hal ini kita lakukan untuk mempermudah kita, karena kita akan bisa lebih focus pada pembuatan data loggernya. ATMega8535 dan computer akan berkomunikasi melalui serial.
Selanjutnya ikutilah langkah-langkah berikut untuk membuat sebuah data logger dengan Matlab.
Di Matlab, sebuah serial port termasuk kedalam sebuah object. Dimana untuk dapat menggunakannya kita harus menciptakan object tersebut dan melakukan pengaturan pada object tersebut.

Untuk membuat sebuah object serial pada matlab kita ketik:
s1 = serial(‘COM1’); %kita menciptakan object s1 sebagai COM1

kemudian untuk mengetahui propeti dari object tersebut kita ketik:
get(s1,{‘Type’,’Name’,’Port’})
ans =
‘serial’ ‘Serial-COM1’ ‘COM1’
Selanjutnya kita atur nilai masing-masing property yang diperlukan. Pada kali ini kita perlu mengatur nilai baud rate, data bit, stop bit, dan input buffer size.

Ketik:
set(s1,’BaudRate’,115200,’DataBits’,8,’StopBits’,1,’InputBufferSize’,16000)

kemudian untuk dapat menggunakan object serial, kita perlu menghubungkan object ke device serial sendiri. Ketik:
fopen(s1)

untuk membaca data dari serial kita menggunakan perintah:
A=fscanf(s1)
Maka data yang dibaca akan disimpan di variable A.
Untuk mengirimkan data ke serial kita menggunakan perintah:
fprintf(s1,’DataADC’);

setelah kita selesai menggunakan object serial, kita perlu memutus koneksi object dengan device, agar bisa digunakan oleh software lainnya. Ketik:
fclose(s1)

jika kita sudah tidak memerlukan object serial tersebut, kita harus menghapus object serial dari memori untuk mengembalikan memori. Ketik:
delete(s1)

Membaca Suhu dengan DS1820
Untuk membaca suhu dengan DS1820, maka kita dapat menggunakan software CodeVision®. Dengan menggunakan fasilitas wizard yang ada, kita dapat melakukannya dengan mudah. Ikuti langkah berikut untuk membuatnya.
1. Pada tab Chip, tentukan jenis chip dan X’tal yang akan digunakan. Pada kesempatan ini digunakan chip ATmega8535 dengan X’tal 11.05920 MHz

 

 

 

 

 

 

 

 

 

 

2. Pada tab 1 Wire, pilih PORT yang akan digunakan sebagai koneksi komunikasi dengan sensor DS1820 dari combo 1 Wire Port. Kemudian check Enabled pada DS1820/DS18S20.

 

 

 

 

 

 

 

 

 

 

3. Pada tab USART, check pada Transmitter dan pilih Baud Rate: 115200

 

 

 

 

 

 

 

 

 

 

4. Selanjutnya pilih Generate, Save and Exit dari menu File
5. Lengkapilah script sehingga menjadi seperti berikut:

#include
#include

// 1 Wire Bus functions
#asm
.equ __w1_port=0x1B ;PORTA
.equ __w1_bit=0
#endasm
#include

// DS1820 Temperature Sensor functions
#include

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
#include

// Standard Input/Output functions
#include

// DS1820 Temperature Sensor functions
#include
/* maximum number of DS1820/DS18S20 connected to the bus */
#define MAX_DEVICES 8
/* DS1820/DS18S20 devices ROM code storage area, 9 bytes are used for each device
see the w1_search function description),but only the first 8 bytes contain the ROM code
and CRC */
unsigned char rom_codes[MAX_DEVICES][9];
int y,x, Status;
/* allocate space for ROM codes of the devices hich generate an alarm */
unsigned char alarm_rom_codes[MAX_DEVICES][9];

// Declare your global variables here
unsigned char i,devices;
int temp;
char lcd_buffer[33];

void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 115200
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x05;

// 1 Wire Bus initialization
w1_init();

// LCD module initialization
lcd_init(16);

// Global enable interrupts
#asm(“sei”)
/* detect how many DS1820/DS18S20 devices

are connected to the bus and

store their ROM codes in the rom_codes array */

devices=w1_search(0xf0,rom_codes);

/* display the number */

printf(“%-u DEVICE(S) DETECTED\n\r”,devices);

/* if no devices were detected then halt */

if (devices==0) while (1); /* loop forever */

while (1)
{
// Place your code here
temp=ds1820_temperature_10(&rom_codes[0][0]);
printf(“%-i.%-u\n\r”,temp/10,abs(temp%10));
lcd_clear();
sprintf (lcd_buffer,”Suhu:%-i.%-u%\xf8C”,temp/10,abs(temp%10));
lcd_puts(lcd_buffer);
};
}
6. Maka hasilnya akan dapat dilihat pada bagian terminal CodeVision® yang menampilkan suhu
Membuat Data Logger di Matlab
Untuk dapat mengambil data dari mikrokontroller, maka kita perlu membuat sebuah object serial di matlab. Kemudian membaca data yang dikirimkan dari mikrokontroller dan menampilkannya pada sebuah grafik dan menyimpannya. Berikut adalah script matlab untuk membuat sebuah data logger sederhana dari data suhu DS1820, beserta keterangan.
%–menghapus semua variable yang ada di work space
clear all;


%–menutup semua figure yang terbuka jika ada
close all;


%–membuat sebuah figure yang akan digunakan sebagai tempat membuat grafik logging
figure(1);
clc;


%–membuat sebuah object serial pada matlab dan mengatur setting sesuai dengan setting
%–di mikrokontroller
fid = serial(‘COM4′,’BaudRate’,115200,’DataBits’,8,’StopBits’,1,’InputBufferSize’,16000);


%–membuka koneksi object dengan port serial
fopen(fid)


%–meminta user untuk memasukkan sejumlah nilai pengambilan data
SET = input(‘Masukkan jumlah data logging,Start Logging……………(PRESS——->Enter…!)’);
clear A;


%–melakukan lopping sejumlah data yang dimasukkan
for i=1:SET
%–membaca data dari serial
data1=str2num(fscanf(fid));
if (data1>0)
title([‘Data#= ‘ num2str(data1)]);
A(i)=data1;
%–menampilkan data dalam grafik
plot(A,’red’);
axis([0 SET 0 100])
hold on;
pause(.5)
end
end
%–menutup koneksi dengan serial
fclose(fid)
%–menghapus object serial
delete(fid);
%–menyimpan data hasil pengukuran
save(‘data_pengukuran.mat’,’A’);

hasilnya adalah sebagai berikut:

Demikian sedikit contoh data logging menggunakan Matlab, selanjutnya data yang disimpan dapat diolah lebih lanjut. Semoga bermanfaat.

Rohmadi (11 Maret 2011)

%d blogger menyukai ini: